
    ,h                         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      V/var/www/html/Resume-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            	       N    e Zd ZU ee   ed<   	 	 d	dedededefdZe	d
d       Z
y)PrivateEDDSA
public_clsr   r   deterministicr   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.   r   s        r   r0   zPrivateEDDSA.sign    s6     HHMM$'	OO$$Y5r   c                 D     | | j                   j                               S r   )r!   generate)r#   s    r   r3   zPrivateEDDSA.generate,   s    s{{++-..r   N)FT)r   r,   )r%   r&   r'   r   r   __annotations__r(   boolr0   r)   r3   r*   r   r   r,   r,      sT    [!!
 "	

 
 	

 

 / /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   Ed25519PublicKeyr4   r!   r	   ED25519	algorithmr*   r   r   r7   r7   1   s$    		!	!!&&G!!Ir   r7   c                   H    e Zd ZU ej                  ed<   ej                  ZeZy)PrivateED25519r   N)	r%   r&   r'   r   Ed25519PrivateKeyr4   r!   r7   r-   r*   r   r   r<   r<   7   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   Ed448PublicKeyr4   r!   r	   ED448r:   r*   r   r   r?   r?   =   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   Ed448PrivateKeyr4   r!   r?   r-   r*   r   r   rC   rC   C   s    			##GJr   rC   N)typingr   cryptography.hazmat.primitivesr   )cryptography.hazmat.primitives.asymmetricr   r   dns.dnssecalgs.cryptographyr   r   dns.dnssectypesr	   dns.rdtypes.ANY.DNSKEYr
   r   r,   r7   r<   r?   rC   r*   r   r   <module>rK      sa     8 D U % )
' 
$/) /("K "\  +  < r   