<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
l_                 @   sd   d dl mZmZmZ d dlmZ dZd Zdd Zdd Z	dd	 Z
d
d Zdd Zdd Zdd ZdS )    )absolute_importdivisionprint_function)
InvalidTag   c             C   sr   ddl m}m}m} t| |r"dS t| |rFdjt| jd jdS t| |sTt	djt| jd j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   /usr/lib64/python3.6/aead.py_aead_cipher_name   s    

r   c          	   C   st  | j j|}| j|| jjk | j j }| jj|| j j}| j j||| jj| jj| jjt	|t
k}	| j|	dk | j j|t|}	| j|	dk | j j|| j jt|| jj}	| j|	dk |tkr| j j|| j jt||}	| j|	dk n4|jdr$| j j|| j j|| jj}	| j|	dk | jj|}
| jj|}| j j|| jj| jj||
t	|t
k}	| j|	dk |S )Nr   s   -ccm)_libZEVP_get_cipherbynameopenssl_assert_ffiNULLZEVP_CIPHER_CTX_newgcZEVP_CIPHER_CTX_freeZEVP_CipherInit_exint_ENCRYPTZEVP_CIPHER_CTX_set_key_lengthr   EVP_CIPHER_CTX_ctrlZEVP_CTRL_AEAD_SET_IVLEN_DECRYPTZEVP_CTRL_AEAD_SET_TAGendswithZfrom_buffer)backendcipher_namekeynoncetagZtag_lenZ	operationZ
evp_cipherctxresZ	nonce_ptrZkey_ptrr   r   r   _aead_setup   sN    

r(   c             C   s:   | j jd}| jj|| j j|| j j|}| j|dk d S )Nzint *r   )r   newr   EVP_CipherUpdater   r   )r!   r&   Zdata_lenZintptrr'   r   r   r   _set_lengthN   s    r+   c             C   s:   | j jd}| jj|| j j||t|}| j|dk d S )Nzint *r   )r   r)   r   r*   r   r   r   )r!   r&   associated_dataoutlenr'   r   r   r   _process_aadV   s    r.   c             C   s^   | j jd}| j jdt|}| jj||||t|}| j|dk | j j||d d d  S )Nzint *zunsigned char[]r   )r   r)   r   r   r*   r   buffer)r!   r&   datar-   bufr'   r   r   r   _process_data^   s
    r2   c             C   s   ddl m} t|}t| ||j|d |t}t||rDt| |t| t	| || t
| ||}	| jjd}
| jj|| jj|
}| j|dk | j|
d dk | jjd|}| jj|| jj||}| j|dk | jj|d d  }|	| S )Nr   )r   zint *zunsigned char[])r   r   r   r(   r   r   r   r+   r   r.   r2   r   r)   r   EVP_CipherFinal_exr   r   r   ZEVP_CTRL_AEAD_GET_TAGr/   )r!   r   r$   r0   r,   
tag_lengthr   r"   r&   processed_datar-   r'   Ztag_bufr%   r   r   r   _encryptf   s$    
r6   c             C   s2  ddl m} t||k rt|| d  }|d |  }t|}t| ||j|||t}	t||rpt	| |	t| t
| |	| t||r| jjd}
| jjdt|}| jj|	||
|t|}|dkr| j  t| jj||
d d d  }nBt| |	|}| jjd}
| jj|	| jj|
}|dkr.| j  t|S )Nr   )r   zint *zunsigned char[]r   )r   r   r   r   r   r(   r   r   r   r+   r.   r   r)   r   r*   Z_consume_errorsr/   r2   r3   r   )r!   r   r$   r0   r,   r4   r   r%   r"   r&   r-   r1   r'   r5   r   r   r   _decrypt   s4    


r7   N)Z
__future__r   r   r   Zcryptography.exceptionsr   r   r   r   r(   r+   r.   r2   r6   r7   r   r   r   r   <module>   s   0