
    Wwg$                        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y)    )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j0                  ej2                  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*d-dZ+d+dZ,d.dZ-d+dZ.d/dZ/d/dZ0d,dZ1d+dZ2d,dZ3d0dZ4	 	 	 	 	 	 d1dZ5	 	 	 	 	 	 d2dZ6d,dZ7d,dZ8d,dZ9d,d Z:d,d!Z;d,d"Z<d,d#Z=d,d$Z>d,d%Z?y&)3Backendz)
    OpenSSL API binding interfaces.
    r   i   i     c                    t        j                         | _        | j                  j                  | _        | j                  j
                  | _        t        j                         | _	        y N)
r   Binding_bindingffi_ffilib_librust_opensslis_fips_enabled_fips_enabledselfs    c/var/www/horilla/myenv/lib/python3.12/site-packages/cryptography/hazmat/backends/openssl/backend.py__init__zBackend.__init__E   sC    )MM%%	MM%%	)99;    c                f    d| j                          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   sC    '(A(A(C'D E''( )#;;<B@	
r$   c                ,    t        j                  |      S r   )r   _openssl_assert)r!   oks     r"   openssl_assertzBackend.openssl_assertR   s    &&r**r$   c                    t        j                  t         j                         t        j                         sJ t        j                         | _        y r   )r   enable_fips
_providersr   r   r    s    r"   _enable_fipszBackend._enable_fipsU   s;     	  !8!8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022r$   c                *    t        j                         S r   )r   openssl_versionr    s    r"   openssl_version_numberzBackend.openssl_version_numbere   s    ++--r$   c                    | j                   rt        || j                        syt        j                  j                  |      S NF)r   
isinstance_fips_hashesr   r   hash_supportedr!   	algorithms     r"   r9   zBackend.hash_supportedh   s4    jD<M<M&N""11)<<r$   c                r    | j                   rt        |t        j                        ry| j	                  |      S r6   r   r7   r   SHA1r9   r:   s     r"   signature_hash_supportedz Backend.signature_hash_supportedn   s.    
 *Y"D""9--r$   c                d    | j                   ryt        t        j                  j                  d      S NFderive)r   hasattrr   kdfScryptr    s    r"   scrypt_supportedzBackend.scrypt_supportedw   s'    <++22H==r$   c                d    | j                   ryt        t        j                  j                  d      S rA   )r   rC   r   rD   Argon2idr    s    r"   argon2_supportedzBackend.argon2_supported}   s'    <++44h??r$   c                r    | j                   rt        |t        j                        ry| j	                  |      S )NTr=   r:   s     r"   hmac_supportedzBackend.hmac_supported   s,    *Y"D""9--r$   c                    | j                   rt        || j                        syt        j                  j                  ||      S r6   )r   r7   _fips_ciphersr   cipherscipher_supported)r!   ciphermodes      r"   rO   zBackend.cipher_supported   s9     fd&8&89##44VTBBr$   c                $    | j                  |      S r   )rK   r:   s     r"   pbkdf2_hmac_supportedzBackend.pbkdf2_hmac_supported   s    ""9--r$   c                *    t        j                         S r   )r   capture_error_stackr    s    r"   _consume_errorszBackend._consume_errors   s    //11r$   c                    | j                   rt        |t        j                        ryt        |t        j                  t        j                  t        j
                  t        j                  t        j                  f      S r6   )r   r7   r   r>   SHA224SHA256SHA384SHA512r:   s     r"   _oaep_hash_supportedzBackend._oaep_hash_supported   sS    *Y"D	
 		
r$   c                   t        |t              ryt        |t              rzt        |j                  t              r`| j
                  r/t        |j                  j                  t        j                        ry| j                  |j                  j                        S t        |t              r\t        |j                  t              rB| j                  |j                  j                        xr | j                  |j                        S y)NTF)r7   r   r   _mgfr
   r   
_algorithmr   r>   r9   r   r\   r!   paddings     r"   rsa_padding_supportedzBackend.rsa_padding_supported   s    gx(%*W\\4*H !!j''' **7<<+B+BCC&:gllD+I,,'' @++G,>,>?@ r$   c                ^    | j                   rt        |t              ry| j                  |      S r6   )r   r7   r   rb   r`   s     r"   rsa_encryption_supportedz Backend.rsa_encryption_supported   s(    *Wh"?--g66r$   c                B    t         j                   xr | j                   S r   )r   CRYPTOGRAPHY_IS_BORINGSSLr   r    s    r"   dsa_supportedzBackend.dsa_supported   s$    666 '&&&	
r$   c                F    | j                         sy| j                  |      S r6   )rg   r?   r:   s     r"   dsa_hash_supportedzBackend.dsa_hash_supported   s"    !!#,,Y77r$   c                R    | j                  |t        d|j                  z              S )N    )rO   r   
block_sizer:   s     r"   cmac_algorithm_supportedz Backend.cmac_algorithm_supported   s*    $$s7Y%9%99:
 	
r$   c                    | j                   rt        || j                        syt        j                  j                  |      S r6   )r   r7   _fips_ecdh_curvesr   r   curve_supported)r!   curves     r"   elliptic_curve_supportedz Backend.elliptic_curve_supported   s7    j4))'
 ..u55r$   c                    t        |t        j                        sy| j                  |      xrA t        |j                  t
        j                        xs | j                  |j                        S r6   )r7   r   ECDSArr   r;   
asym_utils	Prehashedr9   )r!   signature_algorithmrq   s      r"   ,elliptic_curve_signature_algorithm_supportedz4Backend.elliptic_curve_signature_algorithm_supported   s`     -rxx8,,U3 
*44j6J6JK B""#6#@#@A	
r$   c                \    | j                  |      xr t        |t        j                        S r   )rr   r7   r   ECDH)r!   r;   rq   s      r"   +elliptic_curve_exchange_algorithm_supportedz3Backend.elliptic_curve_exchange_algorithm_supported   s,     ,,U3 

rww9
 	
r$   c                $    t         j                   S r   r   rf   r    s    r"   dh_supportedzBackend.dh_supported       9999r$   c                4    | j                   j                  dk(  S )Nr   )r   Cryptography_HAS_EVP_PKEY_DHXr    s    r"   dh_x942_serialization_supportedz'Backend.dh_x942_serialization_supported   s    yy66!;;r$   c                    | j                   ryyNFTr   r    s    r"   x25519_supportedzBackend.x25519_supported       r$   c                d    | j                   ryt        j                   xr t        j                   S r6   r   r   CRYPTOGRAPHY_IS_LIBRESSLrf   r    s    r"   x448_supportedzBackend.x448_supported   0    555 ; :::	
r$   c                    | j                   ryyr   r   r    s    r"   ed25519_supportedzBackend.ed25519_supported  r   r$   c                d    | j                   ryt        j                   xr t        j                   S r6   r   r    s    r"   ed448_supportedzBackend.ed448_supported  r   r$   c                @    t         j                  xr | j                   S r   )r   #CRYPTOGRAPHY_OPENSSL_320_OR_GREATERr   r    s    r"   ecdsa_deterministic_supportedz%Backend.ecdsa_deterministic_supported  s!    << '&&&	
r$   c                    | j                   ryy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)returnNone)r   str)r+   boolr   r   )r   int)r;   zhashes.HashAlgorithmr   r   )r   r   )rP   r   rQ   r   r   r   )r   zlist[rust_openssl.OpenSSLError])ra   r   r   r   )rq   ec.EllipticCurver   r   )rw   z"ec.EllipticCurveSignatureAlgorithmrq   r   r   r   )r;   zec.ECDHrq   r   r   r   )@__name__
__module____qualname____doc__namer   rM   r   rX   rY   rZ   r[   
SHA512_224
SHA512_256SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256r8   r   	SECP224R1	SECP256R1	SECP384R1	SECP521R1ro   _fips_rsa_min_key_size_fips_rsa_min_public_exponent_fips_dsa_min_modulus_fips_dh_min_key_size_fips_dh_min_modulusr#   r(   r,   r0   r&   r4   r9   r?   rF   rI   rK   rO   rS   rV   r\   rb   rd   rg   ri   rm   rr   rx   r{   r~   r   r   r   r   r   r   r   r    r$   r"   r   r      s    D FM 	L 	


	 "$)!I  55<
+<3.=.-.	.>@.C.2
&7
8


6
?
  
 
	

 
)9
	
:<





: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	   ru   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      sK   
 # F 8 1 H 8 I {: {:| )r$   