
    >OOf                    ,   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y)    )annotationsN)
exceptionsutils)aead)backend)openssl)ChaCha20Poly1305AESCCMAESGCM	AESGCMSIVAESOCB3AESSIVc                  |    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
y)r
   c                V   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                        y )Nkey          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
isinstanceint	TypeError_tag_lengthr   aead_cipher_supportedr   UnsupportedAlgorithm_ReasonsUNSUPPORTED_CIPHER)selfr   
tag_lengths      l/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py__init__zAESCCM.__init__    s    uc*s8<'HII	*c*;<<66122%,,T211D##66  3    c                    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cls
bit_lengths     r+   generate_keyzAESCCM.generate_key4   ?    *c*;<<_,BCCzz*/**r-   c                .   |d}t        |      | j                  kD  st        |      | j                  kD  rt        d      | j                  |||       | j	                  |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)   noncedataassociated_datas       r+   encryptzAESCCM.encrypt>   s     "!Ot9t~~%_)=)NG  	5$8uc$i0}}T5$(94;K;K
 	
r-   c                    |d}| j                  |||       t        j                  t        | |||g| j                        S )Nr-   )r?   r   _decryptr   r$   rB   s       r+   decryptzAESCCM.decryptS   sH     "!O5$8}}T5$(94;K;K
 	
r-   c                L    dt        |      z
  }dd|z  z  |k  rt        d      y )N      r   zData too long for nonce)r   r   )r)   rC   data_lenl_vals       r+   r@   zAESCCM._validate_lengthsa   s3     SZUh&677 'r-   c                    t        j                  d|       t        j                  d|       t        j                  d|       dt        |      cxk  rdk  st        d       t        d      y )NrC   rD   rE         z$Nonce must be between 7 and 13 bytesr   r   r   r   rB   s       r+   r?   zAESCCM._check_paramsh   sh     	w.vt,0/BCJ$"$CDD %CDD %r-   N)r   )r   bytesr*   r"   r8   r"   returnrS   rC   rS   rD   rS   rE   zbytes | NonerU   rS   )rC   rS   rM   r"   rU   NonerC   rS   rD   rS   rE   rS   rU   rW   )__name__
__module____qualname__r=   r,   classmethodr9   rF   rI   r@   r?    r-   r+   r
   r
      s    I( + +

 
 &	

 

*

 
 &	

 

8EE"'E:?E	Er-   r
   c                  r    e Zd ZdZddZed	d       Z	 	 	 	 	 	 	 	 d
dZ	 	 	 	 	 	 	 	 d
dZ	 	 	 	 	 	 	 	 ddZ	y)r   r   c                n    t        j                  d|       t        |      dvrt        d      || _        y )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   s1    uc*s8<'HII	r-   c                    t        |t              st        d      |dvrt        d      t	        j
                  |dz        S r/   r3   r6   s     r+   r9   zAESGCM.generate_key|   r:   r-   c                    |d}t        |      | j                  kD  st        |      | j                  kD  rt        d      | j                  |||       t	        j
                  t        | |||gd      S )Nr-   r<   r   )r   r=   r>   r?   r   rA   r   rB   s       r+   rF   zAESGCM.encrypt   so     "!Ot9t~~%_)=)NG  	5$8}}WdE4/9JBOOr-   c                n    |d}| j                  |||       t        j                  t        | |||gd      S )Nr-   r   )r?   r   rH   r   rB   s       r+   rI   zAESGCM.decrypt   s=     "!O5$8}}WdE4/9JBOOr-   c                    t        j                  d|       t        j                  d|       t        j                  d|       t        |      dk  st        |      dkD  rt        d      y )NrC   rD   rE   r   r0   z%Nonce must be between 8 and 128 bytesrR   rB   s       r+   r?   zAESGCM._check_params   s\     	w.vt,0/Bu:>SZ#-DEE .r-   N)r   rS   rT   rV   rX   )
rY   rZ   r[   r=   r,   r\   r9   rF   rI   r?   r]   r-   r+   r   r   r   s    I + +PP P &	P
 
P$
P
P 
P &	
P
 

P
F
F 
F 	
F
 

Fr-   r   )
__future__r   r4   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>rk      s   
 # 	 * 5 @ F  $$55 				!	!



#
#''	RE REj<F <Fr-   