§
    pïgà,  ã                   óÂ   — d dl Z d dlZd dlmZmZ d dlmZ d dlmZ  G d„ d¦  «        Z	 G d„ d¦  «        Z
 G d	„ d
¦  «        Z G d„ d¦  «        Z G d„ de¦  «        ZdS )é    N)Ú
exceptionsÚutils)Úaead)Úbackendc                   ó®   — e Zd ZdZdefd„Zedefd„¦   «         Zdededej	        e         defd	„Z
dededej	        e         defd
„Zdedededdfd„ZdS )ÚChaCha20Poly1305éÿÿÿÚkeyc                 óò   — t          j        | ¦  «        s$t          j        dt          j        j        ¦  «        ‚t          j        d|¦  «         t          |¦  «        dk    rt          d¦  «        ‚|| _
        d S )Nz<ChaCha20Poly1305 is not supported by this version of OpenSSLr
   é    z&ChaCha20Poly1305 key must be 32 bytes.)r   Úaead_cipher_supportedr   ÚUnsupportedAlgorithmÚ_ReasonsÚUNSUPPORTED_CIPHERr   Ú_check_byteslikeÚlenÚ
ValueErrorÚ_key©Úselfr
   s     úM/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/ciphers/aead.pyÚ__init__zChaCha20Poly1305.__init__   st   € ÝÔ,¨TÑ2Ô2ð 	ÝÔ1ØNÝÔ#Ô6ñô ð õ 	Ô˜u cÑ*Ô*Ð*åˆs‰8Œ8�rŠ>ˆ>ÝÐEÑFÔFÐFàˆŒ	ˆ	ˆ	ó    Úreturnc                 ó*   — t          j        d¦  «        S )Nr   )ÚosÚurandom)Úclss    r   Úgenerate_keyzChaCha20Poly1305.generate_key   s   € åŒz˜"‰~Œ~Ðr   ÚnonceÚdataÚassociated_datac                 óô   — |€d}t          |¦  «        | j        k    st          |¦  «        | j        k    rt          d¦  «        ‚|                      |||¦  «         t	          j        t          | |||gd¦  «        S ©Nr   ú5Data or associated data too long. Max 2**31 - 1 bytesé   ©r   Ú	_MAX_SIZEÚOverflowErrorÚ_check_paramsr   Ú_encryptr   ©r   r    r!   r"   s       r   ÚencryptzChaCha20Poly1305.encrypt"   ó‚   € ð Ð"Ø!ˆOåˆt‰9Œ9�t”~Ò%Ð%­¨_Ñ)=Ô)=ÀÄÒ)NÐ)NåØGñô ð ð 	×Ò˜5 $¨Ñ8Ô8Ð8ÝŒ}�W d¨E°4¸/Ð9JÈBÑOÔOÐOr   c                 óv   — |€d}|                       |||¦  «         t          j        t          | |||gd¦  «        S ©Nr   r&   ©r*   r   Ú_decryptr   r,   s       r   ÚdecryptzChaCha20Poly1305.decrypt4   óD   € ð Ð"Ø!ˆOà×Ò˜5 $¨Ñ8Ô8Ð8ÝŒ}�W d¨E°4¸/Ð9JÈBÑOÔOÐOr   Nc                 óÈ   — t          j        d|¦  «         t          j        d|¦  «         t          j        d|¦  «         t          |¦  «        dk    rt	          d¦  «        ‚d S )Nr    r!   r"   é   zNonce must be 12 bytes©r   r   Ú_check_bytesr   r   r,   s       r   r*   zChaCha20Poly1305._check_params@   sf   € õ 	Ô˜w¨Ñ.Ô.Ð.ÝÔ˜6 4Ñ(Ô(Ð(ÝÔÐ,¨oÑ>Ô>Ð>Ýˆu‰:Œ:˜ÒÐÝÐ5Ñ6Ô6Ð6ð Ðr   )Ú__name__Ú
