§
    pïg   ã                   ó�   — d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	 e j
        rd dlmZ  G d„ de¦  «        Z G d„ d	e¦  «        ZdS )
é    N)Ú
exceptions)Úserialization)ÚEd25519PrivateKeyÚEd25519PublicKeyÚ_ED25519_KEY_SIZEÚ_ED25519_SIG_SIZE)ÚBackendc                   ó^   — e Zd Zdd„Zdej        dej        defd„Zdefd„Z	d	ed
eddfd„Z
dS )Ú_Ed25519PublicKeyÚbackendr	   c                 ó"   — || _         || _        d S ©N©Ú_backendÚ	_evp_pkey©Úselfr   Úevp_pkeys      úN/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ed25519.pyÚ__init__z_Ed25519PublicKey.__init__   ó   € ØˆŒØ!ˆŒˆˆó    ÚencodingÚformatÚreturnc                 ó&  — |t           j        j        u s|t           j        j        u rI|t           j        j        us|t           j        j        urt	          d¦  «        ‚|                      ¦   «         S | j                             ||| | j        d ¦  «        S )Nz3When using Raw both encoding and format must be Raw)	r   ÚEncodingÚRawÚPublicFormatÚ
ValueErrorÚ_raw_public_bytesr   Ú_public_key_bytesr   )r   r   r   s      r   Úpublic_bytesz_Ed25519PublicKey.public_bytes   sš   € ð �Ô.Ô2Ð2Ð2Ø�Ô3Ô7Ð7Ð7ð ¥Ô 6Ô :Ð:Ð:Ø¥Ô!;Ô!?Ð?Ð?å ØIñô ð ð ×)Ò)Ñ+Ô+Ð+àŒ}×.Ò.Ø�f˜d D¤N°Dñ
ô 
ð 	
r   c                 óÊ  — | j         j                             dt          ¦  «        }| j         j                             dt          ¦  «        }| j         j                             | j        ||¦  «        }| j                              |dk    ¦  «         | j                              |d         t          k    ¦  «         | j         j                             |t          ¦  «        d d …         S ©Nzunsigned char []úsize_t *é   r   )	r   Ú_ffiÚnewr   Ú_libÚEVP_PKEY_get_raw_public_keyr   Úopenssl_assertÚbuffer©r   ÚbufÚbuflenÚress       r   r!   z#_Ed25519PublicKey._raw_public_bytes0   s½   € ØŒmÔ ×$Ò$Ð%7Õ9JÑKÔKˆØ”Ô#×'Ò'¨
Õ4EÑFÔFˆØŒmÔ ×<Ò<ØŒN˜C ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤YÕ2CÒ%CÑDÔDÐDØŒ}Ô!×(Ò(¨Õ.?Ñ@Ô@ÀÀÀÔCÐCr   Ú	signatureÚdataNc           	      ó°  — | j         j                             ¦   «         }| j                              || j         j        j        k    ¦  «         | j         j                             || j         j        j        ¦  «        }| j         j                             || j         j        j        | j         j        j        | j         j        j        | j	        ¦  «        }| j                              |dk    ¦  «         | j         j         
                    ||t          |¦  «        |t          |¦  «        ¦  «        }|dk    r%| j                              ¦   «          t          j        ‚d S )Nr'   )r   r*   ÚEVP_MD_CTX_newr,   r(   ÚNULLÚgcÚEVP_MD_CTX_freeÚEVP_DigestVerifyInitr   ÚEVP_DigestVerifyÚlenÚ_consume_errorsr   ÚInvalidSignature)r   r2   r3   Ú
evp_md_ctxr1   s        r   Úverifyz_Ed25519PublicKey.verify:   s#  € Ø”]Ô'×6Ò6Ñ8Ô8ˆ
ØŒ×$Ò$ Z°4´=Ô3EÔ3JÒ%JÑKÔKÐKØ”]Ô'×*Ò*Ø˜œÔ*Ô:ñ
ô 
ˆ
ð ŒmÔ ×5Ò5ØØŒMÔÔ#ØŒMÔÔ#ØŒMÔÔ#ØŒNñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒmÔ ×1Ò1Ø˜	¥3 y¡>¤>°4½¸T¹¼ñ
ô 
ˆð �!Š8ˆ8ØŒM×)Ò)Ñ+Ô+Ð+ÝÔ-Ð-ð ˆ8r   ©r   r	   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Úbytesr#   r!   r?   © r   r   r   r      s§   € € € € € ð"ð "ð "ð "ð
àÔ(ð
ð Ô*ð
ð 
ð	
ð 
ð 
ð 
ð.D 5ð Dð Dð Dð Dð. ð .¨Uð .°tð .ð .ð .ð .ð .ð .r   r   c                   ót   — e Zd Zdd„Zdefd„Zdedefd„Zdej	        d	ej
        d
ej        defd„Zdefd„ZdS )Ú_Ed25519PrivateKeyr   r	   c                 ó"   — || _         || _        d S r   r   r   s      r   r   z_Ed25519PrivateKey.__init__Q   r   r   r   c                 óò  — | j         j                             dt          ¦  «        }| j         j                             dt          ¦  «        }| j         j                             | j        ||¦  «        }| j                              |dk    ¦  «         | j                              |d         t          k    ¦  «         | j         j                             |¦  «        d d …         }| j          	                    |¦  «        S r%   )
r   r(   r)   r   r*   r+   r   r,   r-   Úed25519_load_public_bytes)r   r/   r0   r1   r#   s        r   Ú
public_keyz_Ed25519PrivateKey.public_keyU   sÏ   € ØŒmÔ ×$Ò$Ð%7Õ9JÑKÔKˆØ”Ô#×'Ò'¨
Õ4EÑFÔFˆØŒmÔ ×<Ò<ØŒN˜C ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤YÕ2CÒ%CÑDÔDÐDØ”}Ô)×0Ò0°Ñ5Ô5°a°a°aÔ8ˆØŒ}×6Ò6°|ÑDÔDÐDr   r3   c           	      óÊ  — | j         j                             ¦   «         }| j                              || j         j        j        k    ¦  «         | j         j                             || j         j        j        ¦  «        }| j         j                             || j         j        j        | j         j        j        | j         j        j        | j	        ¦  «        }| j                              |dk    ¦  «         | j         j         
                    dt          ¦  «        }| j         j         
                    dt          |¦  «        ¦  «        }| j         j                             ||||t          |¦  «        ¦  «        }| j                              |dk    ¦  «         | j                              |d         t          k    ¦  «         | j         j                             ||d         ¦  «        d d …         S )Nr'   zunsigned char[]r&   r   )r   r*   r5   r,   r(   r6   r7   r8   ÚEVP_DigestSignInitr   r)   r   r;   ÚEVP_DigestSignr-   )r   r3   r>   r1   r/   r0   s         r   Úsignz_Ed25519PrivateKey.sign`   sŽ  € Ø”]Ô'×6Ò6Ñ8Ô8ˆ
