
    g                         S SK Jr  S SKJr  S SKJrJr  S SKJrJ	r	  S SK
Jr  S SKJr   " S S\	5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)    )Type)serialization)ed448ed25519)CryptographyPrivateKeyCryptographyPublicKey)	Algorithm)DNSKEYc                   T    \ rS rSrS\S\SS4S jrS\4S jr\S\SS 4S	 j5       r	S
r
g)PublicEDDSA   	signaturedatareturnNc                 :    U R                   R                  X5        g )N)keyverify)selfr   r   s      M/home/matz/Project1/venv/lib/python3.13/site-packages/dns/dnssecalgs/eddsa.pyr   PublicEDDSA.verify   s    	(    c                     U R                   R                  [        R                  R                  [        R
                  R                  S9$ )z,Encode a public key per RFC 8080, section 3.)encodingformat)r   public_bytesr   EncodingRawPublicFormat)r   s    r   encode_key_bytesPublicEDDSA.encode_key_bytes   s;    xx$$"++//8R8R8V8V % 
 	
r   r   c                 v    U R                  U5        U " U R                  R                  UR                  5      S9$ N)r   )!_ensure_algorithm_key_combinationkey_clsfrom_public_bytesr   )clsr   s     r   from_dnskeyPublicEDDSA.from_dnskey   s3    --c2--cgg6
 	
r    )__name__
__module____qualname____firstlineno__bytesr   r   classmethodr
   r'   __static_attributes__r)   r   r   r   r      sJ    ) )U )t )
% 
 
f 
 
 
r   r   c            	       \    \ rS rSr% \\   \S'     SS\S\S\S\4S jjr	\
SS j5       rS	rg
)PrivateEDDSA   
public_clsr   r   deterministicr   c                     U R                   R                  U5      nU(       a  U R                  5       R                  XA5        U$ )z1Sign using a private key per RFC 8080, section 4.)r   sign
public_keyr   )r   r   r   r5   r   s        r   r7   PrivateEDDSA.sign    s4     HHMM$'	OO$$Y5r   c                 >    U " U R                   R                  5       S9$ r"   )r$   generate)r&   s    r   r;   PrivateEDDSA.generate,   s    s{{++-..r   r)   N)FT)r   r2   )r*   r+   r,   r-   r   r   __annotations__r.   boolr7   r/   r;   r0   r)   r   r   r2   r2      sT    [!!
 "	

 
 	

 

 / /r   r2   c                   d    \ rS rSr% \R
                  \S'   \R
                  r\R                  r
Srg)PublicED255191   r   r)   N)r*   r+   r,   r-   r   Ed25519PublicKeyr=   r$   r	   ED25519	algorithmr0   r)   r   r   r@   r@   1   s$    		!	!!&&G!!Ir   r@   c                   P    \ rS rSr% \R
                  \S'   \R
                  r\r	Sr
g)PrivateED255197   r   r)   N)r*   r+   r,   r-   r   Ed25519PrivateKeyr=   r$   r@   r4   r0   r)   r   r   rF   rF   7   s    		"	""''GJr   rF   c                   d    \ rS rSr% \R
                  \S'   \R
                  r\R                  r
Srg)PublicED448=   r   r)   N)r*   r+   r,   r-   r   Ed448PublicKeyr=   r$   r	   ED448rD   r0   r)   r   r   rJ   rJ   =   s"    			""GIr   rJ   c                   P    \ rS rSr% \R
                  \S'   \R
                  r\r	Sr
g)PrivateED448C   r   r)   N)r*   r+   r,   r-   r   Ed448PrivateKeyr=   r$   rJ   r4   r0   r)   r   r   rO   rO   C   s    			##GJr   rO   N)typingr   cryptography.hazmat.primitivesr   )cryptography.hazmat.primitives.asymmetricr   r   dns.dnssecalgs.cryptographyr   r   dns.dnssectypesr	   dns.rdtypes.ANY.DNSKEYr
   r   r2   r@   rF   rJ   rO   r)   r   r   <module>rX      sa     8 D U % )
' 
$/) /("K "\  +  < r   