
    _f#/                        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dS )    )annotationsN)
exceptionsutils)aead)backend)	FixedPoolc                  P    e Zd ZdZddZedd            Zd ZddZddZ	ddZ
dS )ChaCha20Poly1305keybytesc                $   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     ]/var/www/html/env/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_datatyping.Optional[bytes]c           
     \   |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/   )r2   r   r3   r   _decryptr   r5   s        r   decryptzChaCha20Poly1305.decrypt=   s     "!O5$888Z!! 	S=ud_,=r3 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s    A""A&)A&Nonec                    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   r2   zChaCha20Poly1305._check_paramsL   sf     	w...vt,,,0/BBBu::5666 r   Nr   r   )r   r   r(   r   r)   r   r*   r+   r   r   r(   r   r)   r   r*   r   r   r<   )__name__
__module____qualname__r0   r   classmethodr$   r   r7   r;   r2    r   r   r
   r
      s        I0 0 0 0    [? ? ?   *   
7 
7 
7 
7 
7 
7r   r
   c                  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 )AESCCMr   r/   r   r   
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/      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   
isinstancerL   	TypeError_tag_lengthr   r   r   r   r   r   )r   r   rK   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 256rR   rU   rL   rV   r   r!   r"   r#   rX   s     r   r$   zAESCCM.generate_keyp   Q    *c** 	=;<<<_,,BCCCz*/***r   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   r0   r1   r2   _validate_lengthsr   r4   r   rW   r@   s       r   r7   zAESCCM.encryptz   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   )r2   r   r:   r   rW   r@   s       r   r;   zAESCCM.decrypt   sN     "!O5$888}T5$(94;K
 
 	
r   data_lenr<   c                `    dt          |          z
  }dd|z  z  |k     rt          d          d S )N      rR   zData too long for nonce)r   r   )r   r(   re   l_vals       r   rc   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   r2   zAESCCM._check_params   sz     	w...vt,,,0/BBBCJJ$$$$"$$$$CDDD %$r   N)r/   )r   r   rK   rL   rX   rL   r   r   rB   )r(   r   re   rL   r   r<   rC   )rD   rE   rF   r0   r   rG   r$   r7   r;   rc   r2   rH   r   r   rJ   rJ   Y   s        I    ( + + + [+
 
 
 
*
 
 
 
8 8 8 8E E E E E Er   rJ   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 )AESGCMr   r   r   c                ~    t          j        d|           t          |          dvrt          d          || _        d S )Nr   rN   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   rX   rL   r   c                    t          |t                    st          d          |dvrt          d          t	          j        |dz            S rZ   r_   r`   s     r   r$   zAESGCM.generate_key   ra   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   r0   r1   r2   r   r4   r   r@   s       r   r7   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 r9   r2   r   r:   r   r@   s       r   r;   zAESGCM.decrypt   D     "!O5$888}WdE4/9JBOOOr   r<   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*   rR   r\   z%Nonce must be between 8 and 128 bytesr?   r@   s       r   r2   zAESGCM._check_params   st     	w...vt,,,0/BBBu::>>SZZ#--DEEE .-r   NrA   rm   rB   rC   
rD   rE   rF   r0   r   rG   r$   r7   r;   r2   rH   r   r   ro   ro      s        I    + + + [+P P P P$
P 
P 
P 
P
F 
F 
F 
F 
F 
Fr   ro   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 )AESOCB3r   r   r   c                    t          j        d|           t          |          dvrt          d          || _        t          j        |           s$t          j        dt          j	        j
                  d S )Nr   rN   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   rX   rL   r   c                    t          |t                    st          d          |dvrt          d          t	          j        |dz            S rZ   r_   r`   s     r   r$   zAESOCB3.generate_key   ra   r   r(   r)   r*   r+   c                    |d}t          |          | j        k    st          |          | j        k    rt          d          |                     |||           t	          j        t          | |||gd          S r-   rs   r@   s       r   r7   zAESOCB3.encrypt  rt   r   c                v    |d}|                      |||           t          j        t          | |||gd          S r9   rv   r@   s       r   r;   zAESOCB3.decrypt  rw   r   r<   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>   rg   z%Nonce must be between 12 and 15 bytesr?   r@   s       r   r2   zAESOCB3._check_params%  sq     	w...vt,,,0/BBBu::??c%jj2ooDEEE .or   NrA   rm   rB   rC   ry   rH   r   r   r{   r{      s        I    + + + [+P P P P$
P 
P 
P 
P
F 
F 
F 
F 
F 
F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 )AESSIVr   r   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 OpenSSLr}   r   s     r   r   zAESSIV.__init__5  sz    uc***s88<''HIII	,T22 	1E#6  	 	r   rX   rL   r   c                    t          |t                    st          d          |dvrt          d          t	          j        |dz            S )Nr[   )r^   i  i   z#bit_length must be 256, 384, or 512rR   r_   r`   s     r   r$   zAESSIV.generate_keyB  ra   r   r)   r*   #typing.Optional[typing.List[bytes]]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   r0   ).0adr   s     r   	<genexpr>z!AESSIV.encrypt.<locals>.<genexpr>V  sA       -
 -
)+CGGdn$-
 -
 -
 -
 -
 -
r   r.   r   r/   )r2   r   r0   anyr1   r   r4   r   r   r)   r*   s   `  r   r7   zAESSIV.encryptL  s    
 " O4111t99t~%% -
 -
 -
 -
/>-
 -
 -
 *
 *
%  G   }WdCKKKr   c                r    |g }|                      ||           t          j        t          | d||d          S r9   rv   r   s      r   r;   zAESSIV.decrypt`  s?    
 " O4111}WdCKKKr   typing.List[bytes]r<   c                    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   rU   listrV   )r   r)   r*   xs       r   r2   zAESSIV._check_paramsl  s    
 	vt,,,t99>>;<<</400 	N   ! 	B 	BA"#=qAAAA	B 	Br   NrA   rm   )r)   r   r*   r   r   r   )r)   r   r*   r   r   r<   ry   rH   r   r   r   r   2  s        I    + + + [+L L L L(
L 
L 
L 
LB B 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
   rJ   ro   r{   r   rH   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   