o
    hy	                     @   s`   d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
 G dd deZG dd deZd	S )
    )AnyOptionalType)serialization)GenericPrivateKeyGenericPublicKey)AlgorithmKeyMismatchc                   @   s\   e Zd ZU dZeed< dZeed< deddfddZede	ddfd	d
Z
de	fddZdS )CryptographyPublicKeyNkeykey_clsreturnc                 C   ,   | j d u r	tdt|| j st|| _d S NzUndefined private key classr   	TypeError
isinstancer   r
   selfr
    r   N/var/www/html/venv/lib/python3.10/site-packages/dns/dnssecalgs/cryptography.py__init__      

zCryptographyPublicKey.__init__
public_pemr   c                 C   s   t |}| |dS Nr
   )r   Zload_pem_public_key)clsr   r
   r   r   r   from_pem   s   

zCryptographyPublicKey.from_pemc                 C   s   | j jtjjtjjdS )N)encodingformat)r
   public_bytesr   EncodingPEMZPublicFormatZSubjectPublicKeyInfor   r   r   r   to_pem   s   zCryptographyPublicKey.to_pem)__name__
__module____qualname__r
   r   __annotations__r   r   classmethodbytesr   r#   r   r   r   r   r	   	   s   
 	r	   c                   @   s   e Zd ZU dZeed< dZeed< ee ed< deddfddZ	dd	d
Z
e	ddedee ddfddZddee defddZdS )CryptographyPrivateKeyNr
   r   
public_clsr   c                 C   r   r   r   r   r   r   r   r   '   r   zCryptographyPrivateKey.__init__r	   c                 C   s   | j | j dS r   )r+   r
   
public_keyr"   r   r   r   r,   0   s   z!CryptographyPrivateKey.public_keyprivate_pempasswordr   c                 C   s   t j||d}| |dS )N)r.   r   )r   Zload_pem_private_key)r   r-   r.   r
   r   r   r   r   3   s   
zCryptographyPrivateKey.from_pemc                 C   s2   |rt |}nt  }| jjt jjt jj|dS )N)r   r   encryption_algorithm)	r   ZBestAvailableEncryptionZNoEncryptionr
   Zprivate_bytesr    r!   ZPrivateFormatZPKCS8)r   r.   r/   r   r   r   r#   :   s   zCryptographyPrivateKey.to_pem)r   r	   )N)r$   r%   r&   r
   r   r'   r   r   r	   r   r,   r(   r)   r   r   r#   r   r   r   r   r*   "   s    
 
	r*   N)typingr   r   r   Zcryptography.hazmat.primitivesr   Zdns.dnssecalgs.baser   r   Zdns.exceptionr   r	   r*   r   r   r   r   <module>   s    