o
    j)                     @  s   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 dZe ZdS )    )annotations)openssl)binding)hashes)AsymmetricPadding)ec)utils)MGF1OAEPPSSPKCS1v15)CipherAlgorithm)AES)CBCModec                   @  s  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dZde> Zd_dd	Z d`ddZ!daddZ"d_ddZ#d`ddZ$dbddZ%dcddZ&dcddZ'ddddZ(ddd d!Z)dcd"d#Z*ded(d)Z+dcd*d+Z,dfd-d.Z-dcd/d0Z.dgd3d4Z/dgd5d6Z0ddd7d8Z1dcd9d:Z2ddd;d<Z3dhd?d@Z4didCdDZ5djdFdGZ6dddHdIZ7dddJdKZ8dddLdMZ9dddNdOZ:dddPdQZ;dddRdSZ<dddTdUZ=dddVdWZ>dddXdYZ?dddZd[Z@ddd\d]ZAd^S )kBackendz)
    OpenSSL API binding interfaces.
    r   i   i     returnNonec                 C  s,   t  | _| jj| _| jj| _t | _	d S N)
r   Binding_bindingffi_ffilib_librust_opensslis_fips_enabled_fips_enabledself r!   r/var/www/html/fyndo/pharma/fyndo/venv/lib/python3.10/site-packages/cryptography/hazmat/backends/openssl/backend.py__init__E   s   


zBackend.__init__strc                 C  s    d|    d| j dtj dS )Nz<OpenSSLBackend(version: z, FIPS: z
, Legacy: z)>)openssl_version_textr   r   _legacy_provider_loadedr   r!   r!   r"   __repr__K   s   zBackend.__repr__okboolc                 C  s
   t |S r   )r   _openssl_assert)r    r(   r!   r!   r"   openssl_assertR      
zBackend.openssl_assertc                 C  s&   t t j t  sJ t  | _d S r   )r   enable_fips
_providersr   r   r   r!   r!   r"   _enable_fipsU   s   zBackend._enable_fipsc                 C     t  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   r!   r!   r"   r%   \   s   zBackend.openssl_version_textintc                 C  r0   r   )r   openssl_versionr   r!   r!   r"   openssl_version_numbere      zBackend.openssl_version_number	algorithmhashes.HashAlgorithmc                 C  "   | j rt|| jsdS tj|S NF)r   
isinstance_fips_hashesr   r   hash_supportedr    r5   r!   r!   r"   r;   h   s   zBackend.hash_supportedc                 C  s    | j rt|tjrdS | |S r8   )r   r9   r   SHA1r;   r<   r!   r!   r"   signature_hash_supportedn   s   
z Backend.signature_hash_supportedc                 C     | j rdS ttjjdS NFderive)r   hasattrr   kdfScryptr   r!   r!   r"   scrypt_supportedw      zBackend.scrypt_supportedc                 C  r?   r@   )r   rB   r   rC   Argon2idr   r!   r!   r"   argon2_supported}   rF   zBackend.argon2_supportedc              
   C  sP   | 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tjfS | |S NT)r   r9   r   r=   r   CRYPTOGRAPHY_IS_AWSLCMD5SHA224SHA256SHA384SHA512
SHA512_224
SHA512_256r;   r<   r!   r!   r"   hmac_supported   s    
zBackend.hmac_supportedcipherr   moder   c                 C  s$   | j rt|| jsdS tj||S r8   )r   r9   _fips_ciphersr   cipherscipher_supported)r    rS   rT   r!   r!   r"   rW      s   zBackend.cipher_supportedc                 C  s
   |  |S r   )rR   r<   r!   r!   r"   pbkdf2_hmac_supported   r,   zBackend.pbkdf2_hmac_supportedlist[rust_openssl.OpenSSLError]c                 C  r0   r   )r   capture_error_stackr   r!   r!   r"   _consume_errors   r4   zBackend._consume_errorsc                 C  s4   | j rt|tjrdS t|tjtjtjtjtjfS r8   )r   r9   r   r=   rL   rM   rN   rO   r<   r!   r!   r"   _oaep_hash_supported   s   zBackend._oaep_hash_supportedpaddingr   c                 C  s|   t |trdS t |tr$t |jtr$| jr|jtjkrdS | |jj	S t |t
r<t |jtr<| |jj	o;| |j	S dS )NTF)r9   r   r   _mgfr	   r   _salt_lengthDIGEST_LENGTHr;   
_algorithmr
   r\   r    r]   r!   r!   r"   rsa_padding_supported   s   

zBackend.rsa_padding_supportedc                 C  s   | j r
t|tr
dS | |S r8   )r   r9   r   rc   rb   r!   r!   r"   rsa_encryption_supported   s   
z Backend.rsa_encryption_supportedc                 C  s   t j o| j S r   )r   CRYPTOGRAPHY_IS_BORINGSSLr   r   r!   r!   r"   dsa_supported      zBackend.dsa_supportedc                 C  s   |   sdS | |S r8   )rf   r>   r<   r!   r!   r"   dsa_hash_supported   s   
zBackend.dsa_hash_supportedc                 C  s   |  |td|j S )N    )rW   r   
block_sizer<   r!   r!   r"   cmac_algorithm_supported   s   z Backend.cmac_algorithm_supportedcurveec.EllipticCurvec                 C  r7   r8   )r   r9   _fips_ecdh_curvesr   r   curve_supported)r    rl   r!   r!   r"   elliptic_curve_supported   s
   z Backend.elliptic_curve_supportedsignature_algorithm"ec.EllipticCurveSignatureAlgorithmc                 C  s4   t |tjsdS | |ot |jtjp| |jS r8   )r9   r   ECDSArp   r5   
asym_utils	Prehashedr;   )r    rq   rl   r!   r!   r"   ,elliptic_curve_signature_algorithm_supported   s   

z4Backend.elliptic_curve_signature_algorithm_supportedec.ECDHc                 C  s   |  |o
t|tjS r   )rp   r9   r   ECDH)r    r5   rl   r!   r!   r"   +elliptic_curve_exchange_algorithm_supported   s   z3Backend.elliptic_curve_exchange_algorithm_supportedc                 C  s   t j ot j S r   )r   re   rJ   r   r!   r!   r"   dh_supported   rg   zBackend.dh_supportedc                 C  s   | j jdkS )Nr   )r   Cryptography_HAS_EVP_PKEY_DHXr   r!   r!   r"   dh_x942_serialization_supported  s   z'Backend.dh_x942_serialization_supportedc                 C     | j  S r   r   r   r!   r!   r"   x25519_supported  r4   zBackend.x25519_supportedc                 C  s"   | j rdS tj otj otj S r8   )r   r   CRYPTOGRAPHY_IS_LIBRESSLre   rJ   r   r!   r!   r"   x448_supported
  s   zBackend.x448_supportedc                 C     t jpt jpt jS r   r   rJ   re   #CRYPTOGRAPHY_OPENSSL_350_OR_GREATERr   r!   r!   r"   mlkem_supported  
   zBackend.mlkem_supportedc                 C  r   r   r   r   r!   r!   r"   mldsa_supported  r   zBackend.mldsa_supportedc                 C     dS rI   r!   r   r!   r!   r"   ed25519_supported!     zBackend.ed25519_supportedc                 C  s   t j ot j ot j S r   )r   r   re   rJ   r   r!   r!   r"   ed448_supported$  s
   zBackend.ed448_supportedc                 C  s   t jo| j S r   )r   #CRYPTOGRAPHY_OPENSSL_320_OR_GREATERr   r   r!   r!   r"   ecdsa_deterministic_supported+  s   z%Backend.ecdsa_deterministic_supportedc                 C  r}   r   r~   r   r!   r!   r"   poly1305_supported1  r4   zBackend.poly1305_supportedc                 C  r   rI   r!   r   r!   r!   r"   pkcs7_supported4  r   zBackend.pkcs7_supportedN)r   r   )r   r$   )r(   r)   r   r   )r   r1   )r5   r6   r   r)   )r   r)   )rS   r   rT   r   r   r)   )r   rY   )r]   r   r   r)   )rl   rm   r   r)   )rq   rr   rl   rm   r   r)   )r5   rw   rl   rm   r   r)   )B__name__
__module____qualname____doc__namer   rU   r   rL   rM   rN   rO   rP   rQ   SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256r:   r   	SECP224R1	SECP256R1	SECP384R1	SECP521R1rn   _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+   r/   r%   r3   r;   r>   rE   rH   rR   rW   rX   r[   r\   rc   rd   rf   rh   rk   rp   rv   ry   rz   r|   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r      sz    





	


	



	














	




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   rt   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!   r"   <module>   s     
