
     h /                         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dS )    N)
exceptionsutils)aead)backend)	FixedPoolc                       e Zd ZdZdefdZedefd            Zd Zdeded	e	j
        e         defd
Zdeded	e	j
        e         defdZdeded	eddfdZdS )ChaCha20Poly1305keyc                 $   t          j        |           s$t          j        dt          j        j                  t          j        d|           t          |          dk    rt          d          || _
        t          | j                  | _        d S )Nz<ChaCha20Poly1305 is not supported by this version of OpenSSLr       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     g/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/ciphers/aead.py__init__zChaCha20Poly1305.__init__   s    ,T22 	1N#6   	uc***s88r>>EFFF	t//


    returnc                 *    t          j        d          S )Nr   )osurandom)clss    r   generate_keyzChaCha20Poly1305.generate_key    s    z"~~r   c                 B    t          j        t          | | j                  S N)r   _aead_create_ctxr   r   )r   s    r   r   zChaCha20Poly1305._create_fn$   s    $WdDI>>>r   noncedataassociated_datac           
      \   |d}t          |          | j        k    st          |          | j        k    rt          d          |                     |||           | j                                        5 }t          j        t          | |||gd|          cd d d            S # 1 swxY w Y   d S Nr   5Data or associated data too long. Max 2**31 - 1 bytes   )	r   	_MAX_SIZEOverflowError_check_paramsr   acquirer   _encryptr   r   r&   r'   r(   ctxs        r   encryptzChaCha20Poly1305.encrypt'   s     "!Ot99t~%%_)=)=)N)NG   	5$888Z!! 	S=ud_,=r3 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   4 B!!B%(B%c           
          |d}|                      |||           | j                                        5 }t          j        t
          | |||gd|          cd d d            S # 1 swxY w Y   d S Nr   r,   )r/   r   r0   r   _decryptr   r2   s        r   decryptzChaCha20Poly1305.decrypt<   s     "!O5$888Z!! 	S=ud_,=r3 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s    A""A&)A&Nc                     t          j        d|           t          j        d|           t          j        d|           t          |          dk    rt          d          d S )Nr&   r'   r(      zNonce must be 12 bytesr   r   r   r   r   r&   r'   r(   s       r   r/   zChaCha20Poly1305._check_paramsK   sf     	w...vt,,,0/BBBu::5666 r   )__name__
__module____qualname__r-   bytesr   classmethodr"   r   typingOptionalr4   r8   r/    r   r   r	   r	      s&       I0E 0 0 0 0 U    [? ? ?   /	
 
   *   /	
 
   
7
7 
7 	
7
 

7 
7 
7 
7 
7 
7r   r	   c                       e Zd ZdZddedefdZededefd            Zd	ed
ede	j
        e         defdZd	ed
ede	j
        e         defdZd	ededdfdZd	ed
ededdfdZdS )AESCCMr
   r,   r   
