PHP WebShell
Текущая директория: /usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__
Просмотр файла: ciphers.cpython-310.pyc
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"