File: //lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/aead.cpython-38.pyc
U
�e�]v � @ sd d dl mZmZmZ d dlmZ dZd Zdd� Zdd� Z dd � Z
d
d� Zdd
� Zdd� Z
dd� ZdS )� )�absolute_import�division�print_function)�
InvalidTag� c C sr ddl m}m}m} t| |�r"dS t| |�rFd�t| j�d ��d�S t| |�sTt �d�t| j�d ��d�S 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�AssertionError)�cipherr r r � r �K/usr/lib/python3/dist-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 sd
� � � �
�r( c C s: | j �d�}| j�|| j j|| j j|�}| �|dk� d S �N�int *r )r �newr �EVP_CipherUpdater r )r! r&