§
    pïgú   ã                   ó†  — d dl Z d dlmZ e j        r&d dlmZ d dlmZmZm	Z	m
Z
mZ e j        eee	e
ef         ZdZd Zdddefd	„Zd
eddfd„Zddd
ededede j        e         dedefd„Zdddeddfd„Zdddeddfd„Zdddedefd„Zdddddedede j        e         dedefd„Zdddddedede j        e         dedefd„ZdS )é    N)Ú
InvalidTag)ÚBackend©ÚAESCCMÚAESGCMÚAESOCB3ÚAESSIVÚChaCha20Poly1305é   ÚcipherÚ_AEAD_TYPESÚreturnc                 ó<  — ddl m}m}m}m}m} t          | |¦  «        rdS t          | |¦  «        r.dt          | j        ¦  «        dz  › d� 	                    d¦  «        S t          | |¦  «        r.dt          | j        ¦  «        dz  › d� 	                    d¦  «        S t          | |¦  «        r1dt          | j        ¦  «        dz  d	z  › d
� 	                    d¦  «        S t          | |¦  «        sJ ‚dt          | j        ¦  «        dz  › d� 	                    d¦  «        S )Nr   r   s   chacha20-poly1305zaes-é   z-ccmÚasciiz-ocbé   z-sivz-gcm)
Ú+cryptography.hazmat.primitives.ciphers.aeadr   r   r   r	   r
   Ú
isinstanceÚlenÚ_keyÚencode)r   r   r   r   r	   r
   s         úK/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/aead.pyÚ_aead_cipher_namer      sp  € ðð ð ð ð ð ð ð ð ð ð ð ð ð õ �&Ð*Ñ+Ô+ð 
AØ#Ð#Ý	�F˜FÑ	#Ô	#ð AØ0•c˜&œ+Ñ&Ô&¨Ñ*Ð0Ð0Ð0×7Ò7¸Ñ@Ô@Ð@Ý	�F˜GÑ	$Ô	$ð AØ0•c˜&œ+Ñ&Ô&¨Ñ*Ð0Ð0Ð0×7Ò7¸Ñ@Ô@Ð@Ý	�F˜FÑ	#Ô	#ð AØ5•c˜&œ+Ñ&Ô&¨Ñ*¨aÑ/Ð5Ð5Ð5×<Ò<¸WÑEÔEÐEå˜& &Ñ)Ô)Ð)Ð)Ð)Ø0•c˜&œ+Ñ&Ô&¨Ñ*Ð0Ð0Ð0×7Ò7¸Ñ@Ô@Ð@ó    Úcipher_nameÚbackendr   c                 óœ  — |                       d¦  «        ry|j                             |j        j        | |j        j        ¦  «        }|                     ||j        j        k    ¦  «         |j                             ||j        j        ¦  «        }n=|j                             | ¦  «        }|                     ||j        j        k    ¦  «         |S )Ns   -siv)	ÚendswithÚ_libÚEVP_CIPHER_fetchÚ_ffiÚNULLÚopenssl_assertÚgcÚEVP_CIPHER_freeÚEVP_get_cipherbyname)r   r   Ú
evp_ciphers      r   Ú_evp_cipherr(   2   s¸   € Ø×Ò˜GÑ$Ô$ð 
@Ø”\×2Ò2ØŒLÔØØŒLÔñ
ô 
ˆ
ð
 	×Ò˜z¨W¬\Ô->Ò>Ñ?Ô?Ð?Ø”\—_’_ Z°´Ô1MÑNÔNˆ
ˆ
à”\×6Ò6°{ÑCÔCˆ
Ø×Ò˜z¨W¬\Ô->Ò>Ñ?Ô?Ð?àÐr   ÚkeyÚnonceÚtagÚtag_lenÚ	operationc                 óN  — t          || ¦  «        }| j                             ¦   «         }| j                             || j        j        ¦  «        }| j                             ||| j        j        | j        j        | j        j        t          |t          k    ¦  «        ¦  «        }	|  
                    |	dk    ¦  «         | j                             |t          |¦  «        ¦  «        }	|  
                    |	dk    ¦  «         | j                             || j        j        t          |¦  «        | j        j        ¦  «        }	|  
                    |	dk    ¦  «         |t          k    rR|€J ‚| j                             || j        j        t          |¦  «        |¦  «        }	|  
                    |	dk    ¦  «         n_|                     d¦  «        rJ| j                             || j        j        || j        j        ¦  «        }	|  
                    |	dk    ¦  «         | j                             |¦  «        }
