o
    Þý°jÁ	  ã                   @   s„   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	„ d	eƒZG d
d„ deƒZdS )é    )ÚABCÚabstractmethod)ÚAnyÚTypeN)Ú	Algorithm)ÚAlgorithmKeyMismatch)ÚDNSKEY)ÚFlagc                   @   sÒ   e Zd ZU eed< ededdfdd„ƒZedededdfd	d
„ƒZ	edefdd„ƒZ
ededdfdd„ƒZejdfdededefdd„Zeededd fdd„ƒƒZeededd fdd„ƒƒZedefdd„ƒZdS )ÚGenericPublicKeyÚ	algorithmÚkeyÚreturnNc                 C   ó   d S ©N© ©Úselfr   r   r   ú†/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/dns/dnssecalgs/base.pyÚ__init__   ó   zGenericPublicKey.__init__Ú	signatureÚdatac                 C   ó   dS )zVerify signed DNSSEC dataNr   )r   r   r   r   r   r   Úverify   ó    zGenericPublicKey.verifyc                 C   r   )zEncode key as bytes for DNSKEYNr   ©r   r   r   r   Úencode_key_bytes   r   z!GenericPublicKey.encode_key_bytesc                 C   s   |j | j krt‚d S r   )r   r   ©Úclsr   r   r   r   Ú!_ensure_algorithm_key_combination   s   ÿz2GenericPublicKey._ensure_algorithm_key_combinationé   ÚflagsÚprotocolc                 C   s"   t tjjtjj ||| j|  ¡ d�S )zReturn public key as DNSKEY)ÚrdclassÚrdtyper!   r"   r   r   )r   ÚdnsÚ
rdataclassÚINÚ	rdatatyper   r   )r   r!   r"   r   r   r   Ú	to_dnskey    s   úzGenericPublicKey.to_dnskeyc                 C   r   )zCreate public key from DNSKEYNr   r   r   r   r   Úfrom_dnskey+   r   zGenericPublicKey.from_dnskeyÚ
public_pemc                 C   r   )zXCreate public key from PEM-encoded SubjectPublicKeyInfo as specified
        in RFC 5280Nr   )r   r+   r   r   r   Úfrom_pem0   r   zGenericPublicKey.from_pemc                 C   r   )zVReturn public-key as PEM-encoded SubjectPublicKeyInfo as specified
        in RFC 5280Nr   r   r   r   r   Úto_pem6   r   zGenericPublicKey.to_pem)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r   Úbytesr   r   Úclassmethodr   r   r	   ÚZONEÚintr)   r*   r,   r-   r   r   r   r   r
      s&   
 r
   c                
   @   s¤   e Zd ZU ee ed< ededdfdd„ƒZe		dd	e	d
e
de
de	fdd„ƒZeddd„ƒZee	dde	de	dB dd fdd„ƒƒZedde	dB de	fdd„ƒZdS )ÚGenericPrivateKeyÚ
public_clsr   r   Nc                 C   r   r   r   r   r   r   r   r   ?   r   zGenericPrivateKey.__init__FTr   r   Údeterministicc                 C   r   )zSign DNSSEC dataNr   )r   r   r   r8   r   r   r   ÚsignC   r   zGenericPrivateKey.signr
   c                 C   r   )zReturn public key instanceNr   r   r   r   r   Ú
public_keyL   r   zGenericPrivateKey.public_keyÚprivate_pemÚpasswordc                 C   r   )z*Create private key from PEM-encoded PKCS#8Nr   )r   r;   r<   r   r   r   r,   P   r   zGenericPrivateKey.from_pemc                 C   r   )z(Return private key as PEM-encoded PKCS#8Nr   )r   r<   r   r   r   r-   W   r   zGenericPrivateKey.to_pem)FT)r   r
   r   )r.   r/   r0   r   r
   r1   r   r   r   r2   Úboolr9   r:   r3   r,   r-   r   r   r   r   r6   <   s<   
 üþýüûÿÿÿþr6   )Úabcr   r   Útypingr   r   Údns.rdataclassr%   Údns.rdatatypeÚdns.dnssectypesr   Údns.exceptionr   Údns.rdtypes.ANY.DNSKEYr   Údns.rdtypes.dnskeybaser	   r
   r6   r   r   r   r   Ú<module>   s    0