
    Eqg	                         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dS )    )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dS )GenericPublicKey	algorithmkeyreturnNc                     d S N selfr   s     E/var/www/html/env/lib/python3.11/site-packages/dns/dnssecalgs/base.py__init__zGenericPublicKey.__init__           	signaturedatac                     dS )zVerify signed DNSSEC dataNr   )r   r   r   s      r   verifyzGenericPublicKey.verify         r   c                     dS )zEncode key as bytes for DNSKEYNr   r   s    r   encode_key_bytesz!GenericPublicKey.encode_key_bytes   r   r   c                 4    |j         | j         k    rt          d S r   )r   r	   clsr   s     r   !_ensure_algorithm_key_combinationz2GenericPublicKey._ensure_algorithm_key_combination   s    =CM))&& *)r      flagsprotocolc           	          t          t          j        j        t          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    sC    N%='n%%''
 
 
 	
r   c                     dS )zCreate public key from DNSKEYNr   r#   s     r   from_dnskeyzGenericPublicKey.from_dnskey+   r   r   
public_pemc                     dS )zXCreate public key from PEM-encoded SubjectPublicKeyInfo as specified
        in RFC 5280Nr   )r$   r3   s     r   from_pemzGenericPublicKey.from_pem0   r   r   c                     dS )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 ' ' ' [' &*Y 	
 	
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dS )GenericPrivateKey
public_clsr   r   Nc                     d S r   r   r   s     r   r   zGenericPrivateKey.__init__?   r   r   FTr   r   deterministicc                     dS )zSign DNSSEC dataNr   )r   r   r   rD   s       r   signzGenericPrivateKey.signC   r   r   r   c                     dS )zReturn public key instanceNr   r    s    r   
public_keyzGenericPrivateKey.public_keyL   r   r   private_pempasswordc                     dS )z*Create private key from PEM-encoded PKCS#8Nr   )r$   rI   rJ   s      r   r5   zGenericPrivateKey.from_pemP   r   r   c                     dS )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   <   sL        %&&&&C D    ^  "	   	
 
   ^ ) ) ) ^) =A9 99+3E?9	9 9 9 ^ [9
 7 7x 7% 7 7 7 ^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      s    # # # # # # # # & & & & & & & & & &         % % % % % % . . . . . . ) ) ) ) ) ) ' ' ' ' ' '- - - - -s - - -`7 7 7 7 7 7 7 7 7 7r   