o
    Þý°jÐ  ã                   @   s´   d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZ G dd„ de	ƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    )ÚType)Úserialization)Úed448Úed25519)ÚCryptographyPrivateKeyÚCryptographyPublicKey)Ú	Algorithm)ÚDNSKEYc                   @   sF   e Zd Zdededdfdd„Zdefdd„Zed	edd fd
d„ƒZdS )ÚPublicEDDSAÚ	signatureÚdataÚreturnNc                 C   s   | j  ||¡ d S )N)ÚkeyÚverify)Úselfr   r   © r   ú‡/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/dns/dnssecalgs/eddsa.pyr      s   zPublicEDDSA.verifyc                 C   s   | j jtjjtjjd�S )z,Encode a public key per RFC 8080, section 3.)ÚencodingÚformat)r   Úpublic_bytesr   ÚEncodingÚRawÚPublicFormat)r   r   r   r   Úencode_key_bytes   s   ÿzPublicEDDSA.encode_key_bytesr   c                 C   s   |   |¡ | | j |j¡d�S ©N)r   )Ú!_ensure_algorithm_key_combinationÚkey_clsÚfrom_public_bytesr   )Úclsr   r   r   r   Úfrom_dnskey   s   
ÿzPublicEDDSA.from_dnskey)	Ú__name__Ú
__module__Ú__qualname__Úbytesr   r   Úclassmethodr	   r   r   r   r   r   r
      s
    r
   c                	   @   sH   e Zd ZU ee ed< 		ddedededefdd	„Ze	dd
d„ƒZ
dS )ÚPrivateEDDSAÚ
public_clsFTr   r   Údeterministicr   c                 C   s$   | j  |¡}|r|  ¡  ||¡ |S )z1Sign using a private key per RFC 8080, section 4.)r   ÚsignÚ
public_keyr   )r   r   r   r'   r   r   r   r   r(       s   zPrivateEDDSA.signc                 C   s   | | j  ¡ d�S r   )r   Úgenerate)r   r   r   r   r*   ,   s   zPrivateEDDSA.generateN)FT)r   r%   )r    r!   r"   r   r
   Ú__annotations__r#   Úboolr(   r$   r*   r   r   r   r   r%      s   
 üþýü
ûr%   c                   @   ó$   e Zd ZU ejed< ejZejZ	dS )ÚPublicED25519r   N)
r    r!   r"   r   ÚEd25519PublicKeyr+   r   r   ÚED25519Ú	algorithmr   r   r   r   r.   1   ó   
 

r.   c                   @   ó"   e Zd ZU ejed< ejZeZdS )ÚPrivateED25519r   N)	r    r!   r"   r   ÚEd25519PrivateKeyr+   r   r.   r&   r   r   r   r   r4   7   ó   
 
r4   c                   @   r-   )ÚPublicED448r   N)
r    r!   r"   r   ÚEd448PublicKeyr+   r   r   ÚED448r1   r   r   r   r   r7   =   r2   r7   c                   @   r3   )ÚPrivateED448r   N)	r    r!   r"   r   ÚEd448PrivateKeyr+   r   r7   r&   r   r   r   r   r:   C   r6   r:   N)Útypingr   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   r   Údns.dnssecalgs.cryptographyr   r   Údns.dnssectypesr   Údns.rdtypes.ANY.DNSKEYr	   r
   r%   r.   r4   r7   r:   r   r   r   r   Ú<module>   s    