tag_lengthc                 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,      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   rG   s      r   r   zAESCCM.__init__[   s    uc***s88<''HIII	*c** 	=;<<<6661222%,T22 	1D#6  	 	r   
bit_lengthr   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 256rM   rP   rQ   rR   r   r   r    r!   rT   s     r   r"   zAESCCM.generate_keyo   Q    *c** 	=;<<<_,,BCCCz*/***r   r&   r'   r(   c                 D   |d}t          |          | j        k    st          |          | j        k    rt          d          |                     |||           |                     |t          |                     t          j        t          | |||g| j                  S )Nr   r+   )	r   r-   r.   r/   _validate_lengthsr   r1   r   rS   r<   s       r   r4   zAESCCM.encrypty   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   )r/   r   r7   r   rS   r<   s       r   r8   zAESCCM.decrypt   sN     "!O5$888}T5$(94;K
 
 	
r   data_lenNc                 `    dt          |          z
  }dd|z  z  |k     rt          d          d S )N      rM   zData too long for nonce)r   r   )r   r&   ra   l_vals       r   r_   zAESCCM._validate_lengths   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 bytesr;   r<   s       r   r/   zAESCCM._check_params   sz     	w...vt,,,0/BBBCJJ$$$$"$$$$CDDD %$r   )r,   )r=   r>   r?   r-   r@   rQ   r   rA   r"   rB   rC   r4   r8   r_   r/   rD   r   r   rF   rF   X   sW       I E s    ( +c +e + + + [+

 
  /	

 

 
 
 
*

 
  /	

 

 
 
 
8u 8 8 8 8 8 8EE"'E:?E	E E E E E Er   rF   c                       e Zd ZdZdefdZededefd            Zdeded	e	j
        e         defd
Zdeded	e	j
        e         defdZdeded	eddfdZdS )AESGCMr
   r   c                 ~    t          j        d|           t          |          dvrt          d          || _        d S )Nr   rI   z)AESGCM key must be 128, 192, or 256 bits.)r   r   r   r   r   r   s     r   r   zAESGCM.__init__   s@    uc***s88<''HIII			r   rT   r   c                     t          |t                    st          d          |dvrt          d          t	          j        |dz            S rV   r[   r\   s     r   r"   zAESGCM.generate_key   r]   r   r&   r'   r(   c                     |d}t          |          | j        k    st          |          | j        k    rt          d          |                     |||           t	          j        t          | |||gd          S r*   r   r-   r.   r/   r   r1   r   r<   s       r   r4   zAESGCM.encrypt        "!Ot99t~%%_)=)=)N)NG   	5$888}WdE4/9JBOOOr   c                 v    |d}|                      |||           t          j        t          | |||gd          S r6   r/   r   r7   r   r<   s       r   r8   zAESGCM.decrypt   D     "!O5$888}WdE4/9JBOOOr   Nc                     t          j        d|           t          j        d|           t          j        d|           t          |          dk     st          |          dk    rt          d          d S )Nr&   r'   r(   rM   rX   z%Nonce must be between 8 and 128 bytesr;   r<   s       r   r/   zAESGCM._check_params   st     	w...vt,,,0/BBBu::>>SZZ#--DEEE .-r   r=   r>   r?   r-   r@   r   rA   rQ   r"   rB   rC   r4   r8   r/   rD   r   r   rj   rj      s8       IE     +c +e + + + [+PP P  /	P
 
P P P P$
P
P 
P  /	
P
 

P 
P 
P 
P
F
F 
F 	
F
 

F 
F 
F 
F 
F 
Fr   rj   c                       e Zd ZdZdefdZededefd            Zdeded	e	j
        e         defd
Zdeded	e	j
        e         defdZdeded	eddfdZdS )AESOCB3r
   r   c                     t          j        d|           t          |          dvrt          d          || _        t          j        |           s$t          j        dt          j	        j
                  d S )Nr   rI   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__   sz    uc***s88<''IJJJ	,T22 	1B#6  	 	r   rT   r   c                     t          |t                    st          d          |dvrt          d          t	          j        |dz            S rV   r[   r\   s     r   r"   zAESOCB3.generate_key   r]   r   r&   r'   r(   c                     |d}t          |          | j        k    st          |          | j        k    rt          d          |                     |||           t	          j        t          | |||gd          S r*   rn   r<   s       r   r4   zAESOCB3.encrypt  ro   r   c                 v    |d}|                      |||           t          j        t          | |||gd          S r6   rq   r<   s       r   r8   zAESOCB3.decrypt  rr   r   Nc                     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:   rc   z%Nonce must be between 12 and 15 bytesr;   r<   s       r   r/   zAESOCB3._check_params$  sq     	w...vt,,,0/BBBu::??c%jj2ooDEEE .or   rt   rD   r   r   rv   rv      s8       IE     +c +e + + + [+PP P  /	P
 
P P P P$
P
P 
P  /	
P
 

P 
P 
P 
P
F
F 
F 	
F
 

F 
F 
F 
F 
F 
Fr   rv   c                       e Zd ZdZdefdZededefd            Zdede	j
        e	j        e                  defd	Zdede	j
        e	j        e                  defd
Zdede	j        e         ddfdZdS )AESSIVr
   r   c                     t          j        d|           t          |          dvrt          d          || _        t          j        |           s$t          j        dt          j	        j
                  d S )Nr   )r   0   @   z)AESSIV key must be 256, 384, or 512 bits.z3AES-SIV is not supported by this version of OpenSSLrx   r   s     r   r   zAESSIV.__init__4  sz    uc***s88<''HIII	,T22 	1E#6  	 	r   rT   r   c                     t          |t                    st          d          |dvrt          d          t	          j        |dz            S )NrW   )rZ   i  i   z#bit_length must be 256, 384, or 512rM   r[   r\   s     r   r"   zAESSIV.generate_keyA  r]   r   r'   r(   c                      |g }                      ||           t          |           j        k    st           fd|D                       rt	          d          t          j        t           d||d          S )Nc              3   H   K   | ]}t          |          j        k    V  d S r$   )r   r-   ).0adr   s     r   	<genexpr>z!AESSIV.encrypt.<locals>.<genexpr>U  sA       -
 -
)+CGGdn$-
 -
 -
 -
 -
 -
r   r+   r   r,   )r/   r   r-   anyr.   r   r1   r   r   r'   r(   s   `  r   r4   zAESSIV.encryptK  s    
 " O4111t99t~%% -
 -
 -
 -
/>-
 -
 -
 *
 *
%  G   }WdCKKKr   c                 r    |g }|                      ||           t          j        t          | d||d          S r6   rq   r   s      r   r8   zAESSIV.decrypt_  s?    
 " O4111}WdCKKKr   Nc                     t          j        d|           t          |          dk    rt          d          t	          |t
                    st          d          |D ]}t          j        d|           d S )Nr'   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   rP   listrR   )r   r'   r(   xs       r   r/   zAESSIV._check_paramsk  s    
 	vt,,,t99>>;<<</400 	N   ! 	B 	BA"#=qAAAA	B 	Br   )r=   r>   r?   r-   r@   r   rA   rQ   r"   rB   rC   Listr4   r8   r/   rD   r   r   r~   r~   1  s,       IE     +c +e + + + [+LL  U);<L 
	L L L L(
L
L  U);<
L 
	
L 
L 
L 
LBB  U+B 
	B B B B B Br   r~   )r   rB   cryptographyr   r   $cryptography.hazmat.backends.opensslr   ,cryptography.hazmat.backends.openssl.backendr   "cryptography.hazmat.bindings._rustr   r	   rF   rj   rv   r~   rD   r   r   <module>r      s   
			  * * * * * * * * 5 5 5 5 5 5 @ @ @ @ @ @ 8 8 8 8 8 8F7 F7 F7 F7 F7 F7 F7 F7R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~BF BF BF BF BF BF BF BFJHB HB HB HB HB HB HB HB HB HBr   