Ë
    U¼Sfð  ã                  óz  — d dl mZ d dlZd dlmZ ej
                  rd dlmZ d dlm	Z	m
Z
 ej                  e	e
f   Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zd	Zd Zdd
„Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Z	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)é    )ÚannotationsN)Ú
InvalidTag)ÚBackend©ÚAESCCMÚAESGCMc                ó|   — t        |«      }| j                  j                  |«      | j                  j                  k7  S ©N)Ú_evp_cipher_cipher_nameÚ_libÚEVP_get_cipherbynameÚ_ffiÚNULL)ÚbackendÚcipherÚcipher_names      úhC:\Users\user\Documents\project_loop\venv\Lib\site-packages\cryptography/hazmat/backends/openssl/aead.pyÚ_aead_cipher_supportedr      s0   € Ü)¨&Ó1€Kà�<‰<×,Ñ,¨[Ó9¸W¿\¹\×=NÑ=NÑNÐNó    c                ó"   — t        | |||||«      S r
   )Ú_evp_cipher_encrypt©r   r   ÚnonceÚdataÚassociated_dataÚ
tag_lengths         r   Ú_encryptr      ó   € ô Ø�˜  o°zóð r   c                ó"   — t        | |||||«      S r
   )Ú_evp_cipher_decryptr   s         r   Ú_decryptr!   (   r   r   é   c                óò   — ddl m}m} t        | |«      r+dt	        | j
                  «      dz  › d�j                  d«      S t        | |«      sJ ‚dt	        | j
                  «      dz  › d�j                  d«      S )Nr   r   zaes-é   z-ccmÚasciiz-gcm)Ú+cryptography.hazmat.primitives.ciphers.aeadr   r   Ú
isinstanceÚlenÚ_keyÚencode)r   r   r   s      r   r   r   9   sr   € ÷ô
 �&˜&Ô!Ø”c˜&Ÿ+™+Ó&¨Ñ*Ð+¨4Ð0×7Ñ7¸Ó@Ð@ä˜& &Ô)Ñ)Ø”c˜&Ÿ+™+Ó&¨Ñ*Ð+¨4Ð0×7Ñ7¸Ó@Ð@r   c                óŒ   — |j                   j                  | «      }|j                  ||j                  j                  k7  «       |S r
   )r   r   Úopenssl_assertr   r   )r   r   Ú
evp_ciphers      r   Ú_evp_cipherr.   F   s9   € Ø—‘×2Ñ2°;Ó?€JØ×Ñ˜:¨¯©×):Ñ):Ñ:Ô;ØÐr   c                óÈ  — t        || «      }| j                  j                  «       }| j                  j	                  || j                  j
                  «      }| j                  j                  ||| j                  j                  | j                  j                  | j                  j                  t        |t        k(  «      «      }	| j                  |	dk7  «       | j                  j                  || j                  j                  t        |«      | j                  j                  «      }	| j                  |	dk7  «       |t        k(  r|€J ‚t        | ||«       nk|j!                  d«      rZ| j                  j                  || j                  j"                  || j                  j                  «      }	| j                  |	dk7  «       | j                  j%                  |«      }
| j                  j%                  |«      }| j                  j                  || j                  j                  | j                  j                  ||
t        |t        k(  «      «      }	| j                  |	dk7  «       |S )Nr   s   -ccm)r.   r   ÚEVP_CIPHER_CTX_newr   ÚgcÚEVP_CIPHER_CTX_freeÚEVP_CipherInit_exr   ÚintÚ_ENCRYPTr,   ÚEVP_CIPHER_CTX_ctrlÚEVP_CTRL_AEAD_SET_IVLENr(   Ú_DECRYPTÚ_evp_cipher_set_tagÚendswithÚEVP_CTRL_AEAD_SET_TAGÚfrom_buffer)r   r   Úkeyr   ÚtagÚtag_lenÚ	operationr-   ÚctxÚresÚ	nonce_ptrÚkey_ptrs               r   Ú_evp_cipher_aead_setuprE   L   så  € ô ˜[¨'Ó2€JØ
�,‰,×
)Ñ
)Ó
+€CØ
�,‰,�/‰/˜#˜wŸ|™|×?Ñ?Ó
@€CØ
�,‰,×
(Ñ
(ØØØ�‰×ÑØ�‰×ÑØ�‰×ÑÜˆIœÑ!Ó"ó€Cð ×Ñ˜3 !™8Ô$à
�,‰,×
*Ñ
*ØØ�‰×,Ñ,ÜˆE‹
Ø�‰×Ñó	€Cð ×Ñ˜3 !™8Ô$Ø”HÒØˆÑÜ˜G S¨#Õ.Ø	×	Ñ	˜gÔ	&Ø�l‰l×.Ñ.ØØ�L‰L×.Ñ.ØØ�L‰L×Ñó	
ˆð 	×Ñ˜s a™xÔ(à—‘×(Ñ(¨Ó/€IØ�l‰l×&Ñ& sÓ+€GØ
�,‰,×
(Ñ
(ØØ�‰×ÑØ�‰×ÑØØÜˆIœÑ!Ó"ó€Cð ×Ñ˜3 !™8Ô$Ø€Jr   c                óØ   — | j                   j                  |«      }| j                  j                  || j                  j                  t        |«      |«      }| j                  |dk7  «       y )Nr   )r   r<   r   r6   r;   r(   r,   )r   rA   r>   Útag_ptrrB   s        r   r9   r9   ƒ   sU   € Ø�l‰l×&Ñ& sÓ+€GØ
�,‰,×
*Ñ
*ØˆW�\‰\×/Ñ/´°S³¸7ó€Cð ×Ñ˜3 !™8Õ$r   c                óð   — | j                   j                  d«      }| j                  j                  || j                   j                  || j                   j                  |«      }| j                  |dk7  «       y ©Núint *r   )r   Únewr   ÚEVP_CipherUpdater   r,   )r   rA   Údata_lenÚintptrrB   s        r   Ú_evp_cipher_set_lengthrO   ‹   s]   € Ø�\‰\×Ñ˜gÓ&€FØ
�,‰,×
'Ñ
'ØˆW�\‰\×Ñ ¨¯©×(9Ñ(9¸8ó€Cð ×Ñ˜3 !™8Õ$r   c           	     ó  — | j                   j                  d«      }| j                   j                  |«      }| j                  j	                  || j                   j
                  ||t        |«      «      }| j                  |dk7  «       y rI   )r   rK   r<   r   rL   r   r(   r,   )r   rA   r   ÚoutlenÚ
