U
    <{fy	                     @   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                   @   sX   e Zd ZU dZeed< dZeed< eddddZee	ddd	d
Z
e	dddZdS )CryptographyPublicKeyNkeykey_clsr
   returnc                 C   s,   | j d krtdt|| j s"t|| _d S NzUndefined private key classr   	TypeError
isinstancer   r
   selfr
    r   Z/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/dns/dnssecalgs/cryptography.py__init__   s    
 zCryptographyPublicKey.__init__r   )
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_pemr   c                 C   s   | j jtjjtjjdS )N)encodingformat)r
   Z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< eddddZ	dd	d
dZ
edeee ddddZdee edddZdS )CryptographyPrivateKeyNr
   r   
public_clsr   c                 C   s,   | j d krtdt|| j s"t|| _d S r   r   r   r   r   r   r   '   s    
 zCryptographyPrivateKey.__init__r	   r   c                 C   s   | j | j dS r   )r*   r
   
public_keyr!   r   r   r   r+   0   s    z!CryptographyPrivateKey.public_keyr   )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_pem)r-   r   c                 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)N)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
   