HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/ec.cpython-312.pyc
�

�Q�i�.��8�ddlmZddlZddlmZmZmZddlmZm	Z	ddl
mZddlm
Z
ejrddlmZ				dd�Zdd	�Zdd
�Zdd�Zdd�Zdd
�Z								dd�Z										dd�ZGd�de
j2�ZGd�de
j6�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�@�|jj|�}|j||jjk7�|jj|�}|j
|�}|dk7r*|jj|�dk7rtd��yy)N�z1Invalid EC key (key out of range, infinity, etc.))	rrrrr�EC_GROUP_get0_cofactor�
_bn_to_int�EC_KEY_check_keyr)r#r-r%�bn�cofactors     r�_check_key_cofactorr;Ws����L�L�*�*�8�4�E����5�G�L�L�$5�$5�5�6�	���	,�	,�U�	3�B��!�!�"�%�H��1�}��<�<�(�(��2�a�7��C��
�8�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_curver@bsI��
����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[]r5)	r�
ECDSA_size�_ec_keyrr�new�
ECDSA_sign�len�buffer)r#�private_key�data�max_size�sigbuf�
siglen_ptr�ress       r�_ecdsa_sig_signrOls����|�|�&�&�{�':�':�;�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)Nrr5)r�ECDSA_verifyrGrD�_consume_errorsr)r#�
public_key�	signaturerJrNs     r�_ecdsa_sig_verifyrV{sS���,�,�
#�
#�	�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	)rAc��||_||_||_t||�}t	||�|_t
||�t||�y�N)�_backendrD�	_evp_pkeyr)r@�_curver.r3��selfr#�ec_key_cdata�evp_pkeyr(s     r�__init__z!_EllipticCurvePrivateKey.__init__�sE����
�#���!���
�g�|�
4��+�G�R�8���!�'�<�8��G�\�2rc��|jSrY�r\�r^s r�curvez_EllipticCurvePrivateKey.curve�����{�{�rc�.�|jjSrY�re�key_sizerds rriz!_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)
rZ�+elliptic_curve_exchange_algorithm_supportedrerr�UNSUPPORTED_EXCHANGE_ALGORITHM�namerrr[)r^�	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�Nr5)
rZrrrDrrrr�_ec_key_new_by_curve_nidr0�EC_KEY_set_public_key�_ec_cdata_to_evp_pkeyrP)r^r%�	curve_nid�
public_ec_keyr2rNr`s       rrTz#_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)	rZr�EC_KEY_get0_private_keyrDr7r
�EllipticCurvePrivateNumbersrTr{)r^r9rzs   r�private_numbersz(_EllipticCurvePrivateKey.private_numbers�s]��
�]�]�
�
�
7�
7����
E���
�
�0�0��4�
��-�-�'��?�?�,�;�;�=�
�	
rc�j�|jj|||||j|j�SrY)rZ�_private_key_bytesr[rD)r^�encoding�format�encryption_algorithms    r�
private_bytesz&_EllipticCurvePrivateKey.private_bytes�s5���}�}�/�/��� ���N�N��L�L�

�	
rc�x�t|�t||j�\}}t|j||�SrY)rrrorOrZ)r^rJr�_s    r�signz_EllipticCurvePrivateKey.sign�s<��
	#�#6�7�1���)�)�
���a��t�}�}�d�D�9�9rN�r#r��return�ec.EllipticCurve�r��int)rozec.ECDHrp�ec.EllipticCurvePublicKeyr��bytes)r�r�)r�zec.EllipticCurvePrivateNumbers)r��serialization.Encodingr�zserialization.PrivateFormatr�z(serialization.KeySerializationEncryptionr�r�)rJr�r�"ec.EllipticCurveSignatureAlgorithmr�r�)�__name__�
__module__�__qualname__ra�propertyrerirqrTr~r�r��rrrArA�s���3������#��#�P� �P�3L�P�	�P�(O�"
�

�(�

�,�

�G�	

�

�

�
:��
:�@�
:�
�	
:rc�|�eZdZd
d�Zedd��Zedd��Zd
d�Zdd�Zdd�Z							dd�Z
								dd�Zy	)rPc��||_||_||_t||�}t	||�|_t
||�t||�t||�yrY)	rZrDr[r)r@r\r.r3r;r]s     rraz _EllipticCurvePublicKey.__init__�sO����
�#���!���
�g�|�
4��+�G�R�8���!�'�<�8��G�\�2��G�\�2rc��|jSrYrcrds rrez_EllipticCurvePublicKey.curve�rfrc�.�|jjSrYrhrds rriz _EllipticCurvePublicKey.key_size�rjrc��t|t�stS|jjj|j|j�dk(Srs)r
rP�NotImplementedrZr�EVP_PKEY_cmpr[)r^�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)Nr5)�x�yre)rZrrrDrrrr0�_tmp_bn_ctx�
BN_CTX_get�EC_POINT_get_affine_coordinatesr7r
�EllipticCurvePublicNumbersr\)	r^r%r2�bn_ctx�bn_x�bn_yrNr�r�s	         rr{z&_EllipticCurvePublicKey.public_numberssg���
�
�"�"�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�CompressedPointrZr�POINT_CONVERSION_COMPRESSED�UncompressedPoint�POINT_CONVERSION_UNCOMPRESSEDrrDrrrr0r��EC_POINT_point2octrErH)	r^r��
conversionr%r2r��buflen�bufrNs	         r�
_encode_pointz%_EllipticCurvePublicKey._encode_points����]�/�/�?�?�?����+�+�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�rZ�_public_key_bytesr[)r^r�r�s   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|||�yrY)rrrorVrZ)r^rUrJrr�s     r�verifyz_EllipticCurvePublicKey.verifyHs;��	#�#6�7�1���)�)�
���a�	�$�-�-��y�$�?rNr�r�r�)r��objectr��bool)r�zec.EllipticCurvePublicNumbers)r��serialization.PublicFormatr�r�)r�r�r�r�r�r�)rUr�rJr�rr�r��None)r�r�r�rar�rerir�r{r�r�r�r�rrrPrP�s���	3������#��#�
�J�*1�0�(��+��
�	�2@��@��@�@�	@�

�@r)rr�r�r�)r#rr��strr�)r#rr�r�)r#rr(r�r�r�)r#rrIrArJr�r�r�)
r#rrTrPrUr�rJr�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.r3r;r@rOrV�EllipticCurvePrivateKeyrA�EllipticCurvePublicKeyrPr�rr�<module>r�s���
#�
���
�9�8�	���D�
�;�
�	�
��<	�
�	�
�8�
�8�#;�8�CH�8�
�8��
��'�����	�

��Y:�r�9�9�Y:�xn@�b�7�7�n@r