
    g	                         S SK JrJr  S SKJrJrJr  S SKrS SK	rS SK
Jr  S SKJr  S SKJr  S SKJr   " S S	\5      r " S
 S\5      rg)    )ABCabstractmethod)AnyOptionalTypeN)	Algorithm)AlgorithmKeyMismatch)DNSKEY)Flagc                   &   \ rS rSr% \\S'   \S\SS4S j5       r\S\	S\	SS4S	 j5       r
\S\	4S
 j5       r\S\SS4S j5       r\R                   S4S\S\S\4S jjr\\S\SS 4S j5       5       r\\S\	SS 4S j5       5       r\S\	4S j5       rSrg)GenericPublicKey   	algorithmkeyreturnNc                     g N selfr   s     L/home/matz/Project1/venv/lib/python3.13/site-packages/dns/dnssecalgs/base.py__init__GenericPublicKey.__init__           	signaturedatac                     g)zVerify signed DNSSEC dataNr   )r   r   r   s      r   verifyGenericPublicKey.verify       r   c                     g)zEncode key as bytes for DNSKEYNr   r   s    r   encode_key_bytes!GenericPublicKey.encode_key_bytes   r!   r   c                 D    UR                   U R                   :w  a  [        eg r   )r   r	   clsr   s     r   !_ensure_algorithm_key_combination2GenericPublicKey._ensure_algorithm_key_combination   s    ==CMM)&& *r      flagsprotocolc           	          [        [        R                  R                  [        R                  R                   UUU R
                  U R                  5       S9$ )zReturn public key as DNSKEY)rdclassrdtyper,   r-   r   r   )r
   dns
rdataclassIN	rdatatyper   r$   )r   r,   r-   s      r   	to_dnskeyGenericPublicKey.to_dnskey    sB    NN%%==''nn%%'
 	
r   c                     g)zCreate public key from DNSKEYNr   r'   s     r   from_dnskeyGenericPublicKey.from_dnskey+   r!   r   
public_pemc                     g)zPCreate public key from PEM-encoded SubjectPublicKeyInfo as specified
in RFC 5280Nr   )r(   r:   s     r   from_pemGenericPublicKey.from_pem0   r!   r   c                     g)zNReturn public-key as PEM-encoded SubjectPublicKeyInfo as specified
in RFC 5280Nr   r#   s    r   to_pemGenericPublicKey.to_pem6   r!   r   r   )__name__
__module____qualname____firstlineno__r   __annotations__r   r   r   bytesr   r$   classmethodr
   r)   r   ZONEintr5   r8   r<   r?   __static_attributes__r   r   r   r   r      s$   C D   ( (U (t ( ( -% - - 'F 't ' ' &*YY 	
s 	
# 	
f 	
 ,f ,); ,  , % ,>      r   r   c            
           \ rS rSr% \\   \S'   \S\SS4S j5       r	\  SS\
S\S	\S\
4S
 jj5       r\SS j5       r\\ SS\
S\\
   SS 4S jj5       5       r\SS\\
   S\
4S jj5       rSrg)GenericPrivateKey<   
public_clsr   r   Nc                     g r   r   r   s     r   r   GenericPrivateKey.__init__?   r   r   r   r   deterministicc                     g)zSign DNSSEC dataNr   )r   r   r   rQ   s       r   signGenericPrivateKey.signC   r!   r   c                     g)zReturn public key instanceNr   r#   s    r   
public_keyGenericPrivateKey.public_keyL   r!   r   private_pempasswordc                     g)z*Create private key from PEM-encoded PKCS#8Nr   )r(   rX   rY   s      r   r<   GenericPrivateKey.from_pemP   r!   r   c                     g)z(Return private key as PEM-encoded PKCS#8Nr   )r   rY   s     r   r?   GenericPrivateKey.to_pemW   r!   r   r   )FT)r   r   r   )rA   rB   rC   rD   r   r   rE   r   r   r   rF   boolrS   rV   rG   r   r<   r?   rJ   r   r   r   rL   rL   <   s    %&&C D    "	  	
 
  ) ) =A99+3E?9	9  9
 7x 7% 7 7r   rL   )abcr   r   typingr   r   r   dns.rdataclassr1   dns.rdatatypedns.dnssectypesr   dns.exceptionr	   dns.rdtypes.ANY.DNSKEYr
   dns.rdtypes.dnskeybaser   r   rL   r   r   r   <module>rg      s9    # & &   % . ) '-s -`7 7r   