
    +h#/                        d dl mZ d dl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 d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Zy)    )annotationsN)
exceptionsutils)aead)backend)	FixedPoolc                  x    e Zd ZdZd	dZed
d       Zd Z	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZ		 	 	 	 	 	 	 	 ddZ
y)ChaCha20Poly1305c                *   t        j                  |       s.t        j                  dt        j                  j
                        t        j                  d|       t        |      dk7  rt        d      || _
        t        | j                        | _        y )Nz<ChaCha20Poly1305 is not supported by this version of OpenSSLkey    z&ChaCha20Poly1305 key must be 32 bytes.)r   aead_cipher_supportedr   UnsupportedAlgorithm_ReasonsUNSUPPORTED_CIPHERr   _check_byteslikelen
ValueError_keyr   
_create_fn_poolselfr   s     ^/var/www/html/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/aead.py__init__zChaCha20Poly1305.__init__   su    ,,T211N##66  	uc*s8r>EFF	t/
    c                ,    t        j                  d      S )Nr   )osurandom)clss    r   generate_keyzChaCha20Poly1305.generate_key!   s    zz"~r   c                L    t        j                  t        | | j                        S N)r   _aead_create_ctxr   r   )r   s    r   r   zChaCha20Poly1305._create_fn%   s    $$WdDII>>r   c           
     F   |d}t        |      | j                  kD  st        |      | j                  kD  rt        d      | j                  |||       | j                  j                         5 }t        j                  t        | |||gd|      cd d d        S # 1 sw Y   y xY wNr   5Data or associated data too long. Max 2**31 - 1 bytes   )	r   	_MAX_SIZEOverflowError_check_paramsr   acquirer   _encryptr   r   noncedataassociated_datactxs        r   encryptzChaCha20Poly1305.encrypt(   s     "!Ot9t~~%_)=)NG  	5$8ZZ! 	S==ud_,=r3	 	 	s   - BB c           
         |d}| j                  |||       | j                  j                         5 }t        j                  t
        | |||gd|      cd d d        S # 1 sw Y   y xY wNr   r)   )r,   r   r-   r   _decryptr   r/   s        r   decryptzChaCha20Poly1305.decrypt=   sf     "!O5$8ZZ! 	S==ud_,=r3	 	 	s    AA%c                    t        j                  d|       t        j                  d|       t        j                  d|       t        |      dk7  rt        d      y )Nr0   r1   r2      zNonce must be 12 bytesr   r   r   r   r   r0   r1   r2   s       r   r,   zChaCha20Poly1305._check_paramsL   sR     	w.vt,0/Bu:566 r   Nr   bytes)returnr>   r0   r>   r1   r>   r2   ztyping.Optional[bytes]r?   r>   r0   r>   r1   r>   r2   r>   r?   None)__name__
__module____qualname__r*   r   classmethodr"   r   r4   r8   r,    r   r   r
   r
      s    I0  ?  0	
 
*  0	
 

7
7 
7 	
7
 

7r   r
   c                  |    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)AESCCMr   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 )Nr   r)      r   z)AESCCM key must be 128, 192, or 256 bits.ztag_length must be an integer)         
   r:      r)   zInvalid tag_lengthz2AESCCM is not supported by this version of OpenSSL)r   r   r   r   r   
isinstanceint	TypeError_tag_lengthr   r   r   r   r   r   )r   r   
tag_lengths      r   r   zAESCCM.__init__\   s    uc*s8<'HII	*c*;<<66122%,,T211D##66  3r   c                    t        |t              st        d      |dvrt        d      t	        j
                  |dz        S Nbit_length must be an integer)         z#bit_length must be 128, 192, or 256rO   rR   rS   rT   r   r   r    r!   
bit_lengths     r   r"   zAESCCM.generate_keyp   ?    *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   r(   )	r   r*   r+   r,   _validate_lengthsr   r.   r   rU   r<   s       r   r4   zAESCCM.encryptz   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   r7   r   rU   r<   s       r   r8   zAESCCM.decrypt   sH     "!O5$8}}T5$(94;K;K
 	
r   c                L    dt        |      z
  }dd|z  z  |k  rt        d      y )N      rO   zData too long for nonce)r   r   )r   r0   data_lenl_vals       r   rb   zAESCCM._validate_lengths   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 )Nr0   r1   r2         z$Nonce must be between 7 and 13 bytesr;   r<   s       r   r,   zAESCCM._check_params   sh     	w.vt,0/BCJ$"$CDD %CDD %r   N)r)   )r   r>   rV   rS   r_   rS   r?   r>   r@   )r0   r>   rg   rS   r?   rB   rA   )rC   rD   rE   r*   r   rF   r"   r4   r8   rb   r,   rG   r   r   rI   rI   Y   s    I( + +

 
 0	

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

 

8EE"'E:?E	Er   rI   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)AESGCMr   c                n    t        j                  d|       t        |      dvrt        d      || _        y )Nr   rK   z)AESGCM key must be 128, 192, or 256 bits.)r   r   r   r   r   r   s     r   r   zAESGCM.__init__   s1    uc*s8<'HII	r   c                    t        |t              st        d      |dvrt        d      t	        j
                  |dz        S rX   r]   r^   s     r   r"   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 r'   r   r*   r+   r,   r   r.   r   r<   s       r   r4   zAESGCM.encrypt   o     "!Ot9t~~%_)=)NG  	5$8}}WdE4/9JBOOr   c                n    |d}| j                  |||       t        j                  t        | |||gd      S r6   r,   r   r7   r   r<   s       r   r8   zAESGCM.decrypt   =     "!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 )Nr0   r1   r2   rO   rZ   z%Nonce must be between 8 and 128 bytesr;   r<   s       r   r,   zAESGCM._check_params   s\     	w.vt,0/Bu:>SZ#-DEE .r   Nr=   rl   r@   rA   