__module__Ú__qualname__r(   Úbytesr   Úclassmethodr   ÚtypingÚOptionalr-   r3   r*   © r   r   r   r      s'  € € € € € Ø€Ið˜Eð ð ð ð ð ð˜Uð ð ð ñ „[ððPàðPð ðPð  œ¨Ô/ð	Pð
 
ðPð Pð Pð Pð$
Pàð
Pð ð
Pð  œ¨Ô/ð	
Pð
 
ð
Pð 
Pð 
Pð 
Pð
7àð
7ð ð
7ð ð	
7ð
 
ð
7ð 
7ð 
7ð 
7ð 
7ð 
7r   r   c                   óÌ   — e Zd ZdZddedefd„Zededefd„¦   «         Zd	ed
ede	j
        e         defd„Zd	ed
ede	j
        e         defd„Zd	ededdfd„Zd	ed
ededdfd„ZdS )ÚAESCCMr	   r&   r
   Ú
tag_lengthc                 ój  — t          j        d|¦  «         t          |¦  «        dvrt          d¦  «        ‚|| _        t          |t          ¦  «        st          d¦  «        ‚|dvrt          d¦  «        ‚|| _        t          j
        | ¦  «        s$t          j        dt          j        j        ¦  «        ‚d S )Nr
   ©r&   é   r   z)AESCCM key must be 128, 192, or 256 bits.ztag_length must be an integer)é   é   é   é
   r6   é   r&   zInvalid tag_lengthz2AESCCM is not supported by this version of OpenSSL)r   r   r   r   r   Ú
isinstanceÚintÚ	TypeErrorÚ_tag_lengthr   r   r   r   r   r   )r   r
   rC   s      r   r   zAESCCM.__init__P   s¾   € ÝÔ˜u cÑ*Ô*Ð*Ýˆs‰8Œ8˜<Ð'Ð'ÝÐHÑIÔIÐIàˆŒ	Ý˜*¥cÑ*Ô*ð 	=ÝÐ;Ñ<Ô<Ð<àÐ6Ð6Ð6ÝÐ1Ñ2Ô2Ð2à%ˆÔåÔ,¨TÑ2Ô2ð 	ÝÔ1ØDÝÔ#Ô6ñô ð ð	ð 	r   Ú