a_data_ptrrB   s         r   Ú_evp_cipher_process_aadrS   “   sn   € ð �\‰\×Ñ˜gÓ&€FØ—‘×)Ñ)¨/Ó:€JØ
�,‰,×
'Ñ
'ØˆW�\‰\×Ñ ¨
´C¸Ó4Hó€Cð ×Ñ˜3 !™8Õ$r   c           	     ót  — | j                   j                  d«      }| j                   j                  dt        |«      «      }| j                   j                  |«      }| j                  j                  ||||t        |«      «      }| j                  |dk7  «       | j                   j                  ||d   «      d d  S )NrJ   úunsigned char[]r   )r   rK   r(   r<   r   rL   r,   Úbuffer)r   rA   r   rQ   ÚbufÚdata_ptrrB   s          r   Ú_evp_cipher_process_datarY   ž   s—   € Ø�\‰\×Ñ˜gÓ&€FØ
�,‰,×
Ñ
Ð,¬c°$«iÓ
8€CØ�|‰|×'Ñ'¨Ó-€HØ
�,‰,×
'Ñ
'¨¨S°&¸(ÄCÈÃIÓ
N€CØ×Ñ˜3 !™8Ô$Ø�<‰<×Ñ˜s F¨1¡IÓ.©qÐ1Ð1r   c           	     ó  — ddl m} t        |«      }t        | ||j                  |d |t
        «      }t        ||«      rt        | |t        |«      «       |D ]  }	t        | ||	«       Œ t        | ||«      }
| j                  j                  d«      }| j                  j                  dd«      }| j                  j                  |||«      }| j                  |dk7  «       |
| j                  j!                  ||d   «      d d  z  }
| j                  j                  d|«      }| j                  j#                  || j                  j$                  ||«      }| j                  |dk7  «       | j                  j!                  |«      d d  }|
|z   S )Nr   ©r   rJ   rU   é   )r&   r   r   rE   r)   r5   r'   rO   r(   rS   rY   r   rK   r   ÚEVP_CipherFinal_exr,   rV   r6   ÚEVP_CTRL_AEAD_GET_TAG)r   r   r   r   r   r   r   r   rA   ÚadÚprocessed_datarQ   rW   rB   Útag_bufr>   s                   r   r   r   §   sk  € õ Cä)¨&Ó1€KÜ
 ØØØ�‰ØØØÜó€Cô �&˜&Ô!Ü˜w¨¬S°«YÔ7àò 2ˆÜ ¨¨bÕ1ð2ä-¨g°s¸DÓA€NØ�\‰\×Ñ˜gÓ&€Fð �,‰,×