ØŒ×$Ò$ Z°4´=Ô3EÔ3JÒ%JÑKÔKÐKØ”]Ô'×*Ò*Ø˜œÔ*Ô:ñ
ô 
ˆ
ð ŒmÔ ×3Ò3ØØŒMÔÔ#ØŒMÔÔ#ØŒMÔÔ#ØŒNñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒmÔ ×$Ò$Ð%6Õ8IÑJÔJˆØ”Ô#×'Ò'¨
µC¸±H´HÑ=Ô=ˆØŒmÔ ×/Ò/Ø˜˜V T­3¨t©9¬9ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤YÕ2CÒ%CÑDÔDÐDØŒ}Ô!×(Ò(¨¨f°Q¬iÑ8Ô8¸¸¸Ô;Ð;r   r   r   Úencryption_algorithmc                 ó\  — |t           j        j        u s|t           j        j        u rc|t           j        j        us-|t           j        j        ust          |t           j        ¦  «        st          d¦  «        ‚|                      ¦   «         S | j	         
                    |||| | j        d ¦  «        S )NzcWhen using Raw both encoding and format must be Raw and encryption_algorithm must be NoEncryption())r   r   r   r   ÚPrivateFormatÚ
isinstanceÚNoEncryptionr    Ú_raw_private_bytesr   Ú_private_key_bytesr   )r   r   r   rP   s       r   Úprivate_bytesz _Ed25519PrivateKey.private_bytesw   s¼   € ð �Ô.Ô2Ð2Ð2Ø�Ô3Ô7Ð7Ð7ð �mÔ9Ô=Ð=Ð=Ø¥=Ô#9Ô#=Ð=Ð=Ý!Ø(­-Ô*Dñô ð >õ
 !ðFñô ð ð
 ×*Ò*Ñ,Ô,Ð,àŒ}×/Ò/Ø�fÐ2°D¸$¼.È$ñ
ô 
ð 	
r   c                 óÊ  — | j         j                             dt          ¦  «        }| j         j                             dt          ¦  «        }| j         j                             | j        ||¦  «        }| j                              |dk    ¦  «         | j                              |d         t          k    ¦  «         | j         j                             |t          ¦  «        d d …         S r%   )	r   r(   r)   r   r*   ÚEVP_PKEY_get_raw_private_keyr   r,   r-   r.   s       r   rU   z%_Ed25519PrivateKey._raw_private_bytes“   s½   € ØŒmÔ ×$Ò$Ð%7Õ9JÑKÔKˆØ”Ô#×'Ò'¨
Õ4EÑFÔFˆØŒmÔ ×=Ò=ØŒN˜C ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤YÕ2CÒ%CÑDÔDÐDØŒ}Ô!×(Ò(¨Õ.?Ñ@Ô@ÀÀÀÔCÐCr   Nr@   )rA   rB   rC   r   r   rK   rD   rO   r   r   rR   ÚKeySerializationEncryptionrW   rU   rE   r   r   rG   rG   P   sÐ   € € € € € ð"ð "ð "ð "ð	EÐ,ð 	Eð 	Eð 	Eð 	Eð<˜ð < 5ð <ð <ð <ð <ð.
àÔ(ð
ð Ô+ð
ð ,ÔFð	
ð
 
ð
ð 
ð 
ð 
ð8D Eð Dð Dð Dð Dð Dð Dr   rG   )ÚtypingÚcryptographyr   Úcryptography.hazmat.primitivesr   Ú1cryptography.hazmat.primitives.asymmetric.ed25519r   r   r   r   ÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.backendr	   r   rG   rE   r   r   ú<module>ra      s  ðð
 €€€à #Ð #Ð #Ð #Ð #Ð #Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð 
Ôð EØDÐDÐDÐDÐDÐDð9.ð 9.ð 9.ð 9.ð 9.Ð(ñ 9.ô 9.ð 9.ðxKDð KDð KDð KDð KDÐ*ñ KDô KDð KDð KDð KDr   