
    Ng$                        d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZ d d
lmZ d dlmZmZ  G d d          Z e            ZdS )    )annotations)openssl)binding)hashes)AsymmetricPadding)ec)utils)MGF1OAEPPSSPKCS1v15)CipherAlgorithm)AES)CBCModec                     e Zd ZdZdZefZej        ej	        ej
        ej        ej        ej        ej        ej        ej        ej        ej        ej        fZej        ej        ej        ej        fZdZdZddz  ZdZdez  Zd;dZ d<d
Z!d=dZ"d;dZ#d<dZ$d>dZ%d?dZ&d?dZ'd@dZ(d@dZ)d?dZ*dAdZ+d?dZ,dBd Z-d?d!Z.dCd$Z/dCd%Z0d@d&Z1d?d'Z2d@d(Z3dDd+Z4dEd.Z5dFd0Z6d@d1Z7d@d2Z8d@d3Z9d@d4Z:d@d5Z;d@d6Z<d@d7Z=d@d8Z>d@d9Z?d:S )GBackendz)
    OpenSSL API binding interfaces.
    r   i   i     returnNonec                    t          j                    | _        | j        j        | _        | j        j        | _        t          j                    | _	        d S N)
r   Binding_bindingffi_ffilib_librust_opensslis_fips_enabled_fips_enabledselfs    h/var/www/html/ai-engine/env/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/backend.py__init__zBackend.__init__E   s@    ))M%	M%	)9;;    strc                \    d|                                   d| j         dt          j         dS )Nz<OpenSSLBackend(version: z, FIPS: z
, Legacy: z)>)openssl_version_textr!   r   _legacy_provider_loadedr"   s    r$   __repr__zBackend.__repr__K   sQ    @(A(A(C(C @ @'@ @#;@ @ @	
r&   okboolc                *    t          j        |          S r   )r   _openssl_assert)r#   r,   s     r$   openssl_assertzBackend.openssl_assertR   s    &r***r&   c                    t          j        t           j                   t          j                    sJ t          j                    | _        d S r   )r   enable_fips
_providersr    r!   r"   s    r$   _enable_fipszBackend._enable_fipsU   sD     	 !8999+-----)9;;r&   c                (    t          j                    S )z
        Friendly string name of the loaded OpenSSL library. This is not
        necessarily the same version as it was compiled against.

        Example: OpenSSL 3.2.1 30 Jan 2024
        )r   r)   r"   s    r$   r)   zBackend.openssl_version_text\   s     0222r&   intc                (    t          j                    S r   )r   openssl_versionr"   s    r$   openssl_version_numberzBackend.openssl_version_numbere   s    +---r&   	algorithmhashes.HashAlgorithmc                |    | j         rt          || j                  sdS t          j                            |          S NF)r!   
isinstance_fips_hashesr   r   hash_supportedr#   r:   s     r$   r@   zBackend.hash_supportedh   s=     	jD<M&N&N 	5"11)<<<r&   c                r    | j         rt          |t          j                  rdS |                     |          S r=   r!   r>   r   SHA1r@   rA   s     r$   signature_hash_supportedz Backend.signature_hash_supportedn   s;    
  	*Y"D"D 	5""9---r&   c                R    | j         rdS t          t          j        j        d          S NFderive)r!   hasattrr   kdfScryptr"   s    r$   scrypt_supportedzBackend.scrypt_supportedw   s(     	>5<+2H===r&   c                R    | j         rdS t          t          j        j        d          S rG   )r!   rI   r   rJ   Argon2idr"   s    r$   argon2_supportedzBackend.argon2_supported}   s)     	@5<+4h???r&   c                r    | j         rt          |t          j                  rdS |                     |          S )NTrC   rA   s     r$   hmac_supportedzBackend.hmac_supported   s9     	*Y"D"D 	4""9---r&   cipherr   moder   c                ~    | j         rt          || j                  sdS t          j                            ||          S r=   )r!   r>   _fips_ciphersr   cipherscipher_supported)r#   rR   rS   s      r$   rW   zBackend.cipher_supported   sB     	 fd&899 u#44VTBBBr&   c                ,    |                      |          S r   )rQ   rA   s     r$   pbkdf2_hmac_supportedzBackend.pbkdf2_hmac_supported   s    ""9---r&   list[rust_openssl.OpenSSLError]c                (    t          j                    S r   )r   capture_error_stackr"   s    r$   _consume_errorszBackend._consume_errors   s    /111r&   c                    | j         rt          |t          j                  rdS t          |t          j        t          j        t          j        t          j        t          j        f          S r=   )r!   r>   r   rD   SHA224SHA256SHA384SHA512rA   s     r$   _oaep_hash_supportedzBackend._oaep_hash_supported   sX     	*Y"D"D 	5	
 	
 		
r&   paddingr   c                   t          |t                    rdS t          |t                    rft          |j        t                    rL| j        r&t          |j        j        t          j                  rdS | 	                    |j        j                  S t          |t                    rSt          |j        t                    r9|                     |j        j                  o|                     |j                  S dS )NTF)r>   r   r   _mgfr
   r!   
