
    h|	                     h    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e      Z
 G d de      Zy	)
    )AnyType)serialization)GenericPrivateKeyGenericPublicKey)AlgorithmKeyMismatchc                   `    e Zd ZU dZeed<   dZeed<   deddfdZede	ddfd       Z
de	fd	Zy)
CryptographyPublicKeyNkeykey_clsreturnc                 x    | j                   t        d      t        || j                         st        || _        y NzUndefined private key classr   	TypeError
isinstancer   r   selfr   s     Y/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/dns/dnssecalgs/cryptography.py__init__zCryptographyPublicKey.__init__   8    <<9::
 '&    
public_pemr   c                 >    t        j                  |      } | |      S Nr   )r   load_pem_public_key)clsr   r   s      r   from_pemzCryptographyPublicKey.from_pem   s    //
;s|r   c                     | j                   j                  t        j                  j                  t        j
                  j                        S )N)encodingformat)r   public_bytesr   EncodingPEMPublicFormatSubjectPublicKeyInfor   s    r   to_pemzCryptographyPublicKey.to_pem   s<    xx$$"++// --BB % 
 	
r   )__name__
__module____qualname__r   r   __annotations__r   r   classmethodbytesr   r)    r   r   r
   r
   	   sW    COGSC D  % ,>  
 
r   r
   c                       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Z	ddZ
e	 dded	edz  dd
fd       Zdd	edz  defdZy)CryptographyPrivateKeyNr   r   
public_clsr   c                 x    | j                   t        d      t        || j                         st        || _        y r   r   r   s     r   r   zCryptographyPrivateKey.__init__'   r   r   c                 V    | j                  | j                  j                               S r   )r3   r   
public_keyr(   s    r   r6   z!CryptographyPrivateKey.public_key0   s     488#6#6#899r   private_pempasswordr   c                 B    t        j                  ||      } | |      S )N)r8   r   )r   load_pem_private_key)r   r7   r8   r   s       r   r   zCryptographyPrivateKey.from_pem3   s      00xPs|r   c                     |rt        j                  |      }nt        j                         }| j                  j	                  t         j
                  j                  t         j                  j                  |      S )N)r!   r"   encryption_algorithm)	r   BestAvailableEncryptionNoEncryptionr   private_bytesr$   r%   PrivateFormatPKCS8)r   r8   r<   s      r   r)   zCryptographyPrivateKey.to_pem:   sb    #0#H#H#R #0#=#=#? xx%%"++// ..44!5 & 
 	
r   )r   r
   )N)r*   r+   r,   r   r   r-   r   r   r
   r   r6   r.   r/   r   r)   r0   r   r   r2   r2   "   s    COGS*++C D : :>+04<	 

ut| 

u 

r   r2   N)typingr   r   cryptography.hazmat.primitivesr   dns.dnssecalgs.baser   r   dns.exceptionr   r
   r2   r0   r   r   <module>rF      s+     8 C .
, 
2"
. "
r   