Ñ
Ð,¨bÓ
1€CØ
�,‰,×
)Ñ
)¨#¨s°FÓ
;€CØ×Ñ˜3 !™8Ô$Ø�g—l‘l×)Ñ)¨#¨v°a©yÓ9¹!Ð<Ñ<€NØ�l‰l×ÑÐ0°*Ó=€GØ
�,‰,×
*Ñ
*ØˆW�\‰\×/Ñ/°¸Wó€Cð ×Ñ˜3 !™8Ô$Ø
�,‰,×
Ñ
˜gÓ
&¡qÐ
)€Cà˜CÑÐr   c           	     óð  — ddl m} t        |«      |k  rt        ‚|| d  }|d |  }t	        |«      }t        | ||j                  |||t        «      }	t        ||«      rt        | |	t        |«      «       |D ]  }
t        | |	|
«       Œ t        ||«      rÂ| j                  j                  d«      }| j                  j                  dt        |«      «      }| j                  j                  |«      }| j                  j                  |	|||t        |«      «      }|dk7  r| j!                  «        t        ‚| j                  j#                  ||d   «      d d  }|S t%        | |	|«      }| j                  j                  d«      }| j                  j                  dd«      }| j                  j'                  |	||«      }|| j                  j#                  ||d   «      d d  z  }|dk(  r| j!                  «        t        ‚|S )Nr   r[   rJ   rU   r"   r\   )r&   r   r(   r   r   rE   r)   r8   r'   rO   rS   r   rK   r<   r   rL   Ú_consume_errorsrV   rY   r]   )r   r   r   r   r   r   r   r>   r   rA   r_   rQ   rW   Úd_ptrrB   r`   s                   r   r    r    ×   sß  € õ Cä
ˆ4ƒy�:ÒÜÐà
�
ˆ{ˆ|Ð
€CØ��*�Ð€DÜ)¨&Ó1€KÜ
 ØØØ�‰ØØØÜó€Cô �&˜&Ô!Ü˜w¨¬S°«YÔ7àò 2ˆÜ ¨¨bÕ1ð2ô �&˜&Ô!Ø—‘×!Ñ! 'Ó*ˆØ�l‰l×ÑÐ0´#°d³)Ó<ˆØ—‘×(Ñ(¨Ó.ˆØ�l‰l×+Ñ+¨C°°f¸eÄSÈÃYÓOˆØ�!Š8Ø×#Ñ#Ô%ÜÐà Ÿ™×,Ñ,¨S°&¸±)Ó<¹QÐ?ˆð Ðô 2°'¸3ÀÓEˆØ—‘×!Ñ! 'Ó*ˆà�l‰l×ÑÐ0°"Ó5ˆØ�l‰l×-Ñ-¨c°3¸Ó?ˆØ˜'Ÿ,™,×-Ñ-¨c°6¸!±9Ó=¹aÐ@Ñ@ˆØ�!Š8Ø×#Ñ#Ô%ÜÐàÐr   )r   r   r   Ú
_AEADTypesÚreturnÚbool)r   r   r   re   r   Úbytesr   rh   r   zlist[bytes]r   r4   rf   rh   )r   re   rf   rh   )r   rh   r   r   )r   r   r   rh   r=   rh   r   rh   r>   zbytes | Noner?   r4   r@   r4   )r>   rh   rf   ÚNone)r   r   rM   r4   rf   ri   )r   r   r   rh   rf   ri   )r   r   r   rh   rf   rh   )Ú
__future__r   ÚtypingÚcryptography.exceptionsr   ÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.backendr   r&   r   r   ÚUnionre   r   r   r!   r5   r8   r   r.   rE   r9   rO   rS   rY   r   r    © r   r   ú<module>rq      sã  ðõ
 #ã å .à	×ÒÝD÷ð
 —‘˜f f˜nÑ-€JóOð
Øð
àð
ð ð
ð ð	
ð
 !ð
ð ð
ð ó
ð
Øð
àð
ð ð
ð ð	
ð
 !ð
ð ð
ð ó
ð €Ø€ó
Aóð4Øð4àð4ð 
ð4ð ð	4ð
 
ð4ð ð4ð ó4ón%ó%ð%Øð%Ø,1ð%à	ó%ó2ð- Øð- àð- ð ð- ð ð	- ð
 !ð- ð ð- ð ó- ð`9Øð9àð9ð ð9ð ð	9ð
 !ð9ð ð9ð ô9r   