bit_lengthr   c                 óž   — t          |t          ¦  «        st          d¦  «        ‚|dvrt          d¦  «        ‚t	          j        |dz  ¦  «        S ©Núbit_length must be an integer)é€   éÀ   é   z#bit_length must be 128, 192, or 256rI   ©rL   rM   rN   r   r   r   ©r   rP   s     r   r   zAESCCM.generate_keyd   óQ   € å˜*¥cÑ*Ô*ð 	=ÝÐ;Ñ<Ô<Ð<à˜_Ð,Ð,ÝÐBÑCÔCÐCåŒz˜*¨™/Ñ*Ô*Ð*r   r    r!   r"   c                 óD  — |€d}t          |¦  «        | j        k    st          |¦  «        | j        k    rt          d¦  «        ‚|                      |||¦  «         |                      |t          |¦  «        ¦  «         t          j        t          | |||g| j        ¦  «        S )Nr   r%   )	r   r(   r)   r*   Ú_validate_lengthsr   r+   r   rO   r,   s       r   r-   zAESCCM.encryptn   s¨   € ð Ð"Ø!ˆOåˆt‰9Œ9�t”~Ò%Ð%­¨_Ñ)=Ô)=ÀÄÒ)NÐ)NåØGñô ð ð 	×Ò˜5 $¨Ñ8Ô8Ð8Ø×Ò˜u¥c¨$¡i¤iÑ0Ô0Ð0ÝŒ}Ý�T˜5 $¨Ð(9¸4Ô;Kñ
ô 
ð 	
r   c                 ó€   — |€d}|                       |||¦  «         t          j        t          | |||g| j        ¦  «        S )Nr   )r*   r   r2   r   rO   r,   s       r   r3   zAESCCM.decryptƒ   sN   € ð Ð"Ø!ˆOà×Ò˜5 $¨Ñ8Ô8Ð8ÝŒ}Ý�T˜5 $¨Ð(9¸4Ô;Kñ
ô 
ð 	
r   Údata_lenNc                 ó`   — dt          |¦  «        z
  }dd|z  z  |k     rt          d¦  «        ‚d S )Né   é   rI   zData too long for nonce)r   r   )r   r    r]   Úl_vals       r   r[   zAESCCM._validate_lengths‘   s>   € ð •S˜‘Z”Z‘ˆØ��U‘Ñ˜hÒ&Ð&ÝÐ6Ñ7Ô7Ð7ð 'Ð&r   c                 óÚ   — t          j        d|¦  «         t          j        d|¦  «         t          j        d|¦  «         dt          |¦  «        cxk    rdk    sn t	          d¦  «        ‚d S )Nr    r!   r"   é   é   z$Nonce must be between 7 and 13 bytesr7   r,   s       r   r*   zAESCCM._check_params˜   sz   € õ 	Ô˜w¨Ñ.Ô.Ð.ÝÔ˜6 4Ñ(Ô(Ð(ÝÔÐ,¨oÑ>Ô>Ð>Ø•C˜‘J”JÐ$Ð$Ò$Ð$ "Ò$Ð$Ð$Ð$ÝÐCÑDÔDÐDð %Ð$r   )r&   )r9   r:   r;   r(   r<   rM   r   r=   r   r>   r?   r-   r3   r[   r*   r@   r   r   rB   rB   M   sW  € € € € € Ø€Iðð ˜Eð ¨sð ð ð ð ð( ð+ cð +¨eð +ð +ð +ñ „[ð+ð
àð
ð ð
ð  œ¨Ô/ð	
ð
 
ð
ð 
ð 
ð 
ð*
àð
ð ð
ð  œ¨Ô/ð	
ð
 
ð
ð 
ð 
ð 
ð8 uð 8¸ð 8Àð 8ð 8ð 8ð 8ðEØðEØ"'ðEØ:?ðEà	ðEð Eð Eð Eð Eð Er   rB   c                   ó²   — e Zd ZdZdefd„Zededefd„¦   «         Zdeded	e	j
        e         defd
„Zdeded	e	j
        e         defd„Zdeded	eddfd„ZdS )ÚAESGCMr	   r
   c                 ó~   — t          j        d|¦  «         t          |¦  «        dvrt          d¦  «        ‚|| _        d S )Nr
   rE   z)AESGCM key must be 128, 192, or 256 bits.)r   r   r   r   r   r   s     r   r   zAESGCM.__init__¥   s@   € ÝÔ˜u cÑ*Ô*Ð*Ýˆs‰8Œ8˜<Ð'Ð'ÝÐHÑIÔIÐIàˆŒ	ˆ	ˆ	r   rP   r   c                 óž   — t          |t          ¦  «        st          d¦  «        ‚|dvrt          d¦  «        ‚t	          j        |dz  ¦  «        S rR   rW   rX   s     r   r   zAESGCM.generate_key¬   rY   r   r    r!   r"   c                 óô   — |€d}t          |¦  «        | j        k    st          |¦  «        | j        k    rt          d¦  «        ‚|                      |||¦  «         t	          j        t          | |||gd¦  «        S r$   r'   r,   s       r   r-   zAESGCM.encrypt¶   r.   r   c                 óv   — |€d}|                       |||¦  «         t          j        t          | |||gd¦  «        S r0   r1   r,   s       r   r3   zAESGCM.decryptÈ   r4   r   Nc                 óî   — t          j        d|¦  «         t          j        d|¦  «         t          j        d|¦  «         t          |¦  «        dk     st          |¦  «        dk    rt	          d¦  «        ‚d S )Nr    r!   r"   rI   rT   z%Nonce must be between 8 and 128 bytesr7   r,   s       r   r*   zAESGCM._check_paramsÔ   st   € õ 	Ô˜w¨Ñ.Ô.Ð.ÝÔ˜6 4Ñ(Ô(Ð(ÝÔÐ,¨oÑ>Ô>Ð>Ýˆu‰:Œ:˜Š>ˆ>�S ™ZœZ¨#Ò-Ð-ÝÐDÑEÔEÐEð .Ð-r   ©r9   r:   r;   r(   r<   r   r=   rM   r   r>   r?   r-   r3   r*   r@   r   r   rf   rf   ¢   s8  € € € € € Ø€Ið˜Eð ð ð ð ð ð+ cð +¨eð +ð +ð +ñ „[ð+ðPàðPð ðPð  œ¨Ô/ð	Pð
 
ðPð Pð Pð Pð$
Pàð
Pð ð
Pð  œ¨Ô/ð	
Pð
 
ð
Pð 
Pð 
Pð 
Pð
Fàð
Fð ð
Fð ð	
Fð
 
ð
Fð 
Fð 
Fð 
Fð 
Fð 
Fr   rf   c                   ó²   — e Zd ZdZdefd„Zededefd„¦   «         Zdeded	e	j
        e         defd
„Zdeded	e	j
        e         defd„Zdeded	eddfd„ZdS )ÚAESOCB3r	   r
   c                 óî   — t          j        d|¦  «         t          |¦  «        dvrt          d¦  «        ‚|| _        t          j        | ¦  «        s$t          j        dt          j	        j
        ¦  «        ‚d S )Nr
   rE   z*AESOCB3 key must be 128, 192, or 256 bits.z0OCB3 is not supported by this version of OpenSSL©r   r   r   r   r   r   r   r   r   r   r   r   s     r   r   zAESOCB3.__init__ä   sz   € ÝÔ˜u cÑ*Ô*Ð*Ýˆs‰8Œ8˜<Ð'Ð'ÝÐIÑJÔJÐJàˆŒ	åÔ,¨TÑ2Ô2ð 	ÝÔ1ØBÝÔ#Ô6ñô ð ð	ð 	r   rP   r   c                 óž   — t          |t          ¦  «        st          d¦  «        ‚|dvrt          d¦  «        ‚t	          j        |dz  ¦  «        S rR   rW   rX   s     r   r   zAESOCB3.generate_keyñ   rY   r   r    r!   r"   c                 óô   — |€d}t          |¦  «        | j        k    st          |¦  «        | j        k    rt          d¦  «        ‚|                      |||¦  «         t	          j        t          | |||gd¦  «        S r$   r'   r,   s       r   r-   zAESOCB3.encryptû   r.   r   c                 óv   — |€d}|                       |||¦  «         t          j        t          | |||gd¦  «        S r0   r1   r,   s       r   r3   zAESOCB3.decrypt  r4   r   Nc                 óî   — t          j        d|¦  «         t          j        d|¦  «         t          j        d|¦  «         t          |¦  «        dk     st          |¦  «        dk    rt	          d¦  «        ‚d S )Nr    r!   r"   r6   r_   z%Nonce must be between 12 and 15 bytesr7   r,   s       r   r*   zAESOCB3._check_params  sq   € õ 	Ô˜w¨Ñ.Ô.Ð.ÝÔ˜6 4Ñ(Ô(Ð(ÝÔÐ,¨oÑ>Ô>Ð>Ýˆu‰:Œ:˜Š?ˆ?�c %™jœj¨2šo˜oÝÐDÑEÔEÐEð .˜or   rl   r@   r   r   rn   rn   á   s8  € € € € € Ø€Ið˜Eð ð ð ð ð ð+ cð +¨eð +ð +ð +ñ „[ð+ðPàðPð ðPð  œ¨Ô/ð	Pð
 
ðPð Pð Pð Pð$
Pàð
Pð ð
Pð  œ¨Ô/ð	
Pð
 
ð
Pð 
Pð 
Pð 
Pð
Fàð
Fð ð
Fð ð	
Fð
 
ð
Fð 
Fð 
Fð 
Fð 
Fð 
Fr   rn   c                   óÜ   — e Zd ZdZdefd„Zededefd„¦   «         Zdede	j
        e	j        e                  defd	„Zdede	j
        e	j        e                  defd
„Zdede	j        ddfd„ZdS )ÚAESSIVr	   r
   c                 óî   — t          j        d|¦  «         t          |¦  «        dvrt          d¦  «        ‚|| _        t          j        | ¦  «        s$t          j        dt          j	        j
        ¦  «        ‚d S )Nr
   )r   é0   é@   z)AESSIV key must be 256, 384, or 512 bits.z3AES-SIV is not supported by this version of OpenSSLrp   r   s     r   r   zAESSIV.__init__)  sz   € ÝÔ˜u cÑ*Ô*Ð*Ýˆs‰8Œ8˜<Ð'Ð'ÝÐHÑIÔIÐIàˆŒ	åÔ,¨TÑ2Ô2ð 	ÝÔ1ØEÝÔ#Ô6ñô ð ð	ð 	r   rP   r   c                 óž   — t          |t          ¦  «        st          d¦  «        ‚|dvrt          d¦  «        ‚t	          j        |dz  ¦  «        S )NrS   )rV   i€  i   z#bit_length must be 256, 384, or 512rI   rW   rX   s     r   r   zAESSIV.generate_key6  rY   r   r!   r"   c                 óø   ‡ — |€g }‰                       ||¦  «         t          |¦  «        ‰ j        k    st          ˆ fd„|D ¦   «         ¦  «        rt	          d¦  «        ‚t          j        t          ‰ d||d¦  «        S )Nc              3   óH   •K  — | ]}t          |¦  «        ‰j        k    V — Œd S ©N)r   r(   )Ú.0Úadr   s     €r   ú	<genexpr>z!AESSIV.encrypt.<locals>.<genexpr>J  sA   øè è € ð -
ð -
Ø)+�C�‰GŒG�d”nÒ$ð-
ð -
ð -
ð -
ð -
ð -
r   r%   r   r&   )r*   r   r(   Úanyr)   r   r+   r   ©r   r!   r"   s   `  r   r-   zAESSIV.encrypt@  s¡   ø€ ð
 Ð"Ø ˆOà×Ò˜4 Ñ1Ô1Ð1åˆt‰9Œ9�t”~Ò%Ð%­ð -