| j                             |¦  «        }| j                             || j        j        | j        j        ||
t          |t          k    ¦  «        ¦  «        }	|  
                    |	dk    ¦  «         |S )Nr   s   -ccm)r(   r   ÚEVP_CIPHER_CTX_newr!   r$   ÚEVP_CIPHER_CTX_freeÚEVP_CipherInit_exr"   ÚintÚ_ENCRYPTr#   ÚEVP_CIPHER_CTX_set_key_lengthr   ÚEVP_CIPHER_CTX_ctrlÚEVP_CTRL_AEAD_SET_IVLENÚ_DECRYPTÚEVP_CTRL_AEAD_SET_TAGr   Úfrom_buffer)r   r   r)   r*   r+   r,   r-   r'   ÚctxÚresÚ	nonce_ptrÚkey_ptrs               r   Ú_aead_setupr>   B   s`  € õ ˜[¨'Ñ2Ô2€JØ
Œ,×
)Ò
)Ñ
+Ô
+€CØ
Œ,�/Š/˜#˜wœ|Ô?Ñ
@Ô
@€CØ
Œ,×
(Ò
(ØØØŒÔØŒÔØŒÔÝˆI�Ò!Ñ"Ô"ñô €Cð ×Ò˜3 !š8Ñ$Ô$Ð$Ø
Œ,×
4Ò
4°S½#¸c¹(¼(Ñ
CÔ
C€CØ×Ò˜3 !š8Ñ$Ô$Ð$Ø
Œ,×
*Ò
*ØØŒÔ,ÝˆE‰
Œ
ØŒÔñ	ô €Cð ×Ò˜3 !š8Ñ$Ô$Ð$Ø•HÒÐØˆˆˆØŒl×.Ò.Ø�”Ô3µS¸±X´X¸sñ
ô 
ˆð 	×Ò˜s ašxÑ(Ô(Ð(Ð(Ø	×	Ò	˜gÑ	&Ô	&ð )ØŒl×.Ò.Ø�”Ô3°W¸g¼lÔ>Oñ
ô 
ˆð 	×Ò˜s ašxÑ(Ô(Ð(à”×(Ò(¨Ñ/Ô/€IØŒl×&Ò& sÑ+Ô+€GØ
Œ,×
(Ò
(ØØŒÔØŒÔØØÝˆI�Ò!Ñ"Ô"ñô €Cð ×Ò˜3 !š8Ñ$Ô$Ð$Ø€Jr   Údata_lenc                 óÐ   — | j                              d¦  «        }| j                             || j         j        || j         j        |¦  «        }|                      |dk    ¦  «         d S ©Núint *r   )r!   Únewr   ÚEVP_CipherUpdater"   r#   )r   r:   r?   Úintptrr;   s        r   Ú_set_lengthrF   z   sc   € ØŒ\×Ò˜gÑ&Ô&€FØ
Œ,×
'Ò
'ØˆWŒ\Ô ¨¬Ô(9¸8ñô €Cð ×Ò˜3 !š8Ñ$Ô$Ð$Ð$Ð$r   Úassociated_datac           	      óÖ   — | j                              d¦  «        }| j                             || j         j        ||t          |¦  «        ¦  «        }|                      |dk    ¦  «         d S rA   )r!   rC   r   rD   r"   r   r#   )r   r:   rG   Úoutlenr;   s        r   Ú_process_aadrJ   ‚   sf   € ØŒ\×Ò˜gÑ&Ô&€FØ
Œ,×
'Ò
'ØˆWŒ\Ô ¨½¸_Ñ9MÔ9Mñô €Cð ×Ò˜3 !š8Ñ$Ô$Ð$Ð$Ð$r   Údatac           	      óp  — | j                              d¦  «        }| j                              dt          |¦  «        ¦  «        }| j                             ||||t          |¦  «        ¦  «        }|dk    r|                      ¦   «          t          ‚| j                              ||d         ¦  «        d d …         S )NrB   úunsigned char[]r   )r!   rC   r   r   rD   Ú_consume_errorsr   Úbuffer)r   r:   rK   rI   Úbufr;   s         r   Ú_process_datarQ   Š   sž   € ØŒ\×Ò˜gÑ&Ô&€FØ
Œ,×
Ò
Ð,­c°$©i¬iÑ
8Ô
8€CØ
Œ,×
'Ò
'¨¨S°&¸$ÅÀDÁ	Ä	Ñ
JÔ
J€CØ
ˆa‚x€xà×ÒÑ!Ô!Ð!ÝÐØŒ<×Ò˜s F¨1¤IÑ.Ô.¨q¨q¨qÔ1Ð1r   Ú
tag_lengthc           	      ó¾  — ddl m}m} t          |¦  «        }t	          | ||j        |d |t          ¦  «        }	t          ||¦  «        rt          | |	t          |¦  «        ¦  «         |D ]}
t          | |	|
¦  «         Œt          | |	|¦  «        }| j                             d¦  «        }| j                             dd¦  «        }| j                             |	||¦  «        }|                      |dk    ¦  «         || j                             ||d         ¦  «        d d …         z  }| j                             d|¦  «        }| j                             |	| j        j        ||¦  «        }|                      |dk    ¦  «         | j                             |¦  «        d d …         }t          ||¦  «        r+|                      t          |¦  «        dk    ¦  «         ||z   S ||z   S )Nr   ©r   r	   rB   rM   é   )r   r   r	   r   r>   r   r3   r   rF   r   rJ   rQ   r!   rC   r   ÚEVP_CipherFinal_exr#   rO   r5   ÚEVP_CTRL_AEAD_GET_TAG)r   r   r*   rK   rG   rR   r   r	   r   r:   ÚadÚprocessed_datarI   rP   r;   Útag_bufr+   s                    r   Ú_encryptr[   •   sñ  € ð KÐJÐJÐJÐJÐJÐJÐJå# FÑ+Ô+€KÝ
Ø�˜fœk¨5°$¸
ÅHñô €Cõ
 �&˜&Ñ!Ô!ð -Ý�G˜S¥# d¡)¤)Ñ,Ô,Ð,àð 'ð 'ˆÝ�W˜c 2Ñ&Ô&Ð&Ð&Ý" 7¨C°Ñ6Ô6€NØŒ\×Ò˜gÑ&Ô&€Fð Œ,×
