관리-도구
편집 파일: aead.cpython-39.pyc
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 t| |�s|J �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&