
    )Jf                        d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ g dZej        j        Zej        j        Zej        j        Zej        j        Z G d d	          Z G d
 d          ZdS )    )annotationsN)
exceptionsutils)aead)backend)openssl)ChaCha20Poly1305AESCCMAESGCM	AESGCMSIVAESOCB3AESSIVc                  T    e Zd ZdZdddZedd
            ZddZddZddZ	ddZ
dS )r
      keybytes
tag_lengthintc                j   t          j        d|           t          |          dvrt          d          || _        t          |t                    st          d          |dvrt          d          || _        t          j
        |           s$t          j        dt          j        j                  d S )Nr   r          z)AESCCM key must be 128, 192, or 256 bits.ztag_length must be an integer)         
         r   zInvalid tag_lengthz2AESCCM is not supported by this version of OpenSSL)r   _check_byteslikelen
ValueError_key
isinstancer   	TypeError_tag_lengthr   aead_cipher_supportedr   UnsupportedAlgorithm_ReasonsUNSUPPORTED_CIPHER)selfr   r   s      n/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/ciphers/aead.py__init__zAESCCM.__init__    s    uc***s88<''HIII	*c** 	=;<<<6661222%,T22 	1D#6  	 	    
bit_lengthreturnc                    t          |t                    st          d          |dvrt          d          t	          j        |dz            S Nzbit_length must be an integer)         z#bit_length must be 128, 192, or 256r   r$   r   r%   r"   osurandomclsr/   s     r,   generate_keyzAESCCM.generate_key4   Q    *c** 	=;<<<_,,BCCCz*/***r.   noncedataassociated_databytes | Nonec                D   |d}t          |          | j        k    st          |          | j        k    rt          d          |                     |||           |                     |t          |                     t          j        t          | |||g| j                  S )Nr.   5Data or associated data too long. Max 2**31 - 1 bytes)	r!   	_MAX_SIZEOverflowError_check_params_validate_lengthsr   _encryptr   r&   r+   r=   r>   r?   s       r,   encryptzAESCCM.encrypt>   s     "!Ot99t~%%_)=)=)N)NG   	5$888uc$ii000}T5$(94;K
 
 	
r.   c                    |d}|                      |||           t          j        t          | |||g| j                  S )Nr.   )rE   r   _decryptr   r&   rH   s       r,   decryptzAESCCM.decryptS   sN     "!O5$888}T5$(94;K
 
 	
r.   data_lenNonec                `    dt          |          z
  }dd|z  z  |k     rt          d          d S )N      r   zData too long for nonce)r!   r"   )r+   r=   rM   l_vals       r,   rF   zAESCCM._validate_lengthsa   s>     SZZUh&&6777 '&r.   c                    t          j        d|           t          j        d|           t          j        d|           dt          |          cxk    rdk    sn t          d          d S )Nr=   r>   r?         z$Nonce must be between 7 and 13 bytesr   r    r!   r"   rH   s       r,   rE   zAESCCM._check_paramsh   sz     	w...vt,,,0/BBBCJJ$$$$"$$$$CDDD %$r.   N)r   )r   r   r   r   r/   r   r0   r   r=   r   r>   r   r?   r@   r0   r   )r=   r   rM   r   r0   rN   r=   r   r>   r   r?   r   r0   rN   )__name__
__module____qualname__rC   r-   classmethodr;   rI   rL   rF   rE    r.   r,   r
   r
      s        I    ( + + + [+
 
 
 
*
 
 
 
8 8 8 8E E E E E Er.   r
   c                  J    e Zd ZdZddZedd            ZddZddZddZ	dS )r   r   r   r   c                ~    t          j        d|           t          |          dvrt          d          || _        d S )Nr   r   z)AESGCM key must be 128, 192, or 256 bits.)r   r    r!   r"   r#   )r+   r   s     r,   r-   zAESGCM.__init__u   s@    uc***s88<''HIII			r.   r/   r   r0   c                    t          |t                    st          d          |dvrt          d          t	          j        |dz            S r2   r6   r9   s     r,   r;   zAESGCM.generate_key|   r<   r.   r=   r>   r?   r@   c                    |d}t          |          | j        k    st          |          | j        k    rt          d          |                     |||           t	          j        t          | |||gd          S )Nr.   rB   r   )r!   rC   rD   rE   r   rG   r   rH   s       r,   rI   zAESGCM.encrypt   s     "!Ot99t~%%_)=)=)N)NG   	5$888}WdE4/9JBOOOr.   c                v    |d}|                      |||           t          j        t          | |||gd          S )Nr.   r   )rE   r   rK   r   rH   s       r,   rL   zAESGCM.decrypt   sD     "!O5$888}WdE4/9JBOOOr.   rN   c                    t          j        d|           t          j        d|           t          j        d|           t          |          dk     st          |          dk    rt          d          d S )Nr=   r>   r?   r   r3   z%Nonce must be between 8 and 128 bytesrV   rH   s       r,   rE   zAESGCM._check_params   st     	w...vt,,,0/BBBu::>>SZZ#--DEEE .-r.   N)r   r   rW   rX   rY   )
rZ   r[   r\   rC   r-   r]   r;   rI   rL   rE   r^   r.   r,   r   r   r   s        I    + + + [+P P P P$
P 
P 
P 
P
F 
F 
F 
F 
F 
Fr.   r   )
__future__r   r7   cryptographyr   r   $cryptography.hazmat.backends.opensslr   ,cryptography.hazmat.backends.openssl.backendr   "cryptography.hazmat.bindings._rustr   rust_openssl__all__r	   r   r   r   r
   r   r^   r.   r,   <module>rl      s%  
 # " " " " " 				 * * * * * * * * 5 5 5 5 5 5 @ @ @ @ @ @ F F F F F F    $5 			!


#'	RE RE RE RE RE RE RE REj<F <F <F <F <F <F <F <F <F <Fr.   