§
    pïgò  ã                   ó�   — d dl Z d dlmZ d dlmZ d dlmZmZ e j        rd dl	m
Z
 dZdZ G d„ d	e¦  «        Z G d
„ de¦  «        ZdS )é    N)Ú
exceptions)Úserialization)ÚEd448PrivateKeyÚEd448PublicKey)ÚBackendé9   ér   c                   ó^   — 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 )Ú_Ed448PublicKeyÚbackendr   c                 ó"   — || _         || _        d S ©N©Ú_backendÚ	_evp_pkey©Úselfr   Úevp_pkeys      úL/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ed448.pyÚ__init__z_Ed448PublicKey.__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_Ed448PublicKey.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ÚnewÚ_ED448_KEY_SIZEÚ_libÚEVP_PKEY_get_raw_public_keyr   Úopenssl_assertÚbuffer©r   ÚbufÚbuflenÚress       r   r!   z!_Ed448PublicKey._raw_public_bytes1   s¹   € ØŒmÔ ×$Ò$Ð%7½ÑIÔIˆØ”Ô#×'Ò'¨
µOÑDÔDˆØŒmÔ ×<Ò<ØŒN˜C ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤Yµ/Ò%AÑBÔBÐBØŒ}Ô!×(Ò(¨­oÑ>Ô>¸q¸q¸qÔAÐAr   Ú	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   r3   r4   Ú
evp_md_ctxr2   s        r   Úverifyz_Ed448PublicKey.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§   € € € € € ð"ð "ð "ð "ð
àÔ(ð
ð Ô*ð
ð 
ð	
ð 
ð 
ð 
ð.B 5ð Bð Bð Bð Bð. ð .¨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 )Ú_Ed448PrivateKeyr   r   c                 ó"   — || _         || _        d S r   r   r   s      r   r   z_Ed448PrivateKey.__init__R   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.   Úed448_load_public_bytes)r   r0   r1   r2   r#   s        r   Ú
public_keyz_Ed448PrivateKey.public_keyV   sÌ   € ØŒmÔ ×$Ò$Ð%7½ÑIÔIˆØ”Ô#×'Ò'¨
µOÑDÔDˆØŒmÔ ×<Ò<ØŒN˜C ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤Yµ/Ò%AÑBÔBÐBØ”}Ô)×0Ò0°Ñ5Ô5°a°a°aÔ8ˆØŒ}×4Ò4°\ÑBÔBÐBr   r4   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+   r6   r-   r(   r7   r8   r9   ÚEVP_DigestSignInitr   r)   Ú_ED448_SIG_SIZEr<   ÚEVP_DigestSignr.   )r   r4   r?   r2   r0   r1   s         r   Úsignz_Ed448PrivateKey.signa   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½ÑHÔHˆØ”Ô#×'Ò'¨
µC¸±H´HÑ=Ô=ˆØŒmÔ ×/Ò/Ø˜˜V T­3¨t©9¬9ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤Yµ/Ò%AÑBÔBÐBØŒ}Ô!×(Ò(¨¨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   rR   s       r   Úprivate_bytesz_Ed448PrivateKey.private_bytesx   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   rW   z#_Ed448PrivateKey._raw_private_bytes”   s¹   € ØŒmÔ ×$Ò$Ð%7½ÑIÔIˆØ”Ô#×'Ò'¨
µOÑDÔDˆØŒmÔ ×=Ò=ØŒN˜C ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤Yµ/Ò%AÑBÔBÐBØŒ}Ô!×(Ò(¨­oÑ>Ô>¸q¸q¸qÔAÐAr   NrA   )rB   rC   rD   r   r   rL   rE   rQ   r   r   rT   ÚKeySerializationEncryptionrY   rW   rF   r   r   rH   rH   Q   sÏ   € € € € € ð"ð "ð "ð "ð	C˜Nð 	Cð 	Cð 	Cð 	Cð<˜ð < 5ð <ð <ð <ð <ð.
àÔ(ð
ð Ô+ð
ð ,ÔFð	
ð
 
ð
ð 
ð 
ð 
ð8B Eð Bð Bð Bð Bð Bð Br   rH   )ÚtypingÚcryptographyr   Úcryptography.hazmat.primitivesr   Ú/cryptography.hazmat.primitives.asymmetric.ed448r   r   ÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.backendr   r*   rO   r   rH   rF   r   r   ú<module>rc      sù   ðð
 €€€à #Ð #Ð #Ð #Ð #Ð #Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð
 
Ôð EØDÐDÐDÐDÐDÐDà€Ø€ð9.ð 9.ð 9.ð 9.ð 9.�nñ 9.ô 9.ð 9.ðxKBð KBð KBð KBð KB�ñ KBô KBð KBð KBð KBr   