Ò
Ð,¨bÑ
1Ô
1€CØ
Œ,×
)Ò
)¨#¨s°FÑ
;Ô
;€CØ×Ò˜3 !š8Ñ$Ô$Ð$Ø�g”l×)Ò)¨#¨v°a¬yÑ9Ô9¸!¸!¸!Ô<Ñ<€NØŒl×ÒÐ0°*Ñ=Ô=€GØ
Œ,×
*Ò
*ØˆWŒ\Ô/°¸Wñô €Cð ×Ò˜3 !š8Ñ$Ô$Ð$Ø
Œ,×
Ò
˜gÑ
&Ô
& q q qÔ
)€Cå�&˜&Ñ!Ô!ð $ð 	×Ò�s 3™xœx¨2š~Ñ.Ô.Ð.Ø�^Ñ#Ð#à Ñ#Ð#r   c           	      ó’  — ddl m}m} t          |¦  «        |k     rt          ‚t          ||¦  «        r|d |…         }||d …         }n|| d …         }|d | …         }t          |¦  «        }	t          | |	|j        |||t          ¦  «        }
t          ||¦  «        rt          | |
t          |¦  «        ¦  «         |D ]}t          | |
|¦  «         Œt          ||¦  «        r¸| j                             d¦  «        }| j                             dt          |¦  «        ¦  «        }| j                             |
|||t          |¦  «        ¦  «        }|dk    r|                      ¦   «          t          ‚| j                             ||d         ¦  «        d d …         }n¯t%          | |
|¦  «        }| j                             d¦  «        }| j                             dd¦  «        }| j                             |
||¦  «        }|| j                             ||d         ¦  «        d d …         z  }|dk    r|                      ¦   «          t          ‚|S )Nr   rT   rB   rM   r   rU   )r   r   r	   r   r   r   r   r>   r   r7   rF   rJ   r!   rC   r   rD   rN   rO   rQ   rV   )r   r   r*   rK   rG   rR   r   r	   r+   r   r:   rX   rI   rP   r;   rY   s                   r   Ú_decryptr]   Ä   s[  € ð KÐJÐJÐJÐJÐJÐJÐJå
ˆ4�y„y�:ÒÐÝÐå�&˜&Ñ!Ô!ð "ð �;�J�;ÔˆØ�J�K�KÔ ˆˆà�J�;�<�<Ô ˆØ�L�j�[�LÔ!ˆÝ# FÑ+Ô+€KÝ
Ø�˜fœk¨5°#°zÅ8ñô €Cõ
 �&˜&Ñ!Ô!ð -Ý�G˜S¥# d¡)¤)Ñ,Ô,Ð,àð 'ð 'ˆÝ�W˜c 2Ñ&Ô&Ð&Ð&õ �&˜&Ñ!Ô!ð Ø”×!Ò! 'Ñ*Ô*ˆØŒl×ÒÐ0µ#°d±)´)Ñ<Ô<ˆØŒl×+Ò+¨C°°f¸dÅCÈÁIÄIÑNÔNˆØ�!Š8ˆ8Ø×#Ò#Ñ%Ô%Ð%ÝÐà œ×,Ò,¨S°&¸´)Ñ<Ô<¸Q¸Q¸QÔ?ˆˆå& w°°TÑ:Ô:ˆØ”×!Ò! 'Ñ*Ô*ˆàŒl×ÒÐ0°"Ñ5Ô5ˆØŒl×-Ò-¨c°3¸Ñ?Ô?ˆØ˜'œ,×-Ò-¨c°6¸!´9Ñ=Ô=¸a¸a¸aÔ@Ñ@ˆØ�!Š8ˆ8Ø×#Ò#Ñ%Ô%Ð%ÝÐàÐr   )ÚtypingÚcryptography.exceptionsr   ÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.backendr   r   r   r   r   r	   r
   ÚUnionr   r3   r7   Úbytesr   r(   ÚOptionalr2   r>   rF   rJ   rQ   ÚListr[   r]   © r   r   ú<module>rg      s˜  ðð
 €€€à .Ð .Ð .Ð .Ð .Ð .ð 
Ôð ØDÐDÐDÐDÐDÐDðð ð ð ð ð ð ð ð ð ð ð ð ð ð ”,Ø�˜ Ð)9Ð9ô€Kð €Ø€ðA˜mð A°ð Að Að Að Að,˜Uð ¨Yð ð ð ð ð 5Øð5àð5ð 
ð5ð ð	5ð
 
Œ˜Ô	ð5ð ð5ð ð5ð 5ð 5ð 5ðp%˜ð %°3ð %¸4ð %ð %ð %ð %ð%˜)ð %¸5ð %ÀTð %ð %ð %ð %ð2˜9ð 2°ð 2¸5ð 2ð 2ð 2ð 2ð,$Øð,$àð,$ð ð,$ð ð	,$ð
 ”[ Ô'ð,$ð ð,$ð ð,$ð ,$ð ,$ð ,$ð^7Øð7àð7ð ð7ð ð	7ð
 ”[ Ô'ð7ð ð7ð ð7ð 7ð 7ð 7ð 7ð 7r   