_algorithmr   rD   r@   r   rc   r#   rd   s     r$   rsa_padding_supportedzBackend.rsa_padding_supported   s    gx(( 	4%% 	*W\4*H*H 	 ! Dj'' ' D t**7<+BCCC&& 	:glD+I+I 	,,'  @++G,>??@ 5r&   c                h    | j         rt          |t                    rdS |                     |          S r=   )r!   r>   r   ri   rh   s     r$   rsa_encryption_supportedz Backend.rsa_encryption_supported   s7     	7*Wh"?"? 	75--g666r&   c                ,    t           j         o| j         S r   )r   CRYPTOGRAPHY_IS_BORINGSSLr!   r"   s    r$   dsa_supportedzBackend.dsa_supported   s    66 '&&	
r&   c                X    |                                  sdS |                     |          S r=   )rn   rE   rA   s     r$   dsa_hash_supportedzBackend.dsa_hash_supported   s/    !!## 	5,,Y777r&   c                X    |                      |t          d|j        z                      S )N    )rW   r   
block_sizerA   s     r$   cmac_algorithm_supportedz Backend.cmac_algorithm_supported   s/    $$s7Y%99::
 
 	
r&   curveec.EllipticCurvec                |    | j         rt          || j                  sdS t          j                            |          S r=   )r!   r>   _fips_ecdh_curvesr   r   curve_supported)r#   ru   s     r$   elliptic_curve_supportedz Backend.elliptic_curve_supported   sC     	j4)'
 '
 	 5..u555r&   signature_algorithm"ec.EllipticCurveSignatureAlgorithmc                    t          |t          j                  sdS |                     |          o8t          |j        t
          j                  p|                     |j                  S r=   )r>   r   ECDSArz   r:   
asym_utils	Prehashedr@   )r#   r{   ru   s      r$   ,elliptic_curve_signature_algorithm_supportedz4Backend.elliptic_curve_signature_algorithm_supported   sh     -rx88 	5,,U33 
*4j6JKK B""#6#@AA	
r&   ec.ECDHc                `    |                      |          ot          |t          j                  S r   )rz   r>   r   ECDH)r#   r:   ru   s      r$   +elliptic_curve_exchange_algorithm_supportedz3Backend.elliptic_curve_exchange_algorithm_supported   s2     ,,U33 

rw9
 9
 	
r&   c                    t           j         S r   r   rm   r"   s    r$   dh_supportedzBackend.dh_supported       999r&   c                "    | j         j        dk    S )Nr   )r   Cryptography_HAS_EVP_PKEY_DHXr"   s    r$   dh_x942_serialization_supportedz'Backend.dh_x942_serialization_supported   s    y6!;;r&   c                    | j         rdS dS NFTr!   r"   s    r$   x25519_supportedzBackend.x25519_supported        	5tr&   c                H    | j         rdS t          j         ot          j         S r=   r!   r   CRYPTOGRAPHY_IS_LIBRESSLrm   r"   s    r$   x448_supportedzBackend.x448_supported   .     	555 ; ::	
r&   c                    | j         rdS dS r   r   r"   s    r$   ed25519_supportedzBackend.ed25519_supported  r   r&   c                H    | j         rdS t          j         ot          j         S r=   r   r"   s    r$   ed448_supportedzBackend.ed448_supported  r   r&   c                *    t           j        o| j         S r   )r   #CRYPTOGRAPHY_OPENSSL_320_OR_GREATERr!   r"   s    r$   ecdsa_deterministic_supportedz%Backend.ecdsa_deterministic_supported  s    < '&&	
r&   c                    | j         rdS dS r   r   r"   s    r$   poly1305_supportedzBackend.poly1305_supported  r   r&   c                    t           j         S r   r   r"   s    r$   pkcs7_supportedzBackend.pkcs7_supported  r   r&   N)r   r   )r   r'   )r,   r-   r   r   )r   r6   )r:   r;   r   r-   )r   r-   )rR   r   rS   r   r   r-   )r   rZ   )rd   r   r   r-   )ru   rv   r   r-   )r{   r|   ru   rv   r   r-   )r:   r   ru   rv   r   r-   )@__name__
__module____qualname____doc__namer   rU   r   r_   r`   ra   rb   
SHA512_224
SHA512_256SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256r?   r   	SECP224R1	SECP256R1	SECP384R1	SECP521R1rx   _fips_rsa_min_key_size_fips_rsa_min_public_exponent_fips_dsa_min_modulus_fips_dh_min_key_size_fips_dh_min_modulusr%   r+   r0   r4   r)   r9   r@   rE   rL   rO   rQ   rW   rY   r]   rc   ri   rk   rn   rp   rt   rz   r   r   r   r   r   r   r   r   r   r   r    r&   r$   r   r      sE         D FM 	L 	


	 "$)!I  55< < < <
 
 
 
+ + + +< < < <3 3 3 3. . . .= = = =. . . .> > > >@ @ @ @. . . .C C C C. . . .2 2 2 2
 
 
 
   &7 7 7 7
 
 
 
8 8 8 8

 
 
 

6 6 6 6
 
 
 

 
 
 
: : : :< < < <   

 
 
 
   

 
 
 

 
 
 
   
: : : : : :r&   r   N)
__future__r   "cryptography.hazmat.bindings._rustr   r   $cryptography.hazmat.bindings.opensslr   cryptography.hazmat.primitivesr   *cryptography.hazmat.primitives._asymmetricr   )cryptography.hazmat.primitives.asymmetricr   r	   r   1cryptography.hazmat.primitives.asymmetric.paddingr
   r   r   r   &cryptography.hazmat.primitives.ciphersr   1cryptography.hazmat.primitives.ciphers.algorithmsr   ,cryptography.hazmat.primitives.ciphers.modesr   r   r   backendr   r&   r$   <module>r      sg  
 # " " " " " F F F F F F 8 8 8 8 8 8 1 1 1 1 1 1 H H H H H H 8 8 8 8 8 8 I I I I I I                            {: {: {: {: {: {: {: {:| '))r&   