
    tf%                        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(dAdZ)d@dZ*dBdZ+d@dZ,dCd Z-d@d!Z.dDd$Z/dDd%Z0dAd&Z1d@d'Z2dAd(Z3dEd+Z4dFd.Z5dGd0Z6dAd1Z7dAd2Z8dAd3Z9dAd4Z:dAd5Z;dAd6Z<dAd7Z=dAd8Z>dAd9Z?d:S )H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    k/var/www/surfInsights/venv3-11/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         dv r'|j          |j        dz                       d          }n|j                             d          }| j                            |          }|S )N)blake2bblake2s   ascii)namedigest_sizeencoder   EVP_get_digestbyname)r#   r:   algevp_mds       r$   _evp_md_from_algorithmzBackend._evp_md_from_algorithmh   sp    >333^@Y%:Q%>@@GG CC .''00C//44r&   c                    | j         rt          || j                  sdS |                     |          }|| j        j        k    S NF)r!   
isinstance_fips_hashesrG   r   NULL)r#   r:   rF   s      r$   hash_supportedzBackend.hash_supporteds   sH     	jD<M&N&N 	5,,Y77''r&   c                r    | j         rt          |t          j                  rdS |                     |          S rI   r!   rJ   r   SHA1rM   r#   r:   s     r$   signature_hash_supportedz Backend.signature_hash_supportedz   s;    
  	*Y"D"D 	5""9---r&   c                H    | j         rdS t          t          j        d          S )NFderive_scrypt)r!   hasattrr   kdfr"   s    r$   scrypt_supportedzBackend.scrypt_supported   s%     	>5<+_===r&   c                r    | j         rt          |t          j                  rdS |                     |          S )NTrO   rQ   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 rI   )r!   rJ   _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   rQ   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 rI   )r!   rJ   r   rP   SHA224SHA256SHA384SHA512rQ   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)rJ   r   r   _mgfr
   r!   
_algorithmr   rP   rM   r   rk   r#   rl   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 rI   )r!   rJ   r   rq   rp   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 rI   )rv   rR   rQ   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_sizerQ   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 rI   )r!   rJ   _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 rI   )rJ   r   ECDSAr   r:   
asym_utils	PrehashedrM   )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   rJ   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                    t           j         S r   r   ru   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 rI   r!   r   CRYPTOGRAPHY_IS_LIBRESSLru   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 rI   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-   )r   r-   )rZ   r   r[   r   r   r-   )r   rb   )rl   r   r   r-   )r}   r~   r   r-   )r   r   r}   r~   r   r-   )r:   r   r}   r~   r   r-   )@__name__
__module____qualname____doc__rA   r   r]   r   rg   rh   ri   rj   
SHA512_224
SHA512_256SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256rK   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   rG   rM   rR   rW   rY   r_   ra   re   rk   rq   rs   rv   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r    r&   r$   r   r      sA         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                            A: A: A: A: A: A: A: A:H '))r&   