File: //usr/local/CyberCP/lib/python3.10/site-packages/asyncssh/crypto/__pycache__/chacha.cpython-310.pyc
o
�h� �
@ s� d Z ddlmZmZ ddlmZmZ ddlmZ ddl m
Z
ddlmZ ddl
mZ ddlmZ d d
lmZ e
�� r�d�dd�Zd �dd�Zd
Zdededededef
dd�Zdededefdd�Zdedededefdd�Zdededededef
dd�ZdZnczTddl m!Z! e!j"Z#e!j$Z%e!�&� Z'e!�(� Ze!j)Z*e!j+Z,dededededef
dd�Zdededefdd�Zdedededefd d�Zdededededef
d!d�ZdZW n e-e.e/fy� d"ZY nw G d#d$� d$�Z0er�ed%d&dd � d'S d'S )(z.Chacha20-Poly1305 symmetric encryption handler� )�c_ulonglong�create_string_buffer)�Optional�Tuple)�InvalidSignature)�backend)�Cipher)�ChaCha20)�Poly1305� )�register_cipher� �little� �key�data�nonce�ctr�returnc C s( t t| |rtnt| �dd��� �|�S )�8Encrypt/decrypt a block of data with the ChaCha20 cipherN)�mode)r r �_CTR_1�_CTR_0� encryptor�update)r r r r � r �I/usr/local/CyberCP/lib/python3.10/site-packages/asyncssh/crypto/chacha.py�chacha20) s
�
�r c C s t | td |d�S )�Derive a Poly1305 key� r )r �_POLY1305_KEYBYTES)r r r r r �poly1305_key/ � r! c C s t �t| |�|�S �z*Compute a Poly1305 tag for a block of data)r
�generate_tagr! )r r r r r r �poly13054 r"