
    )h%                        S SK Jr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJrJrJrJr  S S	KJr  S S
KJr  S SKJrJr   " S S5      r\" 5       rg)    )annotations)openssl)binding)hashes)AsymmetricPadding)ec)utils)MGF1OAEPPSSPKCS1v15)CipherAlgorithm)AES)CBCModec                  
   \ rS rSrSrSr\4r\R                  \R                  \R                  \R                  \R                  \R                  \R                  \R                   \R"                  \R$                  \R&                  \R(                  4r\R.                  \R0                  \R2                  \R4                  4rSrSrSS-  rSrS\-  r S)S jr!S*S jr"S+S	 jr#S)S
 jr$S*S jr%S,S jr&S-S jr'S.S jr(    S.S jr)S/S jr*S.S jr+S0S jr,S.S jr-S1S jr.S.S jr/S2S jr0S2S jr1S/S jr2S.S jr3S/S jr4S3S jr5      S4S jr6      S5S jr7S/S jr8S/S jr9S/S  jr:S/S! jr;S/S" jr<S/S# jr=S/S$ jr>S/S% jr?S/S& jr@S'rAg()6Backend   z!
OpenSSL API binding interfaces.
r   i   i     c                    [         R                  " 5       U l        U R                  R                  U l        U R                  R
                  U l        [        R                  " 5       U l	        g N)
r   Binding_bindingffi_ffilib_librust_opensslis_fips_enabled_fips_enabledselfs    N/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/backend.py__init__Backend.__init__E   sC    )MM%%	MM%%	)99;    c                f    SU R                  5        SU R                   S[        R                   S3$ )Nz<OpenSSLBackend(version: z, FIPS: z
, Legacy: z)>)openssl_version_textr    r   _legacy_provider_loadedr!   s    r#   __repr__Backend.__repr__K   sC    '(A(A(C'D E''( )#;;<B@	
r&   c                .    [         R                  " U5      $ r   )r   _openssl_assert)r"   oks     r#   openssl_assertBackend.openssl_assertR   s    &&r**r&   c                    [         R                  " [         R                  5        [         R                  " 5       (       d   e[         R                  " 5       U l        g r   )r   enable_fips
_providersr   r    r!   s    r#   _enable_fipsBackend._enable_fipsU   s>     	  !8!89++----)99;r&   c                ,    [         R                  " 5       $ )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(   Backend.openssl_version_text\   s     0022r&   c                ,    [         R                  " 5       $ r   )r   openssl_versionr!   s    r#   openssl_version_numberBackend.openssl_version_numbere   s    ++--r&   c                    UR                   S;   a-  UR                    UR                  S-   3R                  S5      nOUR                   R                  S5      nU R                  R	                  U5      nU$ )N)blake2bblake2s   ascii)namedigest_sizeencoder   EVP_get_digestbyname)r"   	algorithmalgevp_mds       r#   _evp_md_from_algorithmBackend._evp_md_from_algorithmh   sk    >>33^^$Y%:%:Q%>$?@GGC ..''0C//4r&   c                    U R                   (       a  [        XR                  5      (       d  gU R                  U5      nX R                  R
                  :g  $ NF)r    
isinstance_fips_hashesrH   r   NULL)r"   rE   rG   s      r#   hash_supportedBackend.hash_supporteds   s?    j<M<M&N&N,,Y7''r&   c                    U R                   (       a   [        U[        R                  5      (       a  gU R	                  U5      $ rK   r    rL   r   SHA1rO   r"   rE   s     r#   signature_hash_supported Backend.signature_hash_supportedz   s1    
 *Y"D"D""9--r&   c                Z    U R                   (       a  g[        [        R                  S5      $ )NFderive_scrypt)r    hasattrr   kdfr!   s    r#   scrypt_supportedBackend.scrypt_supported   s!    <++_==r&   c                    U R                   (       a   [        U[        R                  5      (       a  gU R	                  U5      $ )NTrR   rT   s     r#   hmac_supportedBackend.hmac_supported   s/    *Y"D"D""9--r&   c                    U R                   (       a  [        XR                  5      (       d  g[        R                  R                  X5      $ rK   )r    rL   _fips_ciphersr   cipherscipher_supported)r"   ciphermodes      r#   rc   Backend.cipher_supported   s8     f&8&899##44VBBr&   c                $    U R                  U5      $ r   )r^   rT   s     r#   pbkdf2_hmac_supportedBackend.pbkdf2_hmac_supported   s    ""9--r&   c                ,    [         R                  " 5       $ r   )r   capture_error_stackr!   s    r#   _consume_errorsBackend._consume_errors   s    //11r&   c                   U R                   (       a   [        U[        R                  5      (       a  g[        U[        R                  [        R                  [        R
                  [        R                  [        R                  45      $ rK   )r    rL   r   rS   SHA224SHA256SHA384SHA512rT   s     r#   _oaep_hash_supportedBackend._oaep_hash_supported   sV    *Y"D"D	
 		
r&   c                b   [        U[        5      (       a  g[        U[        5      (       a  [        UR                  [        5      (       aj  U R
                  (       a4  [        UR                  R                  [        R                  5      (       a  gU R                  UR                  R                  5      $ [        U[        5      (       af  [        UR                  [        5      (       aG  U R                  UR                  R                  5      =(       a    U R                  UR                  5      $ g)NTF)rL   r   r   _mgfr
   r    
_algorithmr   rS   rO   r   rs   r"   paddings     r#   rsa_padding_supportedBackend.rsa_padding_supported   s    gx((%%*W\\4*H*H !!j''' ' **7<<+B+BCC&&:gllD+I+I,,'' @++G,>,>?@ r&   c                r    U R                   (       a  [        U[        5      (       a  gU R                  U5      $ rK   )r    rL   r   rz   rx   s     r#   rsa_encryption_supported Backend.rsa_encryption_supported   s+    *Wh"?"?--g66r&   c                \    [         R                  (       + =(       a    U R                  (       + $ r   )r   CRYPTOGRAPHY_IS_BORINGSSLr    r!   s    r#   dsa_supportedBackend.dsa_supported   s$    666 '&&&	
r&   c                P    U R                  5       (       d  gU R                  U5      $ rK   )r   rU   rT   s     r#   dsa_hash_supportedBackend.dsa_hash_supported   s%    !!##,,Y77r&   c                R    U R                  U[        SUR                  -  5      5      $ )N    )rc   r   
block_sizerT   s     r#   cmac_algorithm_supported Backend.cmac_algorithm_supported   s*    $$s7Y%9%99:
 	
r&   c                    U R                   (       a  [        XR                  5      (       d  g[        R                  R                  U5      $ rK   )r    rL   _fips_ecdh_curvesr   r   curve_supported)r"   curves     r#   elliptic_curve_supported Backend.elliptic_curve_supported   s:    j))'
 '
 ..u55r&   c                    [        U[        R                  5      (       d  gU R                  U5      =(       aF    [        UR                  [
        R                  5      =(       d    U R                  UR                  5      $ rK   )rL   r   ECDSAr   rE   
asym_utils	PrehashedrO   )r"   signature_algorithmr   s      r#   ,elliptic_curve_signature_algorithm_supported4Backend.elliptic_curve_signature_algorithm_supported   sc     -rxx88,,U3 
*44j6J6JK B""#6#@#@A	
r&   c                f    U R                  U5      =(       a    [        U[        R                  5      $ r   )r   rL   r   ECDH)r"   rE   r   s      r#   +elliptic_curve_exchange_algorithm_supported3Backend.elliptic_curve_exchange_algorithm_supported   s,     ,,U3 

rww9
 	
r&   c                ,    [         R                  (       + $ r   r   r   r!   s    r#   dh_supportedBackend.dh_supported       9999r&   c                4    U R                   R                  S:H  $ )Nr   )r   Cryptography_HAS_EVP_PKEY_DHXr!   s    r#   dh_x942_serialization_supported'Backend.dh_x942_serialization_supported   s    yy66!;;r&   c                (    U R                   (       a  ggNFTr    r!   s    r#   x25519_supportedBackend.x25519_supported       r&   c                    U R                   (       a  g[        R                  (       + =(       a    [        R                  (       + $ rK   r    r   CRYPTOGRAPHY_IS_LIBRESSLr   r!   s    r#   x448_supportedBackend.x448_supported   0    555 ; :::	
r&   c                (    U R                   (       a  ggr   r   r!   s    r#   ed25519_supportedBackend.ed25519_supported  r   r&   c                    U R                   (       a  g[        R                  (       + =(       a    [        R                  (       + $ rK   r   r!   s    r#   ed448_supportedBackend.ed448_supported  r   r&   c                R    [         R                  =(       a    U R                  (       + $ r   )r   #CRYPTOGRAPHY_OPENSSL_320_OR_GREATERr    r!   s    r#   ecdsa_deterministic_supported%Backend.ecdsa_deterministic_supported  s!    << '&&&	
r&   c                (    U R                   (       a  ggr   r   r!   s    r#   poly1305_supportedBackend.poly1305_supported  r   r&   c                ,    [         R                  (       + $ r   r   r!   s    r#   pkcs7_supportedBackend.pkcs7_supported  r   r&   )r   r   r    r   N)returnNone)r   str)r.   boolr   r   )r   int)rE   hashes.HashAlgorithm)rE   r   r   r   )r   r   )rd   r   re   r   r   r   )r   zlist[rust_openssl.OpenSSLError])ry   r   r   r   )r   ec.EllipticCurver   r   )r   z"ec.EllipticCurveSignatureAlgorithmr   r   r   r   )rE   zec.ECDHr   r   r   r   )B__name__
__module____qualname____firstlineno____doc__rA   r   ra   r   ro   rp   rq   rr   
SHA512_224
SHA512_256SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256rM   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*   r/   r4   r(   r:   rH   rO   rU   r[   r^   rc   rh   rl   rs   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__ 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	   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      sK   
 # F 8 1 H 8 I A: A:H )r&   