ó
    ÌÅLg½  ã                   óØ   • 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      Ú6/usr/lib/python3/dist-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;   € à�x‰x×$Ñ$Ü"×+Ñ+×/Ñ/¼×8RÑ8R×8VÑ8Vð %ð 
ð 	
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ÙØ—‘×-Ñ-¨c¯g©gÓ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   € ð —H‘H—M‘M $Ó'ˆ	ÞØ�O‰OÓ×$Ñ$ 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)ÚPublicED25519é1   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)ÚPrivateED25519é7   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)ÚPrivateED448éC   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   