ð -
ð -
ð -
Ø/>ð-
ñ -
ô -
ñ *
ô *
Ð%õ  ØGñô ð õ Œ}�W d¨C°°ÈÑKÔKÐKr   c                 ór   — |€g }|                       ||¦  «         t          j        t          | d||d¦  «        S r0   r1   r‚   s      r   r3   zAESSIV.decryptT  s?   € ð
 Ð"Ø ˆOà×Ò˜4 Ñ1Ô1Ð1åŒ}�W d¨C°°ÈÑKÔKÐKr   Nc                 óª   — t          j        d|¦  «         t          |t          ¦  «        rt	          d„ |D ¦   «         ¦  «        st          d¦  «        ‚d S )Nr!   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r}   )rL   r<   )r~   Úxs     r   r€   z'AESSIV._check_params.<locals>.<genexpr>f  s=   è è € ð <
ð <
Ø%&�J�q�%Ñ Ô ð<
ð <
ð <
ð <
ð <
ð <
r   z/associated_data must be a list of bytes or None)r   r8   rL   ÚlistÚallrN   r‚   s      r   r*   zAESSIV._check_params`  su   € õ
 	Ô˜6 4Ñ(Ô(Ð(Ý˜/­4Ñ0Ô0ð 	O½ð <
ð <
Ø*9ð<
ñ <
ô <
ñ 9
ô 9
ð 	Oõ ÐMÑNÔNÐNð	Oð 	Or   )r9   r:   r;   r(   r<   r   r=   rM   r   r>   r?   ÚListr-   r3   r*   r@   r   r   rv   rv   &  s'  € € € € € Ø€Ið˜Eð ð ð ð ð ð+ cð +¨eð +ð +ð +ñ „[ð+ðLàðLð  œ¨¬°UÔ);Ô<ðLð 
ð	Lð Lð Lð Lð(
Làð
Lð  œ¨¬°UÔ);Ô<ð
Lð 
ð	
Lð 
Lð 
Lð 
Lð	Oàð	Oð  œð	Oð 
ð		Oð 	Oð 	Oð 	Oð 	Oð 	Or   rv   )r   r>   Úcryptographyr   r   Ú$cryptography.hazmat.backends.opensslr   Ú,cryptography.hazmat.backends.openssl.backendr   r   rB   rf   rn   Úobjectrv   r@   r   r   ú<module>rŽ      si  ðð 
€	€	€	Ø €€€à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø @Ð @Ð @Ð @Ð @Ð @ð<7ð <7ð <7ð <7ð <7ñ <7ô <7ð <7ð~REð REð REð REð REñ REô REð REðj<Fð <Fð <Fð <Fð <Fñ <Fô <Fð <Fð~BFð BFð BFð BFð BFñ BFô BFð BFðJCOð COð COð COð COˆVñ COô COð COð COð COr   