a ¹ae ã @ sP d dl mZ dZd Zdd„ Zdd„ Zdd„ Zd d „ Zdd„ Zd d„ Z dd„ Z dS )é )Ú InvalidTagé c C sŒ ddl m}m}m}m} t| |ƒr&dS t| |ƒrJd t| jƒd ¡ d¡S t| |ƒrnd t| jƒd ¡ d¡S d t| jƒd ¡ d¡S d S ) Nr )ÚAESCCMÚAESGCMÚAESOCB3ÚChaCha20Poly1305s chacha20-poly1305z aes-{}-ccmé Úasciiz aes-{}-ocbz aes-{}-gcm) Ú+cryptography.hazmat.primitives.ciphers.aeadr r r r Ú isinstanceÚformatÚlenÚ_keyÚencode)Úcipherr r r r © r úO/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/aead.pyÚ_aead_cipher_name s r c C st | j |¡}| || jjk¡ | j ¡ }| j || j j¡}| j ||| jj| jj| jjt |t kƒ¡} | | dk¡ | j |t|ƒ¡} | | dk¡ | j || j jt|ƒ| jj¡} | | dk¡ |tkrð| j || j jt|ƒ|¡} | | dk¡ n4| d¡r$| j || j j|| jj¡} | | dk¡ | j |¡} | j |¡}| j || jj| jj|| t |t kƒ¡} | | dk¡ |S )Nr s -ccm)Ú_libZEVP_get_cipherbynameÚopenssl_assertÚ_ffiÚNULLZEVP_CIPHER_CTX_newÚgcZEVP_CIPHER_CTX_freeZEVP_CipherInit_exÚintÚ_ENCRYPTZEVP_CIPHER_CTX_set_key_lengthr ÚEVP_CIPHER_CTX_ctrlZEVP_CTRL_AEAD_SET_IVLENÚ_DECRYPTZEVP_CTRL_AEAD_SET_TAGÚendswithZfrom_buffer)ÚbackendÚcipher_nameÚkeyÚnonceÚtagZtag_lenZ operationZ evp_cipherÚctxÚresZ nonce_ptrZkey_ptrr r r Ú_aead_setup sX úüÿÿ úr% c C s: | j d¡}| j || j j|| j j|¡}| |dk¡ d S ©Núint *r )r Únewr ÚEVP_CipherUpdater r )r r# Zdata_lenZintptrr$ r r r Ú_set_lengthP s ÿr* c C s: | j d¡}| j || j j||t|ƒ¡}| |dk¡ d S r&