
    *DCfz                         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e	      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )Type)serialization)ed448ed25519)CryptographyPrivateKeyCryptographyPublicKey)	Algorithm)DNSKEYc                   F    e Zd ZdededdfdZdefdZededd fd       Zy)	PublicEDDSA	signaturedatareturnNc                 <    | j                   j                  ||       y )N)keyverify)selfr   r   s      T/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/dns/dnssecalgs/eddsa.pyr   zPublicEDDSA.verify   s    	4(    c                     | j                   j                  t        j                  j                  t        j
                  j                        S )z,Encode a public key per RFC 8080, section 3.)encodingformat)r   public_bytesr   EncodingRawPublicFormat)r   s    r   encode_key_byteszPublicEDDSA.encode_key_bytes   s;    xx$$"++//8R8R8V8V % 
 	
r   r   c                 |    | j                  |        | | j                  j                  |j                              S N)r   )!_ensure_algorithm_key_combinationkey_clsfrom_public_bytesr   )clsr   s     r   from_dnskeyzPublicEDDSA.from_dnskey   s3    --c2--cgg6
 	
r   )	__name__
__module____qualname__bytesr   r   classmethodr
   r$    r   r   r   r      sJ    ) )U )t )
% 
 
f 
 
 
r   r   c                   F    e Zd ZU ee   ed<   ddededefdZe	d	d       Z
y)
PrivateEDDSA
public_clsr   r   r   c                     | j                   j                  |      }|r | j                         j                  ||       |S )z1Sign using a private key per RFC 8080, section 4.)r   sign
public_keyr   )r   r   r   r   s       r   r/   zPrivateEDDSA.sign    s4    HHMM$'	OO$$Y5r   c                 D     | | j                   j                               S r   )r!   generate)r#   s    r   r2   zPrivateEDDSA.generate'   s    s{{++-..r   N)F)r   r,   )r%   r&   r'   r   r   __annotations__r(   boolr/   r)   r2   r*   r   r   r,   r,      s;    [!!    / /r   r,   c                   \    e Zd ZU ej                  ed<   ej                  Zej                  Z	y)PublicED25519r   N)
r%   r&   r'   r   Ed25519PublicKeyr3   r!   r	   ED25519	algorithmr*   r   r   r6   r6   ,   s$    		!	!!&&G!!Ir   r6   c                   H    e Zd ZU ej                  ed<   ej                  ZeZy)PrivateED25519r   N)	r%   r&   r'   r   Ed25519PrivateKeyr3   r!   r6   r-   r*   r   r   r;   r;   2   s    		"	""''GJr   r;   c                   \    e Zd ZU ej                  ed<   ej                  Zej                  Z	y)PublicED448r   N)
r%   r&   r'   r   Ed448PublicKeyr3   r!   r	   ED448r9   r*   r   r   r>   r>   8   s"    			""GIr   r>   c                   H    e Zd ZU ej                  ed<   ej                  ZeZy)PrivateED448r   N)	r%   r&   r'   r   Ed448PrivateKeyr3   r!   r>   r-   r*   r   r   rB   rB   >   s    			##GJr   rB   N)typingr   cryptography.hazmat.primitivesr   )cryptography.hazmat.primitives.asymmetricr   r   dns.dnssecalgs.cryptographyr   r   dns.dnssectypesr	   dns.rdtypes.ANY.DNSKEYr
   r   r,   r6   r;   r>   rB   r*   r   r   <module>rJ      sa     8 D U % )
' 
$/) /"K "\  +  < r   