
    9 j)                        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%dAdZ&dAdZ'dBdZ(dBdZ)dAdZ*dCdZ+dAdZ,dDd Z-dAd!Z.dEd$Z/dEd%Z0dBd&Z1dAd'Z2dBd(Z3dFd+Z4dGd.Z5dHd0Z6dBd1Z7dBd2Z8dBd3Z9dBd4Z:dBd5Z;dBd6Z<dBd7Z=dBd8Z>dBd9Z?dBd:Z@dBd;ZAd<S )I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    C:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\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                Z   | j         rt          |t          j                  rdS t          j        rht          |t          j        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MD5SHA224SHA256SHA384SHA512
SHA512_224
SHA512_256r@   rA   s     r$   hmac_supportedzBackend.hmac_supported   s     	*Y"D"D 	4- 	J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#   rZ   r[   s      r$   r_   zBackend.cipher_supported   sB     	 fd&899 u#44VTBBBr&   c                ,    |                      |          S r   )rY   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   rS   rT   rU   rV   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   rg   r#   rh   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   ro   rn   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=   )rt   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#   r{   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   r{   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:   r{   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   rs   rQ   r"   s    r$   dh_supportedzBackend.dh_supported   s    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          S r   r!   r"   s    r$   x25519_supportedzBackend.x25519_supported      %%%r&   c                b    | j         rdS t          j         ot          j         ot          j         S r=   )r!   r   CRYPTOGRAPHY_IS_LIBRESSLrs   rQ   r"   s    r$   x448_supportedzBackend.x448_supported
  s<     	555 7 ::7 66	
r&   c                J    t           j        pt           j        pt           j        S r   r   rQ   rs   #CRYPTOGRAPHY_OPENSSL_350_OR_GREATERr"   s    r$   mlkem_supportedzBackend.mlkem_supported  %    . @5@?	
r&   c                J    t           j        pt           j        pt           j        S r   r   r"   s    r$   mldsa_supportedzBackend.mldsa_supported  r   r&   c                    dS rP    r"   s    r$   ed25519_supportedzBackend.ed25519_supported!      tr&   c                P    t           j         ot           j         ot           j         S r   )r   r   rs   rQ   r"   s    r$   ed448_supportedzBackend.ed448_supported$  s,    55 7 ::7 66	
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          S r   r   r"   s    r$   poly1305_supportedzBackend.poly1305_supported1  r   r&   c                    dS rP   r   r"   s    r$   pkcs7_supportedzBackend.pkcs7_supported4  r   r&   N)r   r   )r   r'   )r,   r-   r   r   )r   r6   )r:   r;   r   r-   )r   r-   )rZ   r   r[   r   r   r-   )r   rb   )rh   r   r   r-   )r{   r|   r   r-   )r   r   r{   r|   r   r-   )r:   r   r{   r|   r   r-   )B__name__
__module____qualname____doc__namer   r]   r   rS   rT   rU   rV   rW   rX   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   rY   r_   ra   re   rg   ro   rq   rt   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r$   r   r      sm         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                            V V V V V V V Vr '))r&   