rC   rD   rE   r*   r   rF   r"   r4   r8   r,   rG   r   r   rn   rn      s    I + +PP P 0	P
 
P$
P
P 
P 0	
P
 

P
F
F 
F 	
F
 

Fr   rn   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)AESOCB3r   c                    t        j                  d|       t        |      dvrt        d      || _        t        j                  |       s.t        j                  dt        j                  j                        y )Nr   rK   z*AESOCB3 key must be 128, 192, or 256 bits.z0OCB3 is not supported by this version of OpenSSLr   r   r   r   r   r   r   r   r   r   r   r   s     r   r   zAESOCB3.__init__   si    uc*s8<'IJJ	,,T211B##66  3r   c                    t        |t              st        d      |dvrt        d      t	        j
                  |dz        S rX   r]   r^   s     r   r"   zAESOCB3.generate_key   r`   r   c                    |d}t        |      | j                  kD  st        |      | j                  kD  rt        d      | j                  |||       t	        j
                  t        | |||gd      S r'   rr   r<   s       r   r4   zAESOCB3.encrypt  rs   r   c                n    |d}| j                  |||       t        j                  t        | |||gd      S r6   ru   r<   s       r   r8   zAESOCB3.decrypt  rv   r   c                    t        j                  d|       t        j                  d|       t        j                  d|       t        |      dk  st        |      dkD  rt        d      y )Nr0   r1   r2   r:   re   z%Nonce must be between 12 and 15 bytesr;   r<   s       r   r,   zAESOCB3._check_params%  s[     	w.vt,0/Bu:?c%j2oDEE .r   Nr=   rl   r@   rA   rx   rG   r   r   rz   rz      s    I + +PP P 0	P
 
P$
P
P 
P 0	
P
 

P
F
F 
F 	
F
 

Fr   rz   c                  f    e Zd ZdZddZed	d       Z	 	 	 	 	 	 d
dZ	 	 	 	 	 	 d
dZ	 	 	 	 	 	 ddZ	y)AESSIVr   c                    t        j                  d|       t        |      dvrt        d      || _        t        j                  |       s.t        j                  dt        j                  j                        y )Nr   )r   0   @   z)AESSIV key must be 256, 384, or 512 bits.z3AES-SIV is not supported by this version of OpenSSLr|   r   s     r   r   zAESSIV.__init__5  si    uc*s8<'HII	,,T211E##66  3r   c                    t        |t              st        d      |dvrt        d      t	        j
                  |dz        S )NrY   )r\   i  i   z#bit_length must be 256, 384, or 512rO   r]   r^   s     r   r"   zAESSIV.generate_keyB  r`   r   c                     |g } j                  ||       t        |       j                  kD  st         fd|D              rt	        d      t        j                  t         d||d      S )Nc              3  N   K   | ]  }t        |      j                  kD    y wr$   )r   r*   ).0adr   s     r   	<genexpr>z!AESSIV.encrypt.<locals>.<genexpr>V  s#      -
)+CGdnn$-
s   "%r(   r   r)   )r,   r   r*   anyr+   r   r.   r   r   r1   r2   s   `  r   r4   zAESSIV.encryptL  sq    
 " O41t9t~~% -
/>-
 *
  G  }}WdCKKr   c                j    |g }| j                  ||       t        j                  t        | d||d      S r6   ru   r   s      r   r8   zAESSIV.decrypt`  s8    
 " O41}}WdCKKr   c                    t        j                  d|       t        |      dk(  rt        d      t	        |t
              st        d      |D ]  }t        j                  d|        y )Nr1   r   zdata must not be zero lengthz<associated_data must be a list of bytes-like objects or Nonezassociated_data elements)r   r   r   r   rR   listrT   )r   r1   r2   xs       r   r,   zAESSIV._check_paramsl  si    
 	vt,t9>;<</40N  ! 	BA""#=qA	Br   Nr=   rl   )r1   r>   r2   z#typing.Optional[typing.List[bytes]]r?   r>   )r1   r>   r2   ztyping.List[bytes]r?   rB   rx   rG   r   r   r   r   2  s    I + +LL =L 
	L(
L
L =
L 
	
LBB ,B 
	Br   r   )
__future__r   r   typingcryptographyr   r   $cryptography.hazmat.backends.opensslr   ,cryptography.hazmat.backends.openssl.backendr   "cryptography.hazmat.bindings._rustr   r
   rI   rn   rz   r   rG   r   r   <module>r      sb   
 # 	  * 5 @ 8F7 F7RRE REj<F <F~BF BFJHB HBr   