HOME


Mini Shell 1.0
DIR: /usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/ec.cpython-312.pyc
�

�3Tf�,��0�ddlmZddlZddlmZmZmZddlmZm	Z	ddl
mZddlm
Z
ejrddlmZ				dd�Zdd	�Zdd
�Zdd�Zdd�Z								dd�Z										dd�ZGd�d
e
j0�ZGd�de
j4�Zy)�)�annotationsN)�InvalidSignature�UnsupportedAlgorithm�_Reasons)�_calculate_digest_and_algorithm�_evp_pkey_derive)�
serialization)�ec)�Backendc�l�t|tj�stdtj
��y)Nz/Unsupported elliptic curve signature algorithm.)�
isinstancer
�ECDSArr� UNSUPPORTED_PUBLIC_KEY_ALGORITHM)�signature_algorithms �I/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ec.py�_check_signature_algorithmrs1���)�2�8�8�4�"�=��5�5�
�	
�5�c�b�|jj|�}|j||jjk7�|jj|�}||jjk(rtd��|jjs)|jj|�dk(rtd��|jj|�}|j||jjk7�|jj|�jd�}|S)Nz@ECDSA keys with explicit parameters are unsupported at this timer�ascii)
�_lib�EC_KEY_get0_group�openssl_assert�_ffi�NULL�EC_GROUP_get_curve_name�	NID_undef�
ValueError�CRYPTOGRAPHY_IS_LIBRESSL�EC_GROUP_get_asn1_flag�
OBJ_nid2sn�string�decode)�backend�ec_key�group�nid�
curve_name�sns      r�_ec_key_curve_snr)#s����L�L�*�*�6�2�E����5�G�L�L�$5�$5�5�6�
�,�,�
.�
.�u�
5�C��g�l�l�$�$�$��N�
�	
�
�L�L�1�1��L�L�/�/��6�!�;��N�
�	
����(�(��-�J����:����):�):�:�;�	���	�	�Z�	(�	/�	/��	8�B�
�Irc�d�|jj||jj�y)z�
    Set the named curve flag on the EC_KEY. This causes OpenSSL to
    serialize EC keys along with their curve OID which makes
    deserialization easier.
    N)r�EC_KEY_set_asn1_flag�OPENSSL_EC_NAMED_CURVE)r#�ec_cdatas  r�_mark_asn1_named_ec_curver.As%���L�L�%�%��'�,�,�5�5�rc�^�|jj|�}|j||jjk7�|jj|�}|j||jjk7�|jj
||�rtd��y)Nz;Cannot load an EC public key where the point is at infinity)r�EC_KEY_get0_public_keyrrrr�EC_POINT_is_at_infinityr)r#r-�pointr%s    r�_check_key_infinityr3Ms����L�L�/�/��9�E����5�G�L�L�$5�$5�5�6��L�L�*�*�8�4�E����5�G�L�L�$5�$5�5�6��|�|�+�+�E�5�9��I�
�	
�:rc��	tj|�S#t$rt|�d�tj
��wxYw)Nz" is not a supported elliptic curve)r
�_CURVE_TYPES�KeyErrorrr�UNSUPPORTED_ELLIPTIC_CURVE)r#r(s  r�_sn_to_elliptic_curver8XsI��
����r�"�$�$���
�"��d�4�5��/�/�
�	
�
�s	��'A�_EllipticCurvePrivateKeyc��|jj|j�}|j|dkD�|jjd|�}|jjdd�}|jj
d|t|�|||j�}|j|dk(�|jj|�d|dS)Nrzunsigned char[]zunsigned int[]�)	r�
ECDSA_size�_ec_keyrr�new�
ECDSA_sign�len�buffer)r#�private_key�data�max_size�sigbuf�
siglen_ptr�ress       r�_ecdsa_sig_signrHbs����|�|�&�&�{�':�':�;�H����8�a�<�(�
�\�\�
�
�/��
:�F����!�!�"2�A�6�J�
�,�,�
!�
!�	�4��T��F�J��0C�0C��C����3�!�8�$��<�<���v�&���A��7�7r�_EllipticCurvePublicKeyc	��|jjd|t|�|t|�|j�}|dk7r|j	�t
�y)Nrr;)r�ECDSA_verifyr@r=�_consume_errorsr)r#�
public_key�	signaturerCrGs     r�_ecdsa_sig_verifyrOqsS���,�,�
#�
#�	�4��T��I�s�9�~�z�7I�7I��C��a�x����!���rc��eZdZd
d�Zedd��Zedd��Z						d
d�Zdd�Zdd�Z									dd�Z
						dd�Zy	)r9c��||_||_||_t||�}t	||�|_t
||�t||�y�N��_backendr=�	_evp_pkeyr)r8�_curver.r3��selfr#�ec_key_cdata�evp_pkeyr(s     r�__init__z!_EllipticCurvePrivateKey.__init__��E����
�#���!���
�g�|�
4��+�G�R�8���!�'�<�8��G�\�2rc��|jSrR�rV�rXs r�curvez_EllipticCurvePrivateKey.curve�����{�{�rc�.�|jjSrR�r`�key_sizer_s rrdz!_EllipticCurvePrivateKey.key_size�����z�z�"�"�"rc�4�|jj||j�stdtj
��|jj|jjk7rtd��t|j|j|�S)Nz1This backend does not support the ECDH algorithm.z2peer_public_key and self are not on the same curve)
rT�+elliptic_curve_exchange_algorithm_supportedr`rr�UNSUPPORTED_EXCHANGE_ALGORITHM�namerrrU)rX�	algorithm�peer_public_keys   r�exchangez!_EllipticCurvePrivateKey.exchange�s���
�M�M�E�E��4�:�:�
�'�C��7�7��
�
� � �%�%������8��D��
� ��
�
�t�~�~��O�Orc��|jjj|j�}|jj	||jj
jk7�|jjj|�}|jj|�}|jjj|j�}|jj	||jj
jk7�|jjj||�}|jj	|dk(�|jj|�}t|j||�S�Nr;)
rTrrr=rrrr�_ec_key_new_by_curve_nidr0�EC_KEY_set_public_key�_ec_cdata_to_evp_pkeyrI)rXr%�	curve_nid�
public_ec_keyr2rGrZs       rrMz#_EllipticCurvePrivateKey.public_key�s���
�
�"�"�4�4�T�\�\�B���
�
�$�$�U�d�m�m�.@�.@�.E�.E�%E�F��M�M�&�&�>�>�u�E�	��
�
�>�>�y�I�
��
�
�"�"�9�9�$�,�,�G���
�
�$�$�U�d�m�m�.@�.@�.E�.E�%E�F��m�m� � �6�6�}�e�L���
�
�$�$�S�A�X�.��=�=�6�6�}�E��&�t�}�}�m�X�N�Nrc��|jjj|j�}|jj	|�}tj||j�j���S)N)�
private_value�public_numbers)	rTr�EC_KEY_get0_private_keyr=�
_bn_to_intr
�EllipticCurvePrivateNumbersrMrv)rX�bnrus   r�private_numbersz(_EllipticCurvePrivateKey.private_numbers�s]��
�]�]�
�
�
7�
7����
E���
�
�0�0��4�
��-�-�'��?�?�,�;�;�=�
�	
rc�j�|jj|||||j|j�SrR)rT�_private_key_bytesrUr=)rX�encoding�format�encryption_algorithms    r�
private_bytesz&_EllipticCurvePrivateKey.private_bytes�s5���}�}�/�/��� ���N�N��L�L�

�	
rc�x�t|�t||j�\}}t|j||�SrR)rrrjrHrT)rXrCr�_s    r�signz_EllipticCurvePrivateKey.sign�s<��
	#�#6�7�1���)�)�
���a��t�}�}�d�D�9�9rN�r#r��return�ec.EllipticCurve�r��int)rjzec.ECDHrk�ec.EllipticCurvePublicKeyr��bytes)r�r�)r�zec.EllipticCurvePrivateNumbers)r~�serialization.Encodingrzserialization.PrivateFormatr�z(serialization.KeySerializationEncryptionr�r�)rCr�r�"ec.EllipticCurveSignatureAlgorithmr�r�)�__name__�
__module__�__qualname__r[�propertyr`rdrlrMr{r�r��rrr9r9s���3������#��#�P� �P�3L�P�	�P�(O�"
�

�(�

�,�

�G�	

�

�

�
:��
:�@�
:�
�	
:rc�|�eZdZd
d�Zedd��Zedd��Zd
d�Zdd�Zdd�Z							dd�Z
								dd�Zy	)rIc��||_||_||_t||�}t	||�|_t
||�t||�yrRrSrWs     rr[z _EllipticCurvePublicKey.__init__�r\rc��|jSrRr^r_s rr`z_EllipticCurvePublicKey.curve�rarc�.�|jjSrRrcr_s rrdz _EllipticCurvePublicKey.key_size�rerc��t|t�stS|jjj|j|j�dk(Srn)r
rI�NotImplementedrTr�EVP_PKEY_cmprU)rX�others  r�__eq__z_EllipticCurvePublicKey.__eq__�sD���%�!8�9�!�!�
�M�M���+�+�D�N�N�E�O�O�L��
�	
rc���|jjj|j�}|jj	||jj
jk7�|jjj|j�}|jj	||jj
jk7�|jj�5}|jjj|�}|jjj|�}|jjj|||||�}|jj	|dk(�|jj|�}|jj|�}ddd�tj|j��S#1swY�+xYw)Nr;)�x�yr`)rTrrr=rrrr0�_tmp_bn_ctx�
BN_CTX_get�EC_POINT_get_affine_coordinatesrxr
�EllipticCurvePublicNumbersrV)	rXr%r2�bn_ctx�bn_x�bn_yrGr�r�s	         rrvz&_EllipticCurvePublicKey.public_numbers�sg���
�
�"�"�4�4�T�\�\�B���
�
�$�$�U�d�m�m�.@�.@�.E�.E�%E�F��
�
�"�"�9�9�$�,�,�G���
�
�$�$�U�d�m�m�.@�.@�.E�.E�%E�F�
�]�]�
&�
&�
(�
	/�F��=�=�%�%�0�0��8�D��=�=�%�%�0�0��8�D��-�-�$�$�D�D��u�d�D�&��C�
�M�M�(�(����2��
�
�(�(��.�A��
�
�(�(��.�A�
	/��,�,�q�A�T�[�[�I�I�
	/�
	/�s
�1CG#�#G,c	��|tjjur!|jjj
}n>|tjjusJ�|jjj}|jjj|j�}|jj||jjjk7�|jjj|j�}|jj||jjjk7�|jj�5}|jjj||||jjjd|�}|jj|dkD�|jjj!d|�}|jjj||||||�}|jj||k(�ddd�|jjj#�ddS#1swY�1xYw)Nrzchar[])r	�PublicFormat�CompressedPointrTr�POINT_CONVERSION_COMPRESSED�UncompressedPoint�POINT_CONVERSION_UNCOMPRESSEDrr=rrrr0r��EC_POINT_point2octr>rA)	rXr�
conversionr%r2r��buflen�bufrGs	         r�
_encode_pointz%_EllipticCurvePublicKey._encode_points����]�/�/�?�?�?����+�+�G�G�J��]�7�7�I�I�I�I�I����+�+�I�I�J��
�
�"�"�4�4�T�\�\�B���
�
�$�$�U�d�m�m�.@�.@�.E�.E�%E�F��
�
�"�"�9�9�$�,�,�G���
�
�$�$�U�d�m�m�.@�.@�.E�.E�%E�F�
�]�]�
&�
&�
(�		8�F��]�]�'�'�:�:��u�j�$�-�-�*<�*<�*A�*A�1�f��F�
�M�M�(�(��!��4��-�-�$�$�(�(��6�:�C��-�-�$�$�7�7��u�j�#�v�v��C�
�M�M�(�(��3��7�		8��}�}�!�!�(�(��-�a�0�0�		8�		8�s
�,CI1�1I:c���|tjjus8|tjjus|tjj
urn|tjjus6|tjjtjj
fvrt
d��|j|�S|jj||||jd�S)NzKX962 encoding must be used with CompressedPoint or UncompressedPoint format)r	�Encoding�X962r�r�r�rr�rT�_public_key_bytesrU)rXr~rs   r�public_bytesz$_EllipticCurvePublicKey.public_bytes$s���
�
�.�.�3�3�3���3�3�C�C�C���3�3�E�E�E��}�5�5�:�:�:�f��*�*�:�:��*�*�<�<�M�?�!�/���
�%�%�f�-�-��=�=�2�2��&�$������
rc�|�t|�t||j�\}}t|j|||�yrR)rrrjrOrT)rXrNrCrr�s     r�verifyz_EllipticCurvePublicKey.verify=s;��	#�#6�7�1���)�)�
���a�	�$�-�-��y�$�?rNr�r�r�)r��objectr��bool)r�zec.EllipticCurvePublicNumbers)r�serialization.PublicFormatr�r�)r~r�rr�r�r�)rNr�rCr�rr�r��None)r�r�r�r[r�r`rdr�rvr�r�r�r�rrrIrI�s���3������#��#�
�J�*1�0�(��+��
�	�2@��@��@�@�	@�

�@r)rr�r�r�)r#rr��strr�)r#rr�r�)r#rr(r�r�r�)r#rrBr9rCr�r�r�)
r#rrMrIrNr�rCr�r�r�)�
__future__r�typing�cryptography.exceptionsrrr�*cryptography.hazmat.backends.openssl.utilsrr�cryptography.hazmat.primitivesr	�)cryptography.hazmat.primitives.asymmetricr
�
TYPE_CHECKING�,cryptography.hazmat.backends.openssl.backendrrr)r.r3r8rHrO�EllipticCurvePrivateKeyr9�EllipticCurvePublicKeyrIr�rr�<module>r�s���
#�
���
�9�8�	���D�
�;�
�	�
��<	�
�
�8�
�8�#;�8�CH�8�
�8��
��'�����	�

��Y:�r�9�9�Y:�xm@�b�7�7�m@r