
    ,h	                         d dl mZmZ d dlmZmZmZ d dlZd dl	Zd dl
mZ d dlmZ d dlmZ d dlmZ  G d d	e      Z G d
 de      Zy)    )ABCabstractmethod)AnyOptionalTypeN)	Algorithm)AlgorithmKeyMismatch)DNSKEY)Flagc                      e Zd ZU eed<   ededdfd       Zedededdfd       Z	edefd	       Z
ededdfd
       Zej                  dfdededefdZeededd fd              Zeededd fd              Zedefd       Zy)GenericPublicKey	algorithmkeyreturnNc                      y N selfr   s     U/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/dns/dnssecalgs/base.py__init__zGenericPublicKey.__init__           	signaturedatac                      y)zVerify signed DNSSEC dataNr   )r   r   r   s      r   verifyzGenericPublicKey.verify       r   c                      y)zEncode key as bytes for DNSKEYNr   r   s    r   encode_key_bytesz!GenericPublicKey.encode_key_bytes   r   r   c                 B    |j                   | j                   k7  rt        y r   )r   r	   clsr   s     r   !_ensure_algorithm_key_combinationz2GenericPublicKey._ensure_algorithm_key_combination   s    ==CMM)&& *r      flagsprotocolc           	          t        t        j                  j                  t        j                  j                   ||| j
                  | j                               S )zReturn public key as DNSKEY)rdclassrdtyper'   r(   r   r   )r
   dns
rdataclassIN	rdatatyper   r!   )r   r'   r(   s      r   	to_dnskeyzGenericPublicKey.to_dnskey    sB    NN%%==''nn%%'
 	
r   c                      y)zCreate public key from DNSKEYNr   r#   s     r   from_dnskeyzGenericPublicKey.from_dnskey+   r   r   
public_pemc                      y)zXCreate public key from PEM-encoded SubjectPublicKeyInfo as specified
        in RFC 5280Nr   )r$   r3   s     r   from_pemzGenericPublicKey.from_pem0   r   r   c                      y)zVReturn public-key as PEM-encoded SubjectPublicKeyInfo as specified
        in RFC 5280Nr   r    s    r   to_pemzGenericPublicKey.to_pem6   r   r   )__name__
__module____qualname__r   __annotations__r   r   r   bytesr   r!   classmethodr
   r%   r   ZONEintr0   r2   r5   r7   r   r   r   r   r      s$   C D   ( (U (t ( ( -% - - 'F 't ' ' &*YY 	
s 	
# 	
f 	
 ,f ,); ,  , % ,>      r   r   c            
           e Zd ZU ee   ed<   ededdfd       Ze	 	 dde	de
de
de	fd	       Zedd
       Zee	 dde	dee	   dd fd              Zeddee	   de	fd       Zy)GenericPrivateKey
public_clsr   r   Nc                      y r   r   r   s     r   r   zGenericPrivateKey.__init__?   r   r   r   r   deterministicc                      y)zSign DNSSEC dataNr   )r   r   r   rD   s       r   signzGenericPrivateKey.signC   r   r   c                      y)zReturn public key instanceNr   r    s    r   
public_keyzGenericPrivateKey.public_keyL   r   r   private_pempasswordc                      y)z*Create private key from PEM-encoded PKCS#8Nr   )r$   rI   rJ   s      r   r5   zGenericPrivateKey.from_pemP   r   r   c                      y)z(Return private key as PEM-encoded PKCS#8Nr   )r   rJ   s     r   r7   zGenericPrivateKey.to_pemW   r   r   )FT)r   r   r   )r8   r9   r:   r   r   r;   r   r   r   r<   boolrF   rH   r=   r   r5   r7   r   r   r   rA   rA   <   s    %&&C D    "	  	
 
  ) ) =A99+3E?9	9  9
 7x 7% 7 7r   rA   )abcr   r   typingr   r   r   dns.rdataclassr,   dns.rdatatypedns.dnssectypesr   dns.exceptionr	   dns.rdtypes.ANY.DNSKEYr
   dns.rdtypes.dnskeybaser   r   rA   r   r   r   <module>rV      s9    # & &   % . ) '-s -`7 7r   