
    .PhY(                        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    l/var/www/html/test/jupyter/venv/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 rF   )r!   rH   r   rI   Argon2idr"   s    r$   argon2_supportedzBackend.argon2_supported}   s)     	@5<+4h???r&   c           
     D   | j         rt          |t          j                  rdS t          j        r]t          |t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        f          S |                     |          S )NT)r!   r>   r   rC   r   CRYPTOGRAPHY_IS_AWSLCSHA224SHA256SHA384SHA512
SHA512_224
SHA512_256r@   rA   s     r$   hmac_supportedzBackend.hmac_supported   s     	*Y"D"D 	4- 	KMMMM%%   ""9---r&   cipherr   moder   c                ~    | j         rt          || j                  sdS t          j                            ||          S r=   )r!   r>   _fips_ciphersr   cipherscipher_supported)r#   rX   rY   s      r$   r]   zBackend.cipher_supported   sB     	 fd&899 u#44VTBBBr&   c                ,    |                      |          S r   )rW   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   rC   rQ   rR   rS   rT   rA   s     r$   _oaep_hash_supportedzBackend._oaep_hash_supported   sX     	*Y"D"D 	5	
 	
 		
r&   paddingr   c                   t          |t                    rdS t          |t                    rWt          |j        t                    r=| j        r|j        t          j        k    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!   _salt_lengthDIGEST_LENGTHr@   
_algorithmr   re   r#   rf   s     r$   rsa_padding_supportedzBackend.rsa_padding_supported   s    gx(( 	4%% 	*W\4*H*H 	 "(C,===u&&w|'>???&& 	:glD+I+I 	,,'  @++G,>??@ 5r&   c                h    | j         rt          |t                    rdS |                     |          S r=   )r!   r>   r   rm   rl   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=   )rr   rD   rA   s     r$   dsa_hash_supportedzBackend.dsa_hash_supported   s/    !!## 	5,,Y777r&   c                X    |                      |t          d|j        z                      S )N    )r]   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#   ry   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   ECDSAr~   r:   
asym_utils	Prehashedr@   )r#   r   ry   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   )r~   r>   r   ECDH)r#   r:   ry   s      r$   +elliptic_curve_exchange_algorithm_supportedz3Backend.elliptic_curve_exchange_algorithm_supported   s2     ,,U33 

rw9
 9
 	
r&   c                6    t           j         ot           j         S r   r   rq   rP   r"   s    r$   dh_supportedzBackend.dh_supported       66 7 66	
r&   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                b    | j         rdS t          j         ot          j         ot          j         S r=   r!   r   CRYPTOGRAPHY_IS_LIBRESSLrq   rP   r"   s    r$   x448_supportedzBackend.x448_supported  <     	555 7 ::7 66	
r&   c                    | j         rdS dS r   r   r"   s    r$   ed25519_supportedzBackend.ed25519_supported  r   r&   c                b    | j         rdS t          j         o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                6    t           j         o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-   )rX   r   rY   r   r   r-   )r   r`   )rf   r   r   r-   )ry   rz   r   r-   )r   r   ry   rz   r   r-   )r:   r   ry   rz   r   r-   )@__name__
__module____qualname____doc__namer   r[   r   rQ   rR   rS   rT   rU   rV   SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256r?   r   	SECP224R1	SECP256R1	SECP384R1	SECP521R1r|   _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@   rD   rK   rN   rW   r]   r_   rc   re   rm   ro   rr   rt   rx   r~   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
 R
 R
 R
 R
 R
 R
 R
j '))r&   