File: //lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/aead.cpython-310.pyc
o
-&%aD � @ sP d dl mZ dZd Zdd� Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dd� Z
dS )� )�
InvalidTag� c C sn ddl m}m}m} t| |�rdS t| |�r#d�t| j�d ��d�S t| |�s*J �d�t| j�d ��d�S )Nr )�AESCCM�AESGCM�ChaCha20Poly1305s chacha20-poly1305z
aes-{}-ccm� �asciiz
aes-{}-gcm) �+cryptography.hazmat.primitives.ciphers.aeadr r r �
isinstance�format�len�_key�encode)�cipherr r r � r �K/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/aead.py�_aead_cipher_name
s
r c
C sr | j �|�}| �|| jjk� | j �� }| j�|| j j�}| j �||| jj| jj| jjt |t
k��} | �| dk� | j �|t|��} | �| dk� | j �
|| j jt|�| jj�} | �| dk� |tkrx| j �
|| j jt|�|�} | �| dk� n|�d�r�| j �
|| j j|| jj�} | �| dk� | j�|�}
| j�|�}| j �|| jj| jj||
t |t
k��} | �| dk� |S )Nr s -ccm)�_lib�EVP_get_cipherbyname�openssl_assert�_ffi�NULL�EVP_CIPHER_CTX_new�gc�EVP_CIPHER_CTX_free�EVP_CipherInit_ex�int�_ENCRYPT�EVP_CIPHER_CTX_set_key_lengthr �EVP_CIPHER_CTX_ctrl�EVP_CTRL_AEAD_SET_IVLEN�_DECRYPT�EVP_CTRL_AEAD_SET_TAG�endswith�from_buffer)�backend�cipher_name�key�nonce�tag�tag_len� operation�
evp_cipher�ctx�res� nonce_ptr�key_ptrr r r �_aead_setup sX
���
�
�r1 c C s: | j �d�}| j�|| j j|| j j|�}| �|dk� d S �N�int *r )r �newr �EVP_CipherUpdater r )r% r- �data_len�intptrr. r r r �_set_lengthM �
�r8 c C s: | j �d�}| j�|| j j||t|��}| �|dk� d S r2 )r r4 r r5 r r r )r% r- �associated_data�outlenr. r r r �_process_aadU r9 r<