
    I]0i	                         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dS )    )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dS )GenericPublicKey	algorithmkeyreturnNc                     d S N selfr   s     F/var/www/html/venv/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#   r2   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intr/   r1   r4   r6   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	dz  dd fd                        Zedde	dz  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   rC   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#   rH   rI   s      r   r4   zGenericPrivateKey.from_pemP   r   r   c                     dS )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@   <   sL        %&&&&C D    ^  "	   	
 
   ^ ) ) ) ^) :>9 99+04<9	9 9 9 ^ [9
 7 7ut| 7u 7 7 7 ^7 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      s    # # # # # # # #                 % % % % % % . . . . . . ) ) ) ) ) ) ' ' ' ' ' '- - - - -s - - -`7 7 7 7 7 7 7 7 7 7r   