File manager - Edit - /usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/ciphers.cpython-310.pyc
Back
o g�e$ � @ s| d dl mZ d dlmZmZmZ d dlmZ d dlm Z e� ej�e� ej�e� ej �e� ej�G dd� de�����ZdS )� )�utils)� InvalidTag�UnsupportedAlgorithm�_Reasons)�ciphers)�modesc @ s� e Zd ZdZdZdZdd� Zdedefdd �Zdede fd d�Z defdd �Zdedefdd�Zdeddfdd�Z e�d�ZdS )�_CipherContext� r i���?c C s� || _ || _|| _|| _d | _t| jtj�r| jjd | _ nd| _ | j j �� }| j j� || j j j�}| j j}z|t|�t|�f }W n tyY td�|j|rS|jn|�tj��w || j ||�}|| j jjkr�d�|�} |d urx| d�|�7 } | d�| j �� �7 } t| tj��t|tj�r�| j j�|j�} n2t|tj�r�| j j�|j�} n#t|tj�r�| j j�|j �} nt|tj�r�| j j�|j �} n| j jj} | j j �!||| j jj| j jj| j jj|�}| j �"|dk� | j j �#|t$|j%��}| j �"|dk� t|tj&��r=| j j �'|| j j j(t$| �| j jj�}| j �"|dk� |j)d u�r=| j j �'|| j j j*t$|j)�|j)�}| j �"|dk� |j)| _| j j �!|| j jj| j jj| j j�|j%�| |�}| j �"|dk� | j j �+|d� || _,d S )N� r z6cipher {} in {} mode is not supported by this backend.zcipher {0.name} zin {0.name} mode z_is not supported by this backend (Your version of OpenSSL may be too old. Current version: {}.)r )-�_backend�_cipher�_mode� _operation�_tag� isinstancer �BlockCipherAlgorithm� block_size�_block_size_bytes�_lib�EVP_CIPHER_CTX_new�_ffi�gc�EVP_CIPHER_CTX_free�_cipher_registry�type�KeyErrorr �format�namer �UNSUPPORTED_CIPHER�NULL�openssl_version_textr �ModeWithInitializationVector�from_buffer�initialization_vector� ModeWithTweak�tweak� ModeWithNonce�nonce�EVP_CipherInit_ex�openssl_assert�EVP_CIPHER_CTX_set_key_length�len�key�GCM�EVP_CIPHER_CTX_ctrl�EVP_CTRL_AEAD_SET_IVLEN�tag�EVP_CTRL_AEAD_SET_TAG�EVP_CIPHER_CTX_set_padding�_ctx)�self�backend�cipher�mode� operation�ctx�registry�adapter� evp_cipher�msg�iv_nonce�res� r@ �N/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ciphers.py�__init__ s� ���� �� � ���� z_CipherContext.__init__�data�returnc C s2 t t|�| j d �}| �||�}t|d |� �S )Nr )� bytearrayr+ r �update_into�bytes)r4 rC �buf�nr@ r@ rA �updatey s z_CipherContext.updatec C s� t |�}t |�|| j d k rtd�t |�| j d ���d}d}| jj�d�}| jjj|dd�}| jj�|�}||kr}|| } || } t| j || �}| jj �| j| || |�}|dkrgt | jtj�rgtd��| j�|dk� ||7 }||d 7 }||ks<|S )Nr z1buffer must be at least {} bytes for this payloadr �int *T)�require_writablezeIn XTS mode you must supply at least a full block in the first update call. For AES this is 16 bytes.)r+ r � ValueErrorr r r �newr"