
    h	                         d dl mZmZ d dl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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     Q/var/www/html/eduruby.in/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#   r2   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intr/   r1   r4   r6   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	dz  dd fd              Zedde	dz  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   rC   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#   rH   rI   s      r   r4   zGenericPrivateKey.from_pemP   r   r   c                      y)z(Return private key as PEM-encoded PKCS#8Nr   )r   rI   s     r   r6   zGenericPrivateKey.to_pemW   r   r   )FT)r   r   r   )r7   r8   r9   r   r   r:   r   r   r   r;   boolrE   rG   r<   r4   r6   r   r   r   r@   r@   <   s    %&&C D    "	  	
 
  ) ) :>99+04<9	9  9
 7ut| 7u 7 7r   r@   )abcr   r   typingr   r   dns.rdataclassr+   dns.rdatatypedns.dnssectypesr   dns.exceptionr   dns.rdtypes.ANY.DNSKEYr	   dns.rdtypes.dnskeybaser
   r   r@   r   r   r   <module>rU      s6    #    % . ) '-s -`7 7r   