
     h)'                        d dl Z d dlmZ e j        r&d dlmZ d dlmZmZm	Z	m
Z
mZ e j        eee	e
ef         ZdZd Zdddefd	Zd
eddfdZdddddefdZddd
ededede j        e         dedefdZdeddfdZdededdfdZdddeddfdZdddeddfdZdddedefdZ	 d!dddddedede j        e         dede j        defdZ	 d!dddddedede j        e         dede j        defd ZdS )"    N)
InvalidTag)BackendAESCCMAESGCMAESOCB3AESSIVChaCha20Poly1305   cipher
_AEADTypesreturnc                 <   ddl m}m}m}m}m} t          | |          rdS t          | |          r.dt          | j                  dz   d	                    d          S t          | |          r.dt          | j                  dz   d	                    d          S t          | |          r1dt          | j                  dz  d	z   d
	                    d          S t          | |          sJ dt          | j                  dz   d	                    d          S )Nr   r   s   chacha20-poly1305zaes-   z-ccmasciiz-ocb   z-sivz-gcm)
+cryptography.hazmat.primitives.ciphers.aeadr   r   r   r	   r
   
isinstancelen_keyencode)r   r   r   r   r	   r
   s         e/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/aead.py_aead_cipher_namer      sp                 &*++ 
A##	FF	#	# A0c&+&&*00077@@@	FG	$	$ A0c&+&&*00077@@@	FF	#	# A5c&+&&*a/555<<WEEE&&)))))0c&+&&*00077@@@    cipher_namebackendr   c                    |                      d          ry|j                            |j        j        | |j        j                  }|                    ||j        j        k               |j                            ||j        j                  }n=|j                            |           }|                    ||j        j        k               |S )Ns   -siv)	endswith_libEVP_CIPHER_fetch_ffiNULLopenssl_assertgcEVP_CIPHER_freeEVP_get_cipherbyname)r   r   
evp_ciphers      r   _evp_cipherr(   1   s    G$$ 
@\22LL
 


 	zW\->>???\__Z1MNN

\66{CC
zW\->>???r   keyc                    | j                                         }|                     || j        j        k               | j                            || j         j                  }t          |          }t          ||           }| j        	                    |          }| j         
                    ||| j        j        || j        j        d          }|                     |dk               |S Nr   )r   EVP_CIPHER_CTX_newr#   r!   r"   r$   EVP_CIPHER_CTX_freer   r(   from_bufferEVP_CipherInit_ex)r   r   r)   ctxr   r'   key_ptrress           r   _aead_create_ctxr3   A   s    
 ,
)
)
+
+C3',"33444
,//#w|?
@
@C#F++K['22Jl&&s++G
,
(
(	 C 3!8$$$Jr   noncetagtag_len	operationc                 T   t          ||           }| j                                        }| j                            || j        j                  }| j                            ||| j        j        | j        j        | j        j        t          |t          k                        }	| 
                    |	dk               | j                            || j        j        t          |          | j        j                  }	| 
                    |	dk               |t          k    r|J t          | ||           n_|                    d          rJ| j                            || j        j        || j        j                  }	| 
                    |	dk               | j                            |          }
| j                            |          }| j                            || j        j        | j        j        ||
t          |t          k                        }	| 
                    |	dk               |S )Nr   s   -ccm)r(   r   r,   r!   r$   r-   r/   r"   int_ENCRYPTr#   EVP_CIPHER_CTX_ctrlEVP_CTRL_AEAD_SET_IVLENr   _DECRYPT_set_tagr   EVP_CTRL_AEAD_SET_TAGr.   )r   r   r)   r4   r5   r6   r7   r'   r0   r2   	nonce_ptrr1   s               r   _aead_setuprA   X   s    ['22J
,
)
)
+
+C
,//#w|?
@
@C
,
(
(I!"" C 3!8$$$
,
*
*,E

	 C 3!8$$$H#s####			g	&	& )l..3Wgl>O
 
 	sax(((((//Il&&s++G
,
(
(I!"" C 3!8$$$Jr   c                     | j                             |          }| j                            || j        j        t          |          |          }|                     |dk               d S r+   )r!   r.   r   r;   r?   r   r#   )r   r0   r5   tag_ptrr2   s        r   r>   r>      sb    l&&s++G
,
*
*W\/S7 C 3!8$$$$$r   c                    | j                             |          }| j                            || j         j        | j         j        | j         j        |t          |t          k                        }|                     |dk               d S r+   )r!   r.   r   r/   r"   r9   r:   r#   )r   r0   r4   r7   r@   r2   s         r   _set_nonce_operationrE      s|    ((//I
,
(
(I!"" C 3!8$$$$$r   data_lenc                     | j                             d          }| j                            || j         j        || j         j        |          }|                     |dk               d S Nint *r   )r!   newr   EVP_CipherUpdater"   r#   )r   r0   rF   intptrr2   s        r   _set_lengthrM      sc    \g&&F
,
'
'W\(98 C 3!8$$$$$r   associated_datac           	      
   | j                             d          }| j                             |          }| j                            || j         j        ||t          |                    }|                     |dk               d S rH   )r!   rJ   r.   r   rK   r"   r   r#   )r   r0   rN   outlen
a_data_ptrr2   s         r   _process_aadrR      s{    \g&&F))/::J
,
'
'W\
C4H4H C 3!8$$$$$r   datac           	         | j                             d          }| j                             dt          |                    }| j                             |          }| j                            ||||t          |                    }|dk    r|                                  t          | j                             ||d                   d d          S )NrI   unsigned char[]r   )	r!   rJ   r   r.   r   rK   _consume_errorsr   buffer)r   r0   rS   rP   bufdata_ptrr2   s          r   _process_datarZ      s    \g&&F
,

,c$ii
8
8C|''--H
,
'
'S&(CII
N
NC
axx!!!<sF1I..qqq11r   
tag_lengthr0   c           	         ddl m}m} |/t          |          }	t	          | |	|j        |d |t                    }nt          | ||t                     t          ||          rt          | |t          |                     |D ]}
t          | ||
           t          | ||          }| j                            d          }| j                            dd          }| j                            |||          }|                     |dk               || j                            ||d                   d d          z  }| j                            d|          }| j                            || j        j        ||          }|                     |dk               | j                            |          d d          }t          ||          r+|                     t          |          dk               ||z   S ||z   S )Nr   r   r	   rI   rU      )r   r   r	   r   rA   r   r:   rE   r   rM   r   rR   rZ   r!   rJ   r   EVP_CipherFinal_exr#   rW   r;   EVP_CTRL_AEAD_GET_TAG)r   r   r4   rS   rN   r[   r0   r   r	   r   adprocessed_datarP   rX   r2   tag_bufr5   s                    r   _encryptrd      s    KJJJJJJJ
{'//K
 
 	Wc5(;;; &&!! -GS#d)),,, ' 'Wc2&&&&"7C66N\g&&F ,

,b
1
1C
,
)
)#sF
;
;C3!8$$$gl))#vay99!!!<<Nl0*==G
,
*
*W\/W C 3!8$$$
,

g
&
&qqq
)C&&!! $ 	s3xx2~...^####r   c           	         ddl m}m} t          |          |k     rt          t          ||          r|d |         }	||d          }n|| d          }	|d |          }|/t          |          }
t          | |
|j        ||	|t                    }n(t          | ||t                     t          | ||	           t          ||          rt          | |t          |                     |D ]}t          | ||           t          ||          r| j                            d          }| j                            dt          |                    }| j                            |          }| j                            ||||t          |                    }|dk    r|                                  t          | j                            ||d                   d d          }nt+          | ||          }| j                            d          }| j                            dd          }| j                            |||          }|| j                            ||d                   d d          z  }|dk    r|                                  t          |S )Nr   r]   rI   rU   r   r^   )r   r   r	   r   r   r   r   rA   r   r=   rE   r>   rM   rR   r!   rJ   r.   r   rK   rV   rW   rZ   r_   )r   r   r4   rS   rN   r[   r0   r   r	   r5   r   ra   rP   rX   d_ptrr2   rb   s                    r   _decryptrg      s    KJJJJJJJ
4yy:&&!! " ;J;JKK J;<< Lj[L!
{'//[&+uc:x
 
 	Wc5(;;;#s### &&!! -GS#d)),,, ' 'Wc2&&&& &&!! !!'**l0#d))<<((..l++CfeSYYOO!88##%%% ,,S&)<<QQQ?&wT::!!'**l0"55l--c3??',--c6!9==aaa@@!88##%%%r   )N) typingcryptography.exceptionsr   TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr   r   r   r   r   r	   r
   Unionr   r:   r=   bytesr   r(   r3   Optionalr9   rA   r>   rE   rM   rR   rZ   ListAnyrd   rg    r   r   <module>rr      s;  
  . . . . . .	 DDDDDD              )99J Al Au A A A A,U Y      
   .111 
1 	1
 
	1 1 1 1 1 1h% %$ % % % %
%e 
% 
% 
% 
% 
% 
%% %3 %4 % % % %%) %5 %T % % % %	29 	2 	25 	2 	2 	2 	2& 7$ 7$7$7$ 7$ 	7$
 ['7$ 7$ 
7$ 7$ 7$ 7$ 7$B > >>> > 	>
 ['> > 
> > > > > > >r   