o
    h|	                     @   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   ]/var/www/html/pro-man-master/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   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PEMPublicFormat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)r0   r   )r   load_pem_private_key)r   r/   r0   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   BestAvailableEncryptionNoEncryptionr	   private_bytesr    r!   PrivateFormatPKCS8)r   r0   r2   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   cryptography.hazmat.primitivesr   dns.dnssecalgs.baser   r   dns.exceptionr   r   r,   r   r   r   r   <module>   s    