403Webshell
Server IP : 15.235.198.142  /  Your IP : 216.73.216.190
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc
�

�3Tf���<�ddlmZddlZddlZddlZddlZddlmZddlmZm	Z	ddl
mZmZddl
mZddlmZddlmZdd	lmZmZdd
lmZmZddlmZddlmZdd
lmZm Z ddl!m"Z"ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ddl,m-Z-m.Z.m/Z/m0Z0ddl1m2Z2m3Z3ddl4m5Z5m6Z6ddl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCddlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMddlNmOZOddlPmQZQmRZRmSZSmTZTmUZUej�dddg�ZWGd�d�ZXGd�d�ZYGd�d�ZZd!d �Z[eY�Z\y)"�)�annotationsN)�contextmanager)�utils�x509)�UnsupportedAlgorithm�_Reasons)�aead)�_CipherContext��_CMACContext)�_EllipticCurvePrivateKey�_EllipticCurvePublicKey)�_RSAPrivateKey�
_RSAPublicKey)�openssl)�binding)�hashes�
serialization)�AsymmetricPadding)�dh�dsa�ec�ed448�ed25519�rsa�x448�x25519)�MGF1�OAEP�PSS�PKCS1v15)�PrivateKeyTypes�PublicKeyTypes)�BlockCipherAlgorithm�CipherAlgorithm)�AES�AES128�AES256�ARC4�SM4�Camellia�ChaCha20�	TripleDES�_BlowfishInternal�_CAST5Internal�
_IDEAInternal�
_SEEDInternal)	�CBC�CFB�CFB8�CTR�ECB�GCM�OFB�XTS�Mode)�ssh)�PBES�PKCS12Certificate�PKCS12KeyAndCertificates�PKCS12PrivateKeyTypes�_PKCS12CATypes�
_MemoryBIO�bio�char_ptrc��eZdZy)�_RC2N)�__name__�
__module__�__qualname__���N/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/backend.pyrErE\s��rJrEc��eZdZdZdZhd�ZefZejejejejejejejej ej"ej$ej&ej(fZej.ej0ej2ej4fZdZdZddzZdZdezZ dwd�Z!dxd�Z"	dy					dzd
�Z#dwd�Z$dxd�Z%d{d
�Z&d|d�Z'd|d�Z(d}d�Z)				d}d�Z*d~d�Z+d}d�Z,dd�Z-dwd�Z.dwd�Z/						d�d�Z0						d�d�Z1d}d�Z2d�d�Z3d{d�Z4d�d�Z5						d�d�Z6						d�d�Z7						d�d�Z8				d�d �Z9d!�Z:d"�Z;d�d#�Z<d$�Z=d�d%�Z>				d�d&�Z?d�d'�Z@d}d(�ZAd�d)�ZBd�d*�ZCd�d+�ZD				d�d,�ZE				d�d-�ZF				d�d.�ZG				d�d/�ZH				d�d0�ZId~d1�ZJd}d2�ZKd~d3�ZLd�d4�ZM								d�d5�ZNd�d6�ZOd�d7�ZP								d�d8�ZQd9�ZRd�d:�ZSd�d;�ZTd�d<�ZUd�d=�ZVd�d>�ZW		d�d?�ZXd�d@�ZYd�dA�ZZ						d�dB�Z[				d�dC�Z\				d�dD�Z]				d�dE�Z^						d�dF�Z_						d�dG�Z`d�dH�Zad�dI�Zb						d�dJ�ZcdK�Zdd�dL�ZeefdM��Zg						d�dN�Zh								d�dO�Zi		d�dP�Zjd�dQ�Zk						d�dR�Zld~dS�Zm						d�dT�Zn				d�dU�Zo						d�dV�Zp				d�dW�Zq				d�dX�Zr				d�dY�Zs	dy							d�dZ�Ztd~d[�Zud�d\�Zv				d�d]�Zwd�d^�Zxd~d_�Zyd�d`�Zzd�da�Z{d�db�Z|d~dc�Z}d~dd�Z~				d�de�Z				d�df�Z�d�dg�Z�d~dh�Z�d�di�Z�d�dj�Z�d�dk�Z�d~dl�Z�d�dm�Z�e�j�dn��Z�						d�do�Z�						d�dp�Z�												d�dq�Z�d~dr�Z�d~ds�Z�				d�dt�Z�				d�du�Z�d�dv�Z�y	)��Backendz)
    OpenSSL API binding interfaces.
    r>�aes-128-ccm�aes-128-gcm�aes-192-ccm�aes-192-gcm�aes-256-ccm�aes-256-gcm�i�c���tj�|_|jj|_|jj
|_tj�|_	i|_
|j�|jjg|_
|jjr0|jj|jj �yy�N)r�Binding�_binding�ffi�_ffi�lib�_lib�rust_openssl�is_fips_enabled�
_fips_enabled�_cipher_registry�_register_default_ciphers�EVP_PKEY_DH�	_dh_types�Cryptography_HAS_EVP_PKEY_DHX�append�EVP_PKEY_DHX��selfs rK�__init__zBackend.__init__�s������)��
��M�M�%�%��	��M�M�%�%��	�)�9�9�;���

�	
��	
�&�&�(��)�)�/�/�0����9�9�2�2��N�N�!�!�$�)�)�"8�"8�9�3rJc��dj|j�|j|jj�S)Nz3<OpenSSLBackend(version: {}, FIPS: {}, Legacy: {})>)�format�openssl_version_textr`rY�_legacy_provider_loadedrhs rK�__repr__zBackend.__repr__�s7��D�K�K��%�%�'�����M�M�1�1�
�	
rJNc�F�tj|j||��S)N)�errors)r�_openssl_assertr])ri�okrqs   rK�openssl_assertzBackend.openssl_assert�s��
�&�&�t�y�y�"�V�D�DrJc��|jj�tj�sJ�tj�|_yrW)rY�_enable_fipsr^r_r`rhs rKrvzBackend._enable_fips�s7��	
�
�
�"�"�$��+�+�-�-�-�)�9�9�;��rJc��|jj|jj|jj��jd�S)z�
        Friendly string name of the loaded OpenSSL library. This is not
        necessarily the same version as it was compiled against.

        Example: OpenSSL 1.1.1d  10 Sep 2019
        �ascii)r[�stringr]�OpenSSL_version�OPENSSL_VERSION�decoderhs rKrmzBackend.openssl_version_text�s@���y�y����I�I�%�%�d�i�i�&?�&?�@�
�
�&��/�	rJc�6�|jj�SrW)r]�OpenSSL_version_numrhs rK�openssl_version_numberzBackend.openssl_version_number�s���y�y�,�,�.�.rJc� �|jdk(s|jdk(r9dj|j|jdz�jd�}n|jjd�}|jj|�}|S)N�blake2b�blake2sz{}{}�rx)�namerl�digest_size�encoder]�EVP_get_digestbyname)ri�	algorithm�alg�evp_mds    rK�_evp_md_from_algorithmzBackend._evp_md_from_algorithm�sv���>�>�Y�&�)�.�.�I�*E��-�-����	� 5� 5�� 9���f�W�o�
��.�.�'�'��0�C����/�/��4���
rJc�x�|j|�}|j||jjk7�|SrW)r�rtr[�NULL�rir�r�s   rK�_evp_md_non_null_from_algorithmz'Backend._evp_md_non_null_from_algorithm�s2���,�,�Y�7�����F�d�i�i�n�n�4�5��
rJc��|jrt||j�sy|j|�}||jj
k7S�NF)r`�
isinstance�_fips_hashesr�r[r�r�s   rK�hash_supportedzBackend.hash_supported�s@�����j��D�<M�<M�&N���,�,�Y�7��������'�'rJc�r�|jrt|tj�ry|j	|�Sr��r`r�r�SHA1r��rir�s  rK�signature_hash_supportedz Backend.signature_hash_supported�s.��
���*�Y����"D���"�"�9�-�-rJc�N�|jry|jjdk(S�NFrU)r`r]�Cryptography_HAS_SCRYPTrhs rK�scrypt_supportedzBackend.scrypt_supported�s#�������9�9�4�4��9�9rJc�r�|jrt|tj�ry|j	|�S)NTr�r�s  rK�hmac_supportedzBackend.hmac_supported�s,�����*�Y����"D���"�"�9�-�-rJc���|jrt||j�sy	|jt	|�t	|�f}||||�}|jj|k7S#t
$rYywxYwr�)r`r��
_fips_ciphersra�type�KeyErrorr[r�)ri�cipher�mode�adapter�
evp_ciphers     rK�cipher_supportedzBackend.cipher_supported�sy������f�d�&8�&8�9��	��+�+�D��L�$�t�*�,D�E�G��T�6�4�0�
��y�y�~�~��+�+���	��	�s�#A+�+	A7�6A7c�|�||f|jvrtdj||���||j||f<y)Nz"Duplicate registration for: {} {}.)ra�
ValueErrorrl)ri�
cipher_cls�mode_clsr�s    rK�register_cipher_adapterzBackend.register_cipher_adapter�sL����!�T�%:�%:�:��4�;�;�����
�
7>����j�(�2�3rJc	��tttfD]H}ttt
ttttfD]}|j||td��� �Jttt
ttfD]"}|jt|td���$ttttfD]"}|jt|td���$|jtt
td��|jttd�td��|jtt t"�t
ttttfD]"}|jt$|td���$|j&j(s|j*j,�s!tttt
fD]"}|jt.|td���$tttt
fD]"}|jt0|td���$t3j4t6t8gtttt
g�D]!\}}|j||td���#|jt:td�td	��|jt<td�td
��yy)Nz+{cipher.name}-{cipher.key_size}-{mode.name}zdes-ede3-{mode.name}zdes-ede3�chacha20zsm4-{mode.name}zbf-{mode.name}zseed-{mode.name}z{cipher.name}-{mode.name}�rc4�rc2)r&r'r(r2r5r6r8r3r4r7r��GetCipherByNamer+r-r,r�r9�_get_xts_cipherr*rYrnr]�#CRYPTOGRAPHY_OPENSSL_300_OR_GREATERr.r1�	itertools�productr/r0r)rE)rir�r�s   rKrbz!Backend._register_default_cipherssj�����/�	�J� �#�s�C��d�C�@�
���,�,���#�E���
�	��c�3��S�1�	�H��(�(���� M�N�
�	��c�4��-�	�H��(�(��8�_�5K�%L�
�	�	
�$�$��s�O�J�7�	
�	
�$�$��d�4�j�/�*�"=�	
�	
�$�$�S�#��?��c�3��S�1�	�H��(�(��X��/@�A�
�	�
�M�M�1�1��9�9�@�@� �#�s�C�0�
���,�,�%��#�$4�5��
�!�#�s�C�0�
���,�,�!��#�$6�7��
�)2�(9�(9���/��c�3��$�)�
�$�
�H��,�,���#�$?�@��	
�
�(�(��d�4�j�/�%�"8�
�
�(�(��d�4�j�/�%�"8�
�7ArJc�:�t|||tj�SrW)r
�_ENCRYPT�rir�r�s   rK�create_symmetric_encryption_ctxz'Backend.create_symmetric_encryption_ctxL����d�F�D�.�2I�2I�J�JrJc�:�t|||tj�SrW)r
�_DECRYPTr�s   rK�create_symmetric_decryption_ctxz'Backend.create_symmetric_decryption_ctxQr�rJc�$�|j|�SrW)r�r�s  rK�pbkdf2_hmac_supportedzBackend.pbkdf2_hmac_supportedVs���"�"�9�-�-rJc�*�tj�SrW)r^�capture_error_stackrhs rK�_consume_errorszBackend._consume_errorsYs���/�/�1�1rJc���||jjk7sJ�|j|jj	|��|jj|�}|jj
d|�}|jj||�}|j|dk\�tj|jj|�d|d�}|S)Nzunsigned char[]r�big)r[r�rtr]�BN_is_negative�BN_num_bytes�new�	BN_bn2bin�int�
from_bytes�buffer)ri�bn�bn_num_bytes�bin_ptr�bin_len�vals      rK�
_bn_to_intzBackend._bn_to_int\s����T�Y�Y�^�^�#�#�#�����	�	� 8� 8�� <�<�=��y�y�-�-�b�1���)�)�-�-� 1�<�@���)�)�%�%�b�'�2�����G�q�L�)��n�n�T�Y�Y�-�-�g�6�x��@�%�H���
rJc�(�|jt|j�dzdz�d�}|jj	|t|�|jj�}|j||jjk7�|S)a

        Converts a python integer to a BIGNUM. The returned BIGNUM will not
        be garbage collected (to support adding them to structs that take
        ownership of the object). Be sure to register it for GC if it will
        be discarded after use.
        g @rUr�)	�to_bytesr��
bit_lengthr]�	BN_bin2bn�lenr[r�rt)ri�num�binary�bn_ptrs    rK�
_int_to_bnzBackend._int_to_bnhsn�����c�#�.�.�"2�S�"8�1�"<�=�u�E�����$�$�V�S��[�$�)�)�.�.�I�����F�d�i�i�n�n�4�5��
rJc�`�tj||�|jj�}|j	||j
jk7�|j
j||jj�}|j|�}|j
j||jj�}|jj||||j
j�}|j	|dk(�|j|�}t|||d��S)NrUT��unsafe_skip_rsa_key_validation)r�_verify_rsa_parametersr]�RSA_newrtr[r��gc�RSA_freer��BN_free�RSA_generate_key_ex�_rsa_cdata_to_evp_pkeyr)ri�public_exponent�key_size�	rsa_cdatar��res�evp_pkeys       rK�generate_rsa_private_keyz Backend.generate_rsa_private_keyts���	�"�"�?�H�=��I�I�%�%�'�	����I������7�8��I�I�L�L��D�I�I�,>�,>�?�	�
�_�_�_�
-��
�Y�Y�\�\�"�d�i�i�/�/�
0���i�i�+�+��x��T�Y�Y�^�^�
��	
���C�1�H�%��.�.�y�9����)�X�d�
�	
rJc�.�|dk\xr|dzdk7xr|dk\S)N�rUrirI)rir�r�s   rK�!generate_rsa_parameters_supportedz)Backend.generate_rsa_parameters_supported�s/��
�q� �
 ��!�#�q�(�
 ��C��	
rJc
�(�tj|j|j|j|j
|j|j|jj|jj�|jj�}|j||jjk7�|jj!||jj"�}|j%|j�}|j%|j�}|j%|j�}|j%|j
�}|j%|j�}|j%|j�}	|j%|jj�}
|j%|jj�}|jj'|||�}|j|dk(�|jj)|||
|�}|j|dk(�|jj+||||	�}|j|dk(�|j-|�}
t/|||
|��S)NrUr�)r�_check_private_key_components�p�q�d�dmp1�dmq1�iqmp�public_numbers�e�nr]r�rtr[r�r�r�r��RSA_set0_factors�RSA_set0_key�RSA_set0_crt_paramsr�r)ri�numbersr�r�r�r�r�r�r�r�r�r�r�r�s              rK�load_rsa_private_numbersz Backend.load_rsa_private_numbers�s���
	�)�)��I�I��I�I��I�I��L�L��L�L��L�L��"�"�$�$��"�"�$�$�		
��I�I�%�%�'�	����I������7�8��I�I�L�L��D�I�I�,>�,>�?�	��O�O�G�I�I�&���O�O�G�I�I�&���O�O�G�I�I�&�����w�|�|�,�����w�|�|�,�����w�|�|�,���O�O�G�2�2�4�4�5���O�O�G�2�2�4�4�5���i�i�(�(��A�q�9�����C�1�H�%��i�i�$�$�Y��1�a�8�����C�1�H�%��i�i�+�+�I�t�T�4�H�����C�1�H�%��.�.�y�9������+I�	
�	
rJc�n�tj|j|j�|jj�}|j
||jjk7�|jj||jj�}|j|j�}|j|j�}|jj||||jj�}|j
|dk(�|j|�}t|||�S�NrU)r�_check_public_key_componentsr�r�r]r�rtr[r�r�r�r�r�r�r)rir�r�r�r�r�r�s       rK�load_rsa_public_numberszBackend.load_rsa_public_numbers�s���	�(�(����G�I�I�>��I�I�%�%�'�	����I������7�8��I�I�L�L��D�I�I�,>�,>�?�	��O�O�G�I�I�&���O�O�G�I�I�&���i�i�$�$�Y��1�d�i�i�n�n�E�����C�1�H�%��.�.�y�9���T�9�h�7�7rJc���|jj�}|j||jjk7�|jj||jj�}|SrW)r]�EVP_PKEY_newrtr[r�r��
EVP_PKEY_free)rir�s  rK�_create_evp_pkey_gczBackend._create_evp_pkey_gc�sR���9�9�)�)�+�����H��	�	���6�7��9�9�<�<��$�)�)�*A�*A�B���rJc��|j�}|jj||�}|j|dk(�|Sr)rr]�EVP_PKEY_set1_RSArt)rir�r�r�s    rKr�zBackend._rsa_cdata_to_evp_pkey�s=���+�+�-���i�i�)�)�(�I�>�����C�1�H�%��rJc�F�|jj|�}|jj|t	|��}|j||jjk7�t|jj||jj�|�S)z�
        Return a _MemoryBIO namedtuple of (BIO, char*).

        The char* is the storage for the BIO and it must stay alive until the
        BIO is finished with.
        )
r[�from_bufferr]�BIO_new_mem_bufr�rtr�rAr��BIO_free)ri�data�data_ptrrBs    rK�
_bytes_to_biozBackend._bytes_to_bio�ss���9�9�(�(��.���i�i�'�'��#�d�)�<�����C�4�9�9�>�>�1�2��$�)�)�,�,�s�D�I�I�,>�,>�?��J�JrJc�p�|jj�}|j||jjk7�|jj|�}|j||jjk7�|jj
||jj�}|S)z.
        Creates an empty memory BIO.
        )r]�	BIO_s_memrtr[r��BIO_newr�r)ri�
bio_methodrBs   rK�_create_mem_bio_gczBackend._create_mem_bio_gc�s����Y�Y�(�(�*�
����J�$�)�)�.�.�8�9��i�i���
�+�����C�4�9�9�>�>�1�2��i�i�l�l�3��	�	� 2� 2�3���
rJc�6�|jjd�}|jj||�}|j	|dkD�|j	|d|jj
k7�|jj
|d|�dd}|S)zE
        Reads a memory BIO. This only works on memory BIOs.
        zchar **rN)r[r�r]�BIO_get_mem_datartr�r�)rirB�buf�buf_len�bio_datas     rK�
_read_mem_biozBackend._read_mem_bio�s����i�i�m�m�I�&���)�)�,�,�S�#�6�����G�a�K�(����C��F�d�i�i�n�n�4�5��9�9�#�#�C��F�G�4�Q�7���rJc�P	�|jj|�}||jjk(r�|jj|�}|j	||j
jk7�|j
j||jj�}t||||��S||jjk(�r|jj�s|jjs�|jjs�|jj|�}|j	||j
jk7�|j
j||jj�}|j�}|jj||�}|j	|dk(�|j!|j#|�d|��S||jj$k(rBt&j(j+t-|j
j/d|���S||jj0k(r�|jj3|�}|j	||j
jk7�|j
j||jj4�}t7|||�S||j8vrBt&j:j+t-|j
j/d|���S|t=|jdd�k(rBt&j>j+t-|j
j/d|���S|t=|jdd�k(rBt&j@j+t-|j
j/d|���S||jjBk(rBt&jDj+t-|j
j/d|���S|t=|jdd�k(rBt&jFj+t-|j
j/d|���StId	��)
zd
        Return the appropriate type of PrivateKey given an evp_pkey cdata
        pointer.
        r�rUN)�passwordr��	uintptr_t�EVP_PKEY_ED25519�
EVP_PKEY_X448�EVP_PKEY_ED448�Unsupported key type.)%r]�EVP_PKEY_id�EVP_PKEY_RSA�EVP_PKEY_get1_RSArtr[r�r�r�r�EVP_PKEY_RSA_PSS�CRYPTOGRAPHY_IS_LIBRESSL�CRYPTOGRAPHY_IS_BORINGSSL�#CRYPTOGRAPHY_OPENSSL_LESS_THAN_111Er�i2d_RSAPrivateKey_bio�load_der_private_keyr�EVP_PKEY_DSAr^r�private_key_from_ptrr��cast�EVP_PKEY_EC�EVP_PKEY_get1_EC_KEY�EC_KEY_freer
rdr�getattrrr�EVP_PKEY_X25519rrr)rir�r��key_typer�rBr��ec_cdatas        rK�_evp_pkey_to_private_keyz Backend._evp_pkey_to_private_key�s����9�9�(�(��2���t�y�y�-�-�-��	�	�3�3�H�=�I����	�T�Y�Y�^�^� ;�<��	�	���Y��	�	�0B�0B�C�I�!����/M�	�
�
��	�	�2�2�2��I�I�6�6��I�I�7�7��I�I�A�A��	�	�3�3�H�=�I����	�T�Y�Y�^�^� ;�<��	�	���Y��	�	�0B�0B�C�I��)�)�+�C��)�)�1�1�#�y�A�C�����q��)��,�,��"�"�3�'��/M�-��
�
����/�/�
/��#�#�8�8��D�I�I�N�N�;��9�:��
�����.�.�
.��y�y�5�5�h�?�H�����D�I�I�N�N� :�;��y�y�|�|�H�d�i�i�.C�.C�D�H�+�D�(�H�E�E�
����
'��?�?�7�7��D�I�I�N�N�;��9�:��
������,>��E�
E��'�'�<�<��D�I�I�N�N�;��9�:��
������O�T�B�
B��$�$�9�9��D�I�I�N�N�;��9�:��
�����2�2�
2��&�&�;�;��D�I�I�N�N�;��9�:��
������,<�d�C�
C��%�%�:�:��D�I�I�N�N�;��9�:��
�'�'>�?�?rJc�^	�|jj|�}||jjk(r�|jj|�}|j	||j
jk7�|j
j||jj�}t|||�S||jjk(�r|jjs�|jjs�|jjs�|jj|�}|j	||j
jk7�|j
j||jj�}|j�}|jj||�}|j	|dk(�|j!|j#|��S||jj$k(rBt&j(j+t-|j
j/d|���S||jj0k(r�|jj3|�}||j
jk(r|j5�}t7d|��|j
j||jj8�}t;|||�S||j<vrBt&j>j+t-|j
j/d|���S|tA|jdd�k(rBt&jBj+t-|j
j/d|���S|tA|jdd�k(rBt&jDj+t-|j
j/d|���S||jjFk(rBt&jHj+t-|j
j/d|���S|tA|jdd�k(rBt&jJj+t-|j
j/d|���StMd��)	zc
        Return the appropriate type of PublicKey given an evp_pkey cdata
        pointer.
        rUrzUnable to load EC keyrNrr r!)'r]r"r#r$rtr[r�r�r�rr%r&r'r(r�i2d_RSAPublicKey_bio�load_der_public_keyrr+r^r�public_key_from_ptrr�r-r.r/r�r�r0rrdrr1rrr2rrr)rir�r3r�rBr�r4rqs        rK�_evp_pkey_to_public_keyzBackend._evp_pkey_to_public_keyGs����9�9�(�(��2���t�y�y�-�-�-��	�	�3�3�H�=�I����	�T�Y�Y�^�^� ;�<��	�	���Y��	�	�0B�0B�C�I� ��y�(�;�;���	�	�2�2�2��I�I�6�6��I�I�7�7��I�I�A�A��	�	�3�3�H�=�I����	�T�Y�Y�^�^� ;�<��	�	���Y��	�	�0B�0B�C�I��)�)�+�C��)�)�0�0��i�@�C�����q��)��+�+�D�,>�,>�s�,C�D�D�
����/�/�
/��#�#�7�7��D�I�I�N�N�;��9�:��
�����.�.�
.��y�y�5�5�h�?�H��4�9�9�>�>�)��-�-�/�� �!8�&�A�A��y�y�|�|�H�d�i�i�.C�.C�D�H�*�4��8�D�D�
����
'��?�?�6�6��D�I�I�N�N�;��9�:��
������,>��E�
E��'�'�;�;��D�I�I�N�N�;��9�:��
������O�T�B�
B��$�$�8�8��D�I�I�N�N�;��9�:��
�����2�2�
2��&�&�:�:��D�I�I�N�N�;��9�:��
������,<�d�C�
C��%�%�9�9��D�I�I�N�N�;��9�:��
�'�'>�?�?rJc��|jrt|tj�ryt|tjtjtj
tjtjf�Sr�)r`r�rr��SHA224�SHA256�SHA384�SHA512r�s  rK�_oaep_hash_supportedzBackend._oaep_hash_supported�sS�����*�Y����"D��������
�
��
�
��
�
��
�
�
�	
�		
rJc��t|t�ryt|t�rzt|jt�r`|j
r/t|jjtj�ry|j|jj�St|t�r\t|jt�rB|j|jj�xr|j|j�Sy)NTF)r�r!r �_mgfrr`�
_algorithmrr�r�rr@�ri�paddings  rK�rsa_padding_supportedzBackend.rsa_padding_supported�s����g�x�(��
���
%�*�W�\�\�4�*H��!�!�j����'�'����'���*�*�7�<�<�+B�+B�C�C�
���
&�:�g�l�l�D�+I��,�,����'�'��@��+�+�G�,>�,>�?�
@�rJc�^�|jrt|t�ry|j|�Sr�)r`r�r!rFrDs  rK�rsa_encryption_supportedz Backend.rsa_encryption_supported�s(�����*�W�h�"?���-�-�g�6�6rJc�^�|dvrtd��tjj|�S)N)irTiiz0Key size must be 1024, 2048, 3072, or 4096 bits.)r�r^r�generate_parameters)rir�s  rK�generate_dsa_parameterszBackend.generate_dsa_parameters�s4���3�3��B��
����3�3�H�=�=rJc�"�|j�SrW��generate_private_key�ri�
parameterss  rK�generate_dsa_private_keyz Backend.generate_dsa_private_key�����.�.�0�0rJc�F�|j|�}|j|�SrW)rKrQ)rir�rPs   rK�'generate_dsa_private_key_and_parametersz/Backend.generate_dsa_private_key_and_parameters�s%���1�1�(�;�
��,�,�Z�8�8rJc�j�tj|�tjj|�SrW)r�_check_dsa_private_numbersr^�from_private_numbers�rir�s  rK�load_dsa_private_numbersz Backend.load_dsa_private_numbers�s)��	�&�&�w�/����4�4�W�=�=rJc�~�tj|j�tjj	|�SrW)r�_check_dsa_parameters�parameter_numbersr^�from_public_numbersrXs  rK�load_dsa_public_numberszBackend.load_dsa_public_numbers�s/��	�!�!�'�";�";�<����3�3�G�<�<rJc�j�tj|�tjj|�SrW)rr[r^�from_parameter_numbersrXs  rK�load_dsa_parameter_numbersz"Backend.load_dsa_parameter_numbers�s)��	�!�!�'�*����6�6�w�?�?rJc�N�|jjxr
|jSrW)r]r'r`rhs rK�
dsa_supportedzBackend.dsa_supported�s%���	�	�3�3�3�N�D�<N�<N�8N�	
rJc�F�|j�sy|j|�Sr�)rcr�r�s  rK�dsa_hash_supportedzBackend.dsa_hash_supported�s"���!�!�#���,�,�Y�7�7rJc�R�|j|td|jz��S)N�)r�r2�
block_sizer�s  rK�cmac_algorithm_supportedz Backend.cmac_algorithm_supported�s*���$�$��s�7�Y�%9�%9�9�:�
�	
rJc��t||�SrWrr�s  rK�create_cmac_ctxzBackend.create_cmac_ctx�s���D�)�,�,rJc�R�|j|jj|||�SrW)�	_load_keyr]�PEM_read_bio_PrivateKey)rir
rr�s    rK�load_pem_private_keyzBackend.load_pem_private_key�s+���~�~��I�I�-�-���*�	
�	
rJc�8�|j|�}|jjd�}|jj	|j
|jj|jj|jjd�|�}||jjk7rA|jj||jj�}|j|�S|j�|jj|j
�}|j|dk(�|jj|j
|jj|jj|jjd�|�}||jjk7rN|jj||jj �}|j#|�}t%|||�S|j'�y)N�CRYPTOGRAPHY_PASSWORD_DATA *�Cryptography_pem_password_cbrU)rr[r�r]�PEM_read_bio_PUBKEYrBr��	addressof�
_original_libr�rr:r��	BIO_resetrt�PEM_read_bio_RSAPublicKeyr�r�r�_handle_key_loading_error)rir
�mem_bio�userdatar�r�r�s       rK�load_pem_public_keyzBackend.load_pem_public_key�s����$�$�T�*���9�9�=�=�!?�@���9�9�0�0��K�K��I�I�N�N��I�I����	�	�'�'�)G�
�
�

���t�y�y�~�~�%��y�y�|�|�H�d�i�i�.E�.E�F�H��/�/��9�9�

� � �"��)�)�%�%�g�k�k�2�C�����q��)��	�	�;�;�����	�	����	�	�#�#��I�I�+�+�-K���
�I��D�I�I�N�N�*� �I�I�L�L��D�I�I�4F�4F�G�	��6�6�y�A��$�T�9�h�?�?��.�.�0rJc�@�tjj|�SrW)r^r�from_pem_parameters�rir
s  rK�load_pem_parameterszBackend.load_pem_parameters������2�2�4�8�8rJc��|j|�}|j||�}|r|j||�S|j|jj
|||�SrW)r�"_evp_pkey_from_der_traditional_keyr5rmr]�d2i_PKCS8PrivateKey_bio)rir
rr�r�keys      rKr*zBackend.load_der_private_keysk���%�%�d�+���5�5�h��I����0�0��3��
��>�>��	�	�1�1���.�	�
rJc�H�|jj|j|jj�}||jjk7r?|jj||jj�}|�td��|S|j�y)N�4Password was given but private key is not encrypted.)	r]�d2i_PrivateKey_biorBr[r�r�r�	TypeErrorr�)rirrr�s    rKr�z*Backend._evp_pkey_from_der_traditional_key9s~���i�i�*�*�8�<�<������H���$�)�)�.�.� ��)�)�,�,�s�D�I�I�$;�$;�<�C��#��J����J�� � �"�rJc�B�|j|�}|jj|j|jj
�}||jj
k7rA|jj
||jj�}|j|�S|j�|jj|j�}|j|dk(�|jj|j|jj
�}||jj
k7rN|jj
||jj�}|j|�}t|||�S|j!�yr)rr]�d2i_PUBKEY_biorBr[r�r�rr:r�rvrt�d2i_RSAPublicKey_bior�r�rrx)rir
ryr�r�r�s      rKr8zBackend.load_der_public_keyGs+���$�$�T�*���9�9�+�+�G�K�K������H���t�y�y�~�~�%��y�y�|�|�H�d�i�i�.E�.E�F�H��/�/��9�9�

� � �"��)�)�%�%�g�k�k�2�C�����q��)��	�	�6�6����T�Y�Y�^�^��I��D�I�I�N�N�*� �I�I�L�L��D�I�I�4F�4F�G�	��6�6�y�A��$�T�9�h�?�?��.�.�0rJc�@�tjj|�SrW)r^r�from_der_parametersr~s  rK�load_der_parameterszBackend.load_der_parameters^r�rJc��|jtjj�}|j	|�}|j
j
|j|jj�}|j||jjk7�|jj||j
j�}|SrW)
�public_bytesr�Encoding�DERrr]�d2i_X509_biorBr[r�rtr��	X509_free)ri�certr
ryrs     rK�
_cert2osslzBackend._cert2osslas���� � ��!7�!7�!;�!;�<���$�$�T�*���y�y�%�%�g�k�k�4�9�9�>�>�B�����D�D�I�I�N�N�2�3��y�y�|�|�D�$�)�)�"5�"5�6���rJc���|j�}|jj||�}|j|dk(�t	j
|j
|��Sr)rr]�i2d_X509_biortr�load_der_x509_certificater)ri�x509_ptrrBr�s    rK�
_ossl2certzBackend._ossl2certisT���%�%�'���i�i�$�$�S�(�3�����C�1�H�%��-�-�d�.@�.@��.E�F�FrJc���|jtjjtjj
tj��}|j|�}|jj|j|jj�}|j||jjk7�|jj||jj�SrW)�
private_bytesrr�r��
PrivateFormat�PKCS8�NoEncryptionrr]r�rBr[r�rtr�r)rir�r
ryr�s     rK�	_key2osslzBackend._key2osslos���� � ��"�"�&�&��'�'�-�-��&�&�(�
��
�$�$�T�*���9�9�/�/��K�K��I�I�N�N�
��	
���H��	�	���6�7��y�y�|�|�H�d�i�i�&=�&=�>�>rJc��|j|�}|jjd�}|�Htjd|�|jj|�}||_t|�|_||j|jj|jj|jjd�|�}||jjk(r�|jdk7rb|j�|jdk(rt!d��|jdk(sJ�t#dj%|j&d	z
���|j)�|jj+||jj,�}|�|j.dk(rt!d
��|�|j.d	k(s|�J�|j1||�S)Nrqrrrr���z3Password was not given but private key is encrypted���zAPasswords longer than {} bytes are not supported by this backend.rUr�)rr[r�r�_check_bytesliker
rr��lengthrBr�rtr]ru�errorr�r�r�rl�maxsizerxr�r�calledr5)	ri�openssl_read_funcr
rr�ryrz�password_ptrr�s	         rKrmzBackend._load_key~s����$�$�T�*���9�9�=�=�!?�@�����"�"�:�x�8��9�9�0�0��:�L� ,�H��!�(�m�H�O�$��K�K��I�I�N�N��I�I����	�	�'�'�)G�
�
�

���t�y�y�~�~�%��~�~��"��$�$�&��>�>�R�'�#�M���$�>�>�R�/�/�/�$�+�+1�6�(�2B�2B�Q�2F�+G���
�.�.�0��9�9�<�<��$�)�)�*A�*A�B����H�O�O�q�$8��F��
�

� �X�_�_��%9�
�
�	���,�,��4�
�	
rJc�D���j�}|std��|dj�jj�jj
�s�|dj�jj�jj�sS�jjrH|dj�jj�jj�rtd��t�fd�|D��rtd��td|��)Nz|Could not deserialize key data. The data may be in an incorrect format or it may be encrypted with an unsupported algorithm.rz Bad decrypt. Incorrect password?c3��K�|]>}|j�jj�jj����@y�wrW)�_lib_reason_matchr]�ERR_LIB_EVP�'EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM)�.0r�ris  �rK�	<genexpr>z4Backend._handle_key_loading_error.<locals>.<genexpr>�s@�����
�
�	
�#�#��	�	�%�%��	�	�A�A�
�
�s�AAz!Unsupported public key algorithm.z�Could not deserialize key data. The data may be in an incorrect format, it may be encrypted with an unsupported algorithm, or it may be an unsupported key type (e.g. EC curves with explicit parameters).)r�r�r�r]r��EVP_R_BAD_DECRYPT�ERR_LIB_PKCS12�!PKCS12_R_PKCS12_CIPHERFINAL_ERROR�Cryptography_HAS_PROVIDERS�ERR_LIB_PROV�PROV_R_BAD_DECRYPT�any)rirqs` rKrxz!Backend._handle_key_loading_error�s����%�%�'������
�
�1�I�'�'��	�	�%�%�t�y�y�'B�'B�
��a�y�*�*��	�	�(�(��	�	�;�;��
�	�	�4�4��1�I�/�/��I�I�*�*��I�I�0�0���?�@�@�
�
�
 �
�
��@�A�A��4���
rJc��	|j|�}|jj	|�}||j
jk(r|j�y|j||jjk7�|jj|�y#t$r|jj}Y��wxYw)NFT)
�_elliptic_curve_to_nidrr]�	NID_undef�EC_GROUP_new_by_curve_namer[r�r�rt�
EC_GROUP_free)ri�curve�	curve_nid�groups    rK�elliptic_curve_supportedz Backend.elliptic_curve_supported�s���	,��3�3�E�:�I��	�	�4�4�Y�?���D�I�I�N�N�"�� � �"�����	�T�Y�Y�-@�-@� @�A��I�I�#�#�E�*���$�	,��	�	�+�+�I�	,�s�B�B>�=B>c�Z�t|tj�sy|j|�Sr�)r�r�ECDSAr�)ri�signature_algorithmr�s   rK�,elliptic_curve_signature_algorithm_supportedz4Backend.elliptic_curve_signature_algorithm_supported�s'���-�r�x�x�8���,�,�U�3�3rJc�0�|j|�r^|j|�}|jj|�}|j	|dk(�|j|�}t
|||�Std|j�d�tj��)z@
        Generate a new private key on the named curve.
        rUz Backend object does not support �.)r��_ec_key_new_by_curver]�EC_KEY_generate_keyrt�_ec_cdata_to_evp_pkeyr
rr�r�UNSUPPORTED_ELLIPTIC_CURVE)rir�r4r�r�s     rK�#generate_elliptic_curve_private_keyz+Backend.generate_elliptic_curve_private_key�s����(�(��/��0�0��7�H��)�)�/�/��9�C�����q��)��1�1�(�;�H�+�D�(�H�E�E�&�2�5�:�:�,�a�@��3�3��
rJc	�<�|j}|j|j�}|jj	|j|j�|jj�}|jj||�}|dk7r|j�td��|j�5}|j||j|j|�|jj!|�}|j#||jj$k7�t&jj)|�}|j#||jj$k7�|jj+|�}	|j#|	|jj$k7�|jj	|	|jj,�}	|jj/||	||jj$|jj$|�}|j#|dk(�|jj1|||	|�dk7rtd��	ddd�|j3|�}
t5|||
�S#1swY�'xYw)NrU�Invalid EC key.r)r�r�r�r[r�r��
private_valuer]�
BN_clear_free�EC_KEY_set_private_keyr�r��_tmp_bn_ctx�)_ec_key_set_public_key_affine_coordinates�x�y�EC_KEY_get0_grouprtr��backend�EC_KEY_get0_public_key�EC_POINT_new�
EC_POINT_free�EC_POINT_mul�EC_POINT_cmpr�r
)rir��publicr4r�r��bn_ctxr��	set_point�computed_pointr�s           rK�#load_elliptic_curve_private_numbersz+Backend.load_elliptic_curve_private_numberss#���'�'���,�,�V�\�\�:���	�	����O�O�G�1�1�2�D�I�I�4K�4K�
�
��i�i�.�.�x��G���!�8�� � �"��.�/�/�
�
�
�
�	4�6��:�:��&�(�(�F�H�H�f�
��I�I�/�/��9�E���������� 7�8����;�;�H�E�I����	�T�Y�Y�^�^� ;�<�!�Y�Y�3�3�E�:�N�����$�)�)�.�.� @�A�!�Y�Y�\�\���	�	� 7� 7��N��)�)�(�(�����	�	����	�	����
�C�
����q��)��	�	�&�&��9�n�f����
!�!2�3�3��5	4�B�-�-�h�7��'��h��A�A�G	4�	4�s
�=F.J�Jc��|j|j�}|j�5}|j||j|j
|�ddd�|j
|�}t|||�S#1swY�'xYwrW)r�r�r�r�r�r�r�r)rir�r4r�r�s     rK�"load_elliptic_curve_public_numbersz*Backend.load_elliptic_curve_public_numbersEs{���,�,�W�]�]�;��
�
�
�
�	�6��:�:��'�)�)�W�Y�Y��
�	��-�-�h�7��&�t�X�x�@�@�
	�	�s�)A;�;Bc	��|j|�}|jj|�}|j||jj
k7�|jj
|�}|j||jj
k7�|jj||jj�}|j�5}|jj|||t|�|�}|dk7r|j�td��	ddd�|jj||�}|j|dk(�|j|�}t!|||�S#1swY�WxYw)NrUz(Invalid public bytes for the given curve)r�r]r�rtr[r�r�r�r�r��EC_POINT_oct2pointr�r�r��EC_KEY_set_public_keyr�r)	rir��point_bytesr4r��pointr�r�r�s	         rK� load_elliptic_curve_public_bytesz(Backend.load_elliptic_curve_public_bytesQsJ���,�,�U�3���	�	�+�+�H�5�����E�T�Y�Y�^�^�3�4��	�	�&�&�u�-�����E�T�Y�Y�^�^�3�4��	�	���U�D�I�I�$;�$;�<��
�
�
�
�	M�6��)�)�.�.��u�k�3�{�+;�V��C��a�x��$�$�&� �!K�L�L��		M��i�i�-�-�h��>�����C�1�H�%��-�-�h�7��&�t�X�x�@�@�	M�	M�s
�A	E8�8Fc	�~�|j|�}|jj|�}|j||jj
k7�|jj
|�}|j||jj
k7�|jj||jj�}|j|�}|jj||jj�}|j�5}|jj||||jj
|jj
|�}|j|dk(�|jj|�}	|jj|�}
|jj|||	|
|�}|dk7r|j�t!d��	ddd�|jj#||�}|j|dk(�|j|�}|jj||jj�}|jj%||�}|j|dk(�|j'|�}t)|||�S#1swY��xYw)NrUz'Unable to derive key from private_value)r�r]r�rtr[r�r�r�r�r�r�r�r��
BN_CTX_get�EC_POINT_get_affine_coordinatesr�r�r�r�r�r
)
rir�r�r4r�r��valuer�r��bn_x�bn_y�privater�s
             rK�!derive_elliptic_curve_private_keyz)Backend.derive_elliptic_curve_private_keygs2���,�,�U�3���	�	�+�+�H�5�����E�T�Y�Y�^�^�3�4��	�	�&�&�u�-�����E�T�Y�Y�^�^�3�4��	�	���U�D�I�I�$;�$;�<�����
�.���	�	���U�D�I�I�$;�$;�<��
�
�
�
�	L�6��)�)�(�(��u�e�T�Y�Y�^�^�T�Y�Y�^�^�V��C�
����q��)��9�9�'�'��/�D��9�9�'�'��/�D��)�)�;�;��u�d�D�&��C��a�x��$�$�&� �!J�K�K��	L� �i�i�-�-�h��>�����C�1�H�%��/�/�-�0���)�)�,�,�w��	�	�(?�(?�@���i�i�.�.�x��A�����C�1�H�%��-�-�h�7��'��h��A�A�3	L�	L�s
�CJ3�3J<c�F�|j|�}|j|�SrW)r��_ec_key_new_by_curve_nid)rir�r�s   rKr�zBackend._ec_key_new_by_curve�s#���/�/��6�	��,�,�Y�7�7rJc���|jj|�}|j||jjk7�|jj||jj�SrW)r]�EC_KEY_new_by_curve_namertr[r�r�r0)rir�r4s   rKr�z Backend._ec_key_new_by_curve_nid�sP���9�9�5�5�i�@�����H��	�	���6�7��y�y�|�|�H�d�i�i�&;�&;�<�<rJc��|jrt||j�sy|j|�xrt|tj
�Sr�)r`r��_fips_ecdh_curvesr�r�ECDH)rir�r�s   rK�+elliptic_curve_exchange_algorithm_supportedz3Backend.elliptic_curve_exchange_algorithm_supported�sL�����j��4�)�)�'
���,�,�U�3�
�
��r�w�w�9
�	
rJc��|j�}|jj||�}|j|dk(�|Sr)rr]�EVP_PKEY_set1_EC_KEYrt)rir4r�r�s    rKr�zBackend._ec_cdata_to_evp_pkey�s=���+�+�-���i�i�,�,�X�x�@�����C�1�H�%��rJc�.�ddd�}|j|j|j�}|jj|j	��}||jj
k(r't
|j�d�tj��|S)z/
        Get the NID for a curve name.
        �
prime192v1�
prime256v1)�	secp192r1�	secp256r1z" is not a supported elliptic curve)	�getr�r]�
OBJ_sn2nidr�r�rrr�)rir��
curve_aliases�
curve_namer�s     rKr�zBackend._elliptic_curve_to_nid�s���
'3��N�
�"�&�&�u�z�z�5�:�:�>�
��I�I�(�(��):�):�)<�=�	���	�	�+�+�+�&��:�:�,�@�A��3�3��
��rJc#�K�|jj�}|j||jjk7�|jj||jj�}|jj|�	|��|jj|�y#|jj|�wxYw�wrW)	r]�
BN_CTX_newrtr[r�r��BN_CTX_free�BN_CTX_start�
BN_CTX_end)rir�s  rKr�zBackend._tmp_bn_ctx�s��������%�%�'�����F�d�i�i�n�n�4�5������f�d�i�i�&;�&;�<���	�	���v�&�	)��L��I�I� � ��(��D�I�I� � ��(�s�BC�B1�C�1C�Cc�t�|dks|dkrtd��|jj|j|�|jj
�}|jj|j|�|jj
�}|jj
|�}|j||jjk7�|jj|�}|j||jjk7�|jj||jj�}|jj|||||�}|dk7r|j�td��|jj||�}|j|dk(�y)zg
        Sets the public key point in the EC_KEY context to the affine x and y
        values.
        rz2Invalid EC key. Both x and y must be non-negative.rUr�N)r�r[r�r�r]r�r�rtr�r�r��EC_POINT_set_affine_coordinatesr�r�)rir4r�r�r�r�r�r�s        rKr�z1Backend._ec_key_set_public_key_affine_coordinates�sU��
�q�5�A��E��D��
�
�I�I�L�L�����+�T�Y�Y�->�->�?���I�I�L�L�����+�T�Y�Y�->�->�?���	�	�+�+�H�5�����E�T�Y�Y�^�^�3�4��	�	�&�&�u�-�����E�T�Y�Y�^�^�3�4��	�	���U�D�I�I�$;�$;�<���i�i�7�7��5�!�Q��
���!�8�� � �"��.�/�/��i�i�-�-�h��>�����C�1�H�%rJc��t|tj�std��t|tj�std��t|tj
�std��t|tj�rd}n�t|tj�r%|j}t|�dkDrutd��t|tj�rE|j|cxurtjjurntd��|j}ntd��|tjjur�|tjjur|j j"}n>|tjj$ur|j j&}ntd��|j)|||�S|tjj*u�r�|j,r%t|tj�std	��|j j/|�}	|tjjurt|	|j j0k(r|j j2}n1|	|j j4k(sJ�|j j6}|j)|||�S|tjj$ur�|rtd
��|	|j j0k(r|j j8}n1|	|j j4k(sJ�|j j:}|j=||�Std��|tjjur>|tjjurt?j@|||�Std��td
��)N�/encoding must be an item from the Encoding enumz2format must be an item from the PrivateFormat enumzBEncryption algorithm must be a KeySerializationEncryption instancerJi�zBPasswords longer than 1023 bytes are not supported by this backendzUnsupported encryption typezUnsupported encoding for PKCS8zCEncrypted traditional OpenSSL format is not supported in FIPS mode.zDEncryption is not supported for DER encoded traditional OpenSSL keysz+Unsupported encoding for TraditionalOpenSSLz=OpenSSH private key format can only be used with PEM encoding�format is invalid with this key)!r�rr�r�r��KeySerializationEncryptionr��BestAvailableEncryptionrr�r��_KeySerializationEncryption�_format�OpenSSHr��PEMr]�PEM_write_bio_PKCS8PrivateKeyr��i2d_PKCS8PrivateKey_bio�_private_key_bytes_via_bio�TraditionalOpenSSLr`r"r#�PEM_write_bio_RSAPrivateKeyr.�PEM_write_bio_ECPrivateKeyr)�i2d_ECPrivateKey_bio�_bio_func_outputr;�_serialize_ssh_private_key)
ri�encodingrl�encryption_algorithmr�r��cdatar�	write_bior3s
          rK�_private_key_byteszBackend._private_key_bytes�sp���(�M�$:�$:�;��M�N�N��&�-�"=�"=�>��D��
�� �-�"J�"J�
����
��*�M�,F�,F�G��H�
� �-�"G�"G�
�,�4�4�H��8�}�t�#� �#���

�$�m�&O�&O�
�%�,�,��3��*�*�2�2�3��:�;�;�,�4�4�H��:�;�;��]�0�0�6�6�6��=�1�1�5�5�5� �I�I�C�C�	��]�3�3�7�7�7� �I�I�=�=�	� �!A�B�B��2�2��8�X��
�
�]�0�0�C�C�C��!�!�*�$�m�&@�&@�+�!�.����y�y�,�,�X�6�H��=�1�1�5�5�5��t�y�y�5�5�5� $�	�	� E� E�I�#�t�y�y�'<�'<�<�<�<� $�	�	� D� D�I��6�6��u�h����=�1�1�5�5�5��$�3����t�y�y�5�5�5� $�	�	� ?� ?�I�#�t�y�y�'<�'<�<�<�<� $�	�	� >� >�I��,�,�Y��>�>��J�K�K��]�0�0�8�8�8��=�1�1�5�5�5��5�5���#7����%��
��:�;�;rJc	��|s|jj}n|jjd�}|j	||||t|�|jj|jj�S)Nsaes-256-cbc)r[r�r]�EVP_get_cipherbynamerr�)rir"r�rr�s     rKrz"Backend._private_key_bytes_via_bioYsf��������J����7�7��G�J��$�$�������M��I�I�N�N��I�I�N�N�
�	
rJc�~�|j�}||g|���}|j|dk(�|j|�Sr)rrtr)rir"�argsrBr�s     rKrzBackend._bio_func_outputlsB���%�%�'����#�d�#�����C�1�H�%��!�!�#�&�&rJc�V�t|tj�std��t|tj�std��|tjj
ur�|tjjur|jj}n>|tjjur|jj}ntd��|j||�S|tjjur�|jj|�}||jjk7rtd��|tjjur|jj }n>|tjjur|jj"}ntd��|j||�S|tjj$ur<|tjj$urt'j(|�Std��td��)Nrz1format must be an item from the PublicFormat enumz8SubjectPublicKeyInfo works only with PEM or DER encodingz+PKCS1 format is supported only for RSA keysz)PKCS1 works only with PEM or DER encodingz1OpenSSH format must be used with OpenSSH encodingr)r�rr�r��PublicFormat�SubjectPublicKeyInforr]�PEM_write_bio_PUBKEYr��i2d_PUBKEY_bior�r�PKCS1r"r#�PEM_write_bio_RSAPublicKeyr7rr;�serialize_ssh_public_key)rirrlr�r�r!r"r3s        rK�_public_key_byteszBackend._public_key_bytesrs����(�M�$:�$:�;��M�N�N��&�-�"<�"<�=��C��
�
�]�/�/�D�D�D��=�1�1�5�5�5� �I�I�:�:�	��]�3�3�7�7�7� �I�I�4�4�	� �N����(�(��H�=�=��]�/�/�5�5�5��y�y�,�,�X�6�H��4�9�9�1�1�1� �!N�O�O��=�1�1�5�5�5� �I�I�@�@�	��]�3�3�7�7�7� �I�I�:�:�	� �!L�M�M��(�(��E�:�:��]�/�/�7�7�7��=�1�1�9�9�9��3�3�C�8�8��C��
��:�;�;rJc�0�|jjSrW�r]r'rhs rK�dh_supportedzBackend.dh_supported�����9�9�6�6�6�6rJc�B�tjj||�SrW)r^rrJ�ri�	generatorr�s   rK�generate_dh_parameterszBackend.generate_dh_parameters�s�����2�2�9�h�G�GrJc�"�|j�SrWrMrOs  rK�generate_dh_private_keyzBackend.generate_dh_private_key�rRrJc�D�|j|j||��SrW)r:r8r6s   rK�&generate_dh_private_key_and_parametersz.Backend.generate_dh_private_key_and_parameters�s'���+�+��'�'�	�8�<�
�	
rJc�@�tjj|�SrW)r^rrWrXs  rK�load_dh_private_numberszBackend.load_dh_private_numbers�s�����3�3�G�<�<rJc�@�tjj|�SrW)r^rr]rXs  rK�load_dh_public_numberszBackend.load_dh_public_numbers�s�����2�2�7�;�;rJc�@�tjj|�SrW)r^rr`rXs  rK�load_dh_parameter_numbersz!Backend.load_dh_parameter_numbers�s�����5�5�g�>�>rJc��	tjjtj|||���y#t$rYywxYw)N)r��gr�TF)r^rr`�DHParameterNumbersr�)rir�rDr�s    rK�dh_parameters_supportedzBackend.dh_parameters_supported�sD��	��O�O�2�2��%�%��Q�!�4�
����	��	�s�58�	A�Ac�4�|jjdk(Sr)r]rerhs rK�dh_x942_serialization_supportedz'Backend.dh_x942_serialization_supported�s���y�y�6�6�!�;�;rJc�@�tjj|�SrW)r^r�from_public_bytesr~s  rK�x25519_load_public_bytesz Backend.x25519_load_public_bytes�s���"�"�4�4�T�:�:rJc�@�tjj|�SrW)r^r�from_private_bytesr~s  rK�x25519_load_private_bytesz!Backend.x25519_load_private_bytes�s���"�"�5�5�d�;�;rJc�>�tjj�SrW)r^r�generate_keyrhs rK�x25519_generate_keyzBackend.x25519_generate_key�s���"�"�/�/�1�1rJc�J�|jry|jjSr�)r`r]�#CRYPTOGRAPHY_LIBRESSL_LESS_THAN_370rhs rK�x25519_supportedzBackend.x25519_supported�s!�������9�9�@�@�@�@rJc�@�tjj|�SrW)r^rrJr~s  rK�x448_load_public_byteszBackend.x448_load_public_bytes�s��� � �2�2�4�8�8rJc�@�tjj|�SrW)r^rrMr~s  rK�x448_load_private_byteszBackend.x448_load_private_bytes�s��� � �3�3�D�9�9rJc�>�tjj�SrW)r^rrPrhs rK�x448_generate_keyzBackend.x448_generate_key�s��� � �-�-�/�/rJc�|�|jry|jjxr|jjSr��r`r]r&r'rhs rK�x448_supportedzBackend.x448_supported��8�������	�	�2�2�2�
8��I�I�7�7�7�	
rJc�H�|jry|jjSr�)r`r]� CRYPTOGRAPHY_HAS_WORKING_ED25519rhs rK�ed25519_supportedzBackend.ed25519_supported�s�������y�y�9�9�9rJc�@�tjj|�SrW)r^rrJr~s  rK�ed25519_load_public_bytesz!Backend.ed25519_load_public_bytess���#�#�5�5�d�;�;rJc�@�tjj|�SrW)r^rrMr~s  rK�ed25519_load_private_bytesz"Backend.ed25519_load_private_bytess���#�#�6�6�t�<�<rJc�>�tjj�SrW)r^rrPrhs rK�ed25519_generate_keyzBackend.ed25519_generate_keys���#�#�0�0�2�2rJc�|�|jry|jjxr|jjSr�r\rhs rK�ed448_supportedzBackend.ed448_supportedr^rJc�@�tjj|�SrW)r^rrJr~s  rK�ed448_load_public_byteszBackend.ed448_load_public_bytess���!�!�3�3�D�9�9rJc�@�tjj|�SrW)r^rrMr~s  rK�ed448_load_private_bytesz Backend.ed448_load_private_bytess���!�!�4�4�T�:�:rJc�>�tjj�SrW)r^rrPrhs rK�ed448_generate_keyzBackend.ed448_generate_keys���!�!�.�.�0�0rJc�.�tj||�SrW)r	�_aead_cipher_supported)rir�s  rK�aead_cipher_supportedzBackend.aead_cipher_supporteds���*�*�4��8�8rJc�.�t|�D]}d||<�	y)Nr)�range)rir
r��is    rK�
_zero_datazBackend._zero_data"s ���v��	�A��D��G�	rJc#�K�|�|jj��yt|�}|jjd|dz�}|jj	|||�	|��|j|jj
d|�|�y#|j|jj
d|�|�wxYw�w)a�
        This method takes bytes, which can be a bytestring or a mutable
        buffer like a bytearray, and yields a null-terminated version of that
        data. This is required because PKCS12_parse doesn't take a length with
        its password char * and ffi.from_buffer doesn't provide null
        termination. So, to support zeroing the data via bytearray we
        need to build this ridiculous construct that copies the memory, but
        zeroes it after use.
        Nzchar[]rUz	uint8_t *)r[r�r�r��memmovervr-)rir
�data_lenrs    rK�_zeroed_null_terminated_bufz#Backend._zeroed_null_terminated_buf)s������<��)�)�.�.� ��4�y�H��)�)�-�-��(�Q�,�7�C��I�I���c�4��2�
L��	�����	�	���{�C� @�(�K������	�	���{�C� @�(�K�s�A#C�&B�*-C�.C�Cc���|j||�}|j|jr|jjnd|jD�cgc]}|j��c}fScc}wrW)�load_pkcs12r�r��certificate�additional_certs)rir
r�pkcs12r�s     rK�%load_key_and_certificates_from_pkcs12z-Backend.load_key_and_certificates_from_pkcs12@s\���!�!�$��1���J�J�'-�{�{�F�K�K�#�#��*0�*A�*A�B�$�T�
�
�B�
�	
��
Cs�A&c�	�|�tjd|�|j|�}|jj	|j
|jj�}||jjk(r|j�td��|jj||jj�}|jjd�}|jjd�}|jjd�}|j|�5}|jj|||||�}	ddd�	dk(r|j�td��d}
d}g}|d|jjk7rF|jj|d|jj�}
|j!|
d�	�}|d|jjk7r�|jj|d|jj"�}|j%|�}d}|jj'||jj�}||jjk7r|jj)|�}t+||�}
|d|jjk7�r�|jj|d|jj,�}|jj/|d�}|jj0s|jj2rt5|�}nt7t5|��}|D�]	}|jj9||�}|j;||jjk7�|jj||jj"�}|j%|�}d}|jj'||jj�}||jjk7r|jj)|�}|j=t+||����t?||
|�S#1swY��:xYw)
Nrz!Could not deserialize PKCS12 datazEVP_PKEY **zX509 **zCryptography_STACK_OF_X509 **rzInvalid password or PKCS12 dataFr�) rr�rr]�d2i_PKCS12_biorBr[r�r�r�r��PKCS12_freer�rz�PKCS12_parserr5r�r��X509_alias_get0ryr=�sk_X509_free�sk_X509_numr�r'rt�reversed�
sk_X509_valuertrfr>)rir
rrB�p12�evp_pkey_ptrr��sk_x509_ptr�password_bufr�r�r��additional_certificatesr�r�cert_objr��
maybe_name�sk_x509r��indicesru�	addl_cert�	addl_names                        rKr|zBackend.load_pkcs12Ns������"�"�:�x�8�� � ��&���i�i�&�&�s�w�w��	�	���?���$�)�)�.�.� �� � �"��@�A�A��i�i�l�l�3��	�	� 5� 5�6���y�y�}�}�]�3���9�9�=�=��+���i�i�m�m�$C�D��
�
-�
-�h�
7�	�<��)�)�(�(��\�<��;��C�	��!�8�� � �"��>�?�?�����"$����?�d�i�i�n�n�,��y�y�|�|�L��O�T�Y�Y�5L�5L�M�H��/�/���0��C��A�;�$�)�)�.�.�(��9�9�<�<����T�Y�Y�-@�-@�A�D����t�,�H��D����2�2�4������H�J��T�Y�Y�^�^�+��y�y�'�'�
�3��$�X�t�4�D��q�>�T�Y�Y�^�^�+��i�i�l�l�;�q�>�4�9�9�3I�3I�J�G��)�)�'�'��A��7�C��	�	�=�=��9�9�6�6���*��"�5��:�.���
���y�y�.�.�w��:���#�#�D�D�I�I�N�N�$:�;��y�y�|�|�D�$�)�)�*=�*=�>�� �O�O�D�1�	� �	�!�Y�Y�6�6�t�T�Y�Y�^�^�L�
�������/� $�	�	� 0� 0�� <�I�'�.�.�%�i��;��
�(��T�3J�K�K�s	�	�s�* R�Rc�h�d}|�tjd|�t|tj�r d}d}d}	d}
|j
j}�nat|tj�r�|jjr-|jj}|jj}n,|jj}|jj}d}	d}
|j
j}|j}�n�t|tj��r�|jtjj u�rcd}d}d}	d}
|j}|j"}|t$j&ur-|jj}|jj}nd|t$j(urN|jjst+d��|jj}|jj}n|�J�|j,�e|jj.st+d��|j1|j,�}|j3||j
jk7�n|j
j}|j4�|j4}	nt7d��|�t9|�dk(r|j
j}
�nP|jj;�}
|j
j=|
|jj>�}
g}|D]�}t|t@�r�|jB}|jE|jF�}|�2|jjI||j
jd�}n&|jjI||t9|��}|j3|dk(�n|jE|�}|jK|�|jjM|
|�}tNj3|dk\���|jQ|�5}|jQ|�5}|r|jE|�n|j
j}|�|jS|�n|j
j}|jjU|||||
|||	|
d�
}||j
jk(r|jW�}t7d	|��	ddd�|jj.rN||j
jk7r5|jjY|d|j
jd|
|�ddd�|j3|j
jk7�|j
j=||jjZ�}|j]�}|jj_||�}|j3|dkD�|ja|�S#1swY��xYw#1swY��xYw)
Nr�r�ri NrUz2PBESv2 is not supported by this version of OpenSSLzBSetting MAC algorithm is not supported by this version of OpenSSL.zUnsupported key encryption typez=Failed to create PKCS12 (does the key match the certificate?))1r�_check_bytesr�rr�r[r�rr]r��NID_aes_256_cbc�&NID_pbe_WithSHA1And3_Key_TripleDES_CBCrrrr��PKCS12�_key_cert_algorithmr<�PBESv1SHA1And3KeyTripleDESCBC�PBESv2SHA256AndAES256CBCr�
_hmac_hash�Cryptography_HAS_PKCS12_SET_MACr�rt�_kdf_roundsr�r��sk_X509_new_nullr�r�r=�
friendly_namer�r}�X509_alias_set1rf�sk_X509_pushr�rzr��
PKCS12_creater��PKCS12_set_macr�r�i2d_PKCS12_bior)rir�r�r��casr r�nid_cert�nid_key�pkcs12_iter�mac_iter�mac_alg�
keycertalgr��ossl_cas�ca�ca_alias�ossl_car�r��name_buf�	ossl_cert�	ossl_pkeyr�rqrBs                          rK�(serialize_key_and_certificates_to_pkcs12z0Backend.serialize_key_and_certificates_to_pkcs12�s=���������v�t�,��*�M�,F�,F�G��H��G��K��H��i�i�n�n�G�
� �-�"G�"G�
��y�y�<�<��9�9�4�4���)�)�3�3���9�9�K�K���)�)�J�J���K��H��i�i�n�n�G�+�4�4�H��$�m�&O�&O�
�%�,�,��*�*�1�1�2�
�H��G��K��H�+�4�4�H�-�A�A�J��T�?�?�?��9�9�K�K���)�)�J�J���t�<�<�<��y�y�D�D�.�L��� �9�9�4�4���)�)�3�3��!�)�)�)�$�.�.�:��y�y�@�@�.�.����>�>�(�3�3����#�#�G�t�y�y�~�~�$=�>��)�)�.�.��#�/�/�;�2�>�>���>�?�?��;�#�c�(�a�-��i�i�n�n�G��i�i�0�0�2�G��i�i�l�l�7�D�I�I�,B�,B�C�G��H��
1���b�"3�4�!�/�/�H�"�o�o�b�n�n�=�G��'�"�i�i�7�7�#�T�Y�Y�^�^�R���#�i�i�7�7�#�X�s�8�}����'�'��q��1�"�o�o�b�1�G�����(��i�i�,�,�W�g�>���&�&�s�a�x�0�#
1�&�
-�
-�h�
7�)	�<��1�1�$�7�
�8�59�D�O�O�D�1�t�y�y�~�~�	�+.�?�D�N�N�3�'��	�	�����i�i�-�-� �������������$�)�)�.�.�(�!�1�1�3�F�$�,����)�%
�:�	�	�9�9��t�y�y�~�~�-��	�	�(�(�� ���I�I�N�N�����C)	�V	
���C�4�9�9�>�>�1�2��i�i�l�l�3��	�	� 5� 5�6���%�%�'���i�i�&�&�s�C�0�����C�!�G�$��!�!�#�&�&�a
�
��)	�)	�s&�?X(�B,X�>A,X(�X%	� X(�(X1c�N�|jry|jjdk(Sr�)r`r]�Cryptography_HAS_POLY1305rhs rK�poly1305_supportedzBackend.poly1305_supported@s#�������y�y�2�2�a�7�7rJc�0�|jjSrWr2rhs rK�pkcs7_supportedzBackend.pkcs7_supportedEr4rJc��tjd|�|j|�}|jj	|j
|jj|jj|jj�}||jjk(r|j�td��|jj||jj�}|j|�S�Nr
zUnable to parse PKCS7 data)
rr�rr]�PEM_read_bio_PKCS7rBr[r�r�r�r��
PKCS7_free�_load_pkcs7_certificates�rir
rB�p7s    rK�load_pem_pkcs7_certificatesz#Backend.load_pem_pkcs7_certificatesHs���	���6�4�(�� � ��&��
�Y�Y�
)�
)��G�G�T�Y�Y�^�^�T�Y�Y�^�^�T�Y�Y�^�^�
���������� � �"��9�:�:�
�Y�Y�\�\�"�d�i�i�2�2�
3���,�,�R�0�0rJc��tjd|�|j|�}|jj	|j
|jj�}||jjk(r|j�td��|jj||jj�}|j|�Sr�)
rr�rr]�
d2i_PKCS7_biorBr[r�r�r�r�r�r�r�s    rK�load_der_pkcs7_certificatesz#Backend.load_der_pkcs7_certificatesWs���	���6�4�(�� � ��&��
�Y�Y�
$�
$�S�W�W�d�i�i�n�n�
=��
�������� � �"��9�:�:�
�Y�Y�\�\�"�d�i�i�2�2�
3���,�,�R�0�0rJc���|jj|j�}|j||jjk7�||jj
k7r)t
dj|�tj��g}|jj|jjk(r|S|jjj}|jj|�}t!|�D]h}|jj#||�}|j||jjk7�|j%|�}|j'|��j|S)NzNOnly basic signed structures are currently supported. NID for this data was {})r]�OBJ_obj2nidr�rtr��NID_pkcs7_signedrrlr�UNSUPPORTED_SERIALIZATIONr��signr[r�r�r�rtr�r�rf)	rir��nid�certsr�r�rurr�s	         rKr�z Backend._load_pkcs7_certificatesds���i�i�#�#�B�G�G�,�����C�4�9�9�#6�#6�6�7��$�)�)�,�,�,�&�(�(.��s���2�2��
�)+��
�4�4�9�9��	�	���&��L��$�$�)�)�.�.���i�i�#�#�G�,���s��	�A��9�9�*�*�7�A�6�D������	�	��� 6�7��?�?�4�(�D��L�L���		��rJ)�return�None)r��strrW)rs�boolrqz7typing.Optional[typing.List[rust_openssl.OpenSSLError]]r�r�)r�r�)r��hashes.HashAlgorithm)r�r�r�r�)r�r�)r�r%r�r:r�r�)r�r%r�r:r�r
)r�z&typing.List[rust_openssl.OpenSSLError])r�r�)r�r�r�r�r��rsa.RSAPrivateKey)r�r�r�r�r�r�)r�zrsa.RSAPrivateNumbersr�r�r�r�)r�zrsa.RSAPublicNumbersr�zrsa.RSAPublicKey)r
�bytesr�rA)r�r�)r�r�r�r")r�r#)rErr�r�)r�r�r��dsa.DSAParameters)rPr�r��dsa.DSAPrivateKey)r�r�r�r�)r�zdsa.DSAPrivateNumbersr�r�)r�zdsa.DSAPublicNumbersr�zdsa.DSAPublicKey)r�zdsa.DSAParameterNumbersr�r�)r�r$r�r)r
r�r�typing.Optional[bytes]r�r�r�r")r
r�r�r#)r
r�r��dh.DHParameters)r��x509.Certificater��
typing.Any)r�r�r�r�)r�r?r�r�)r�r")r�ztyping.NoReturn)r��ec.EllipticCurver�r�)r�z"ec.EllipticCurveSignatureAlgorithmr�r�r�r�)r�r�r��ec.EllipticCurvePrivateKey)r�zec.EllipticCurvePrivateNumbersr�r�)r�zec.EllipticCurvePublicNumbersr��ec.EllipticCurvePublicKey)r�r�r�r�r�r�)r�r�r�r�r�r�)r�r�)r�r�)r�zec.ECDHr�r�r�r�)r�r�r�r�)r�r�r�r�r�r�)r�serialization.Encodingrlzserialization.PrivateFormatr �(serialization.KeySerializationEncryptionr�r�)rr�rlzserialization.PublicFormatr�r�)r7r�r�r�r�r�)rPr�r��dh.DHPrivateKey)r7r�r�r�r�r�)r�zdh.DHPrivateNumbersr�r�)r�zdh.DHPublicNumbersr�zdh.DHPublicKey)r�zdh.DHParameterNumbersr�r�)r�r�rDr�r�ztyping.Optional[int]r�r�)r
r�r�zx25519.X25519PublicKey)r
r�r��x25519.X25519PrivateKey)r�r�)r
r�r�zx448.X448PublicKey)r
r�r��x448.X448PrivateKey)r�r�)r
r�r�zed25519.Ed25519PublicKey)r
r�r��ed25519.Ed25519PrivateKey)r�r�)r
r�r�zed448.Ed448PublicKey)r
r�r��ed448.Ed448PrivateKey)r�r�)r�r�r�r�)r
r�rr�r�zptyping.Tuple[typing.Optional[PrivateKeyTypes], typing.Optional[x509.Certificate], typing.List[x509.Certificate]])r
r�rr�r�r>)r�r�r�z&typing.Optional[PKCS12PrivateKeyTypes]r�z!typing.Optional[x509.Certificate]r�z,typing.Optional[typing.List[_PKCS12CATypes]]r r�r�r�)r
r�r��typing.List[x509.Certificate])r�r�)�rFrGrH�__doc__r��
_fips_aeadr&r�rr<r=r>r?�
SHA512_224�
SHA512_256�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_modulusrjrortrvrmrr�r�r�r�r�r�r�r�rbr�r�r�r�r�r�r�r�r�rrr�rrrr5r:r@rFrHrKrQrTrYr^rarcrerirkror{rr*r�r8r�r�r�r�rmrxr�r�r�r�r�r�r�r�r�r�r�r�rr�r�r#rrr0r3r8r:r<r>r@rBrFrHrKrNrQrTrVrXrZr]rarcrergrirkrmrorrrv�
contextlibrzr�r|r�r�r�r�r�r�rIrJrKrMrM`s1����D��J��F�M�	�
�
��
�
��
�
��
�
�������������������������
�L�	���
���
���
���	��"��$)�!���I�� ��� 5�5��
:�
�KO�E��E�H�E�
�	E�<�	�/�	��
(�.�-�.�	
�.�:�.�,�>�B�HK�%�K�-1�K�	�K�
K�%�K�-1�K�	�K�
.�2�
�
�
�"�
�.1�
�	�
�.
�"�
�.1�
�	
�
�'
�&�'
�)-�'
�
�	'
�R
8�+�
8�	�
8���K�	�	�J@�8<�J@�	�J@�X=@�~

��&7�>�1�+�1�	�1�
9��9�	�9�>�,�>�	�>�=�+�=�	�=�@�.�@�	�@�
�
8�

�
-�
��
�)�
�)-�	
�

�
�(1�T9����)��)-�	�

��4�1�.9��G�
?�2
�	�2
�h,�\� 	4�?�	4� �	4�
�		4��%��	#��,2B�5�2B�	#�2B�h
A�4�
A�	"�
A�A�%�A�49�A�	"�A�,(B� �(B�)9�(B�	#�(B�T8�=�


� �

�)9�

�	
�

���"�)��)�&��&��	&�
�
&�Bn<�(�n<�,�n<�G�	n<�
�n<�`
�	�
�&'�5<�(�5<�+�5<�
�5<�n7�H��H�(+�H�	�H�
1�)�1�	�1�

��
�(+�
�	�
�=�*�=�	�=�
<�)�<�	�<�
?�,�?�	�?�9=�
��
��
�!5�
�	
�
�<�;�<��<�	 �<�
2�A�
9�:�0�
�:�
<��<�	!�<�
=��=�	"�=�
3�
�:�;�1�9�����L��L�,
��
�%;�
�
�
�IL��IL�%;�IL�	!�IL�Ve'�$�e'�4�e'�0�	e'�
:�e'�G�
e'�
�e'�N8�
7�
1��
1�	&�
1�1��1�	&�1�rJrMc��eZdZdd�Zdd�Zy)r�c��||_yrW)�_fmt)ri�fmts  rKrjzGetCipherByName.__init__~s	����	rJc���|jj||��j�}|jj	|jd��}||jjk(rj|jjrT|jj|jj|jd�|jj�}|j�|S)N)r�r�rx)r�rl�lowerr]r%r�r[r��Cryptography_HAS_300_EVP_CIPHER�EVP_CIPHER_fetchr�)rir�r�r��cipher_namer�s      rK�__call__zGetCipherByName.__call__�s����i�i�&�&�f�4�&�@�F�F�H���\�\�6�6����w�'�
�
�
�'�,�,�+�+�+����<�<� ���6�6����!�!��"�"�7�+����!�!��J�	���!��rJN)r�r�)r�rMr�r%r�r:)rFrGrHrjrrIrJrKr�r�}s���rJr�c�|�d|jdz�d�}|jj|jd��S)Nzaes-�z-xtsrx)r�r]r%r�)r�r�r�rs    rKr�r��s:������A�-�.�d�3�K��<�<�,�,�[�-?�-?��-H�I�IrJ)r�rMr�r&)]�
__future__r�collectionsr�r��typingr�cryptographyrr�cryptography.exceptionsrr�$cryptography.hazmat.backends.opensslr	�,cryptography.hazmat.backends.openssl.ciphersr
�)cryptography.hazmat.backends.openssl.cmacr�'cryptography.hazmat.backends.openssl.ecr
r�(cryptography.hazmat.backends.openssl.rsarr�"cryptography.hazmat.bindings._rustrr^�$cryptography.hazmat.bindings.opensslr�cryptography.hazmat.primitivesrr�*cryptography.hazmat.primitives._asymmetricr�)cryptography.hazmat.primitives.asymmetricrrrrrrrr�1cryptography.hazmat.primitives.asymmetric.paddingrrr r!�/cryptography.hazmat.primitives.asymmetric.typesr"r#�&cryptography.hazmat.primitives.ciphersr$r%�1cryptography.hazmat.primitives.ciphers.algorithmsr&r'r(r)r*r+r,r-r.r/r0r1�,cryptography.hazmat.primitives.ciphers.modesr2r3r4r5r6r7r8r9r:�,cryptography.hazmat.primitives.serializationr;�3cryptography.hazmat.primitives.serialization.pkcs12r<r=r>r?r@�
namedtuplerArErMr�r�r�rIrJrK�<module>rs���
#����
�%�$�B�5�G�B���G�8�@�H�	�	�	�����
�
�
�
�
�
�
�=���$�[�
#�
#�L�5�*�2E�
F�
�	�	�Z�Z�z8��2J�
�)�rJ

Youez - 2016 - github.com/yon3zu
LinuXploit