o
    i|	                     @   s\   d dl 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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   R/home/app/Keep/.python/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dB ddfddZddedB 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)   "   s    
 
	r)   N)typingr   r   Zcryptography.hazmat.primitivesr   Zdns.dnssecalgs.baser   r   Zdns.exceptionr   r   r)   r   r   r   r   <module>   s    