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   W/var/www/html/olx_land/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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)r1   r   )r   load_pem_private_key)r   r0   r1   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   r1   r3   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   cryptography.hazmat.primitivesr   dns.dnssecalgs.baser   r   dns.exceptionr   r	   r-   r   r   r   r   <module>   s    