HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-38.pyc
U

�)%a9�&@s8UddlZddlZddlZddlmZddlmZddlmZddl	m
Z
mZddlm
Z
mZmZGdd�de�ZGd	d
�d
ejd�ZGdd
�d
ejd�ZGdd�dejd�ZeZGdd�dejd�ZeZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGd d!�d!e�Z Gd"d#�d#e�Z!Gd$d%�d%e�Z"Gd&d'�d'e�Z#Gd(d)�d)e�Z$Gd*d+�d+e�Z%Gd,d-�d-e�Z&Gd.d/�d/e�Z'Gd0d1�d1e�Z(Gd2d3�d3e�Z)Gd4d5�d5e�Z*Gd6d7�d7e�Z+e(e%e(e'e%e$e#e&e"e!e eeeeeeee)e*e+d8�Z,ej-e.ej/efe0d9<Gd:d;�d;e�Z1dKeed<�d=d>�Z2dLe3eed?�d@dA�Z4GdBdC�dCe�Z5GdDdE�dEe�Z6GdFdG�dGe�Z7ej(e(ej'e'ej&e&ej%e%ej$e$ej#e#ej8e)ej9e*ej:e+ej"e"ejeej!e!ejeej e ejeejeejeejeejeiZ;eej/edH�dIdJ�Z<dS)M�N)�utils)�ObjectIdentifier)�_get_backend)�_serialization�hashes)�AsymmetricSignatureContext�AsymmetricVerificationContextrc@s�eZdZed�Zed�Zed�Zed�Zed�Zed�Z	ed�Z
ed�Zed	�Zed
�Z
ed�Zed�Zed
�Zed�Zed�Zed�Zed�Zed�Zed�ZdS)�EllipticCurveOIDz1.2.840.10045.3.1.1z1.3.132.0.33z1.3.132.0.10z1.2.840.10045.3.1.7z1.3.132.0.34z1.3.132.0.35z1.3.36.3.3.2.8.1.1.7z1.3.36.3.3.2.8.1.1.11z1.3.36.3.3.2.8.1.1.13z1.3.132.0.1z1.3.132.0.15z1.3.132.0.26z1.3.132.0.27z1.3.132.0.16z1.3.132.0.17z1.3.132.0.36z1.3.132.0.37z1.3.132.0.38z1.3.132.0.39N)�__name__�
__module__�__qualname__r�	SECP192R1�	SECP224R1�	SECP256K1�	SECP256R1�	SECP384R1�	SECP521R1�BRAINPOOLP256R1�BRAINPOOLP384R1�BRAINPOOLP512R1�	SECT163K1�	SECT163R2�	SECT233K1�	SECT233R1�	SECT283K1�	SECT283R1�	SECT409K1�	SECT409R1�	SECT571K1�	SECT571R1�r r �N/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/asymmetric/ec.pyr	s&r	c@s4eZdZejed�dd��Zejed�dd��ZdS)�
EllipticCurve��returncCsdS)z8
        The name of the curve. e.g. secp256r1.
        Nr ��selfr r r!�name,szEllipticCurve.namecCsdS�z<
        Bit size of a secret scalar for the curve.
        Nr r%r r r!�key_size2szEllipticCurve.key_sizeN)	r
rr�abc�abstractproperty�strr'�intr)r r r r!r"+sr")�	metaclassc@s.eZdZejejeje	j
fd�dd��ZdS)�EllipticCurveSignatureAlgorithmr#cCsdS)z@
        The digest algorithm used with this signature.
        Nr r%r r r!�	algorithm:sz)EllipticCurveSignatureAlgorithm.algorithmN)r
rrr*r+�typing�Union�
asym_utils�	Prehashedr�
HashAlgorithmr0r r r r!r/9s�r/c@s�eZdZejeed�dd��Zejdded�dd��Z	ejdd	�d
d��Z
ejed	�dd
��Z
ejed	�dd��Zejeed�dd��Zejdd	�dd��Zejejejejed�dd��ZdS)�EllipticCurvePrivateKey)�signature_algorithmr$cCsdS)zN
        Returns an AsymmetricSignatureContext used for signing data.
        Nr )r&r7r r r!�signerDszEllipticCurvePrivateKey.signer�ECDH�EllipticCurvePublicKey)r0�peer_public_keyr$cCsdS)z}
        Performs a key exchange operation using the provided algorithm with the
        provided peer's public key.
        Nr )r&r0r;r r r!�exchangeMsz EllipticCurvePrivateKey.exchanger#cCsdS)zB
        The EllipticCurvePublicKey for this private key.
        Nr r%r r r!�
public_keyVsz"EllipticCurvePrivateKey.public_keycCsdS�z8
        The EllipticCurve that this key is on.
        Nr r%r r r!�curve\szEllipticCurvePrivateKey.curvecCsdSr(r r%r r r!r)bsz EllipticCurvePrivateKey.key_sizecCsdS)z 
        Signs the data
        Nr )r&�datar7r r r!�signhszEllipticCurvePrivateKey.sign�EllipticCurvePrivateNumberscCsdS)z9
        Returns an EllipticCurvePrivateNumbers.
        Nr r%r r r!�private_numbersrsz'EllipticCurvePrivateKey.private_numbers)�encoding�format�encryption_algorithmr$cCsdS�z6
        Returns the key serialized as bytes.
        Nr )r&rDrErFr r r!�
private_bytesxsz%EllipticCurvePrivateKey.private_bytesN)r
rrr*�abstractmethodr/rr8�bytesr<r=r+r"r?r-r)rArCr�Encoding�
PrivateFormat�KeySerializationEncryptionrHr r r r!r6Cs6���	�r6c@s�eZdZejeeed�dd��Zej	e
d�dd��Zej	ed�dd��Z
ejd	d�d
d��Zejejejed�d
d��Zejeeedd�dd��Zee
edd�dd��ZdS)r:)�	signaturer7r$cCsdS)zQ
        Returns an AsymmetricVerificationContext used for signing data.
        Nr )r&rNr7r r r!�verifier�szEllipticCurvePublicKey.verifierr#cCsdSr>r r%r r r!r?�szEllipticCurvePublicKey.curvecCsdSr(r r%r r r!r)�szEllipticCurvePublicKey.key_size�EllipticCurvePublicNumberscCsdS)z8
        Returns an EllipticCurvePublicNumbers.
        Nr r%r r r!�public_numbers�sz%EllipticCurvePublicKey.public_numbers)rDrEr$cCsdSrGr )r&rDrEr r r!�public_bytes�sz#EllipticCurvePublicKey.public_bytesN)rNr@r7r$cCsdS)z5
        Verifies the signature of the data.
        Nr )r&rNr@r7r r r!�verify�szEllipticCurvePublicKey.verify�r?r@r$cCs^t�d|�t|t�std��t|�dkr2td��|ddkrFtd��ddlm}|�	||�S)Nr@�'curve must be an EllipticCurve instancerz%data must not be an empty byte string)����%Unsupported elliptic curve point type)�backend)
r�_check_bytes�
isinstancer"�	TypeError�len�
ValueError�,cryptography.hazmat.backends.openssl.backendrZZ load_elliptic_curve_public_bytes)�clsr?r@rZr r r!�from_encoded_point�s
z)EllipticCurvePublicKey.from_encoded_point)r
rrr*rIrJr/rrOr+r"r?r-r)rQrrK�PublicFormatrRrS�classmethodrbr r r r!r:�s6�	�	�
�r:c@seZdZdZdZdS)r�	sect571r1i:N�r
rrr'r)r r r r!r�src@seZdZdZdZdS)r�	sect409r1�Nrfr r r r!r�src@seZdZdZdZdS)r�	sect283r1�Nrfr r r r!r�src@seZdZdZdZdS)r�	sect233r1��Nrfr r r r!r�src@seZdZdZdZdS)r�	sect163r2�Nrfr r r r!r�src@seZdZdZdZdS)r�	sect571k1i;Nrfr r r r!r�src@seZdZdZdZdS)r�	sect409k1rhNrfr r r r!r�src@seZdZdZdZdS)r�	sect283k1rjNrfr r r r!r�src@seZdZdZdZdS)r�	sect233k1rlNrfr r r r!r�src@seZdZdZdZdS)r�	sect163k1rnNrfr r r r!r�src@seZdZdZdZdS)r�	secp521r1i	Nrfr r r r!rsrc@seZdZdZdZdS)r�	secp384r1�Nrfr r r r!rsrc@seZdZdZdZdS)r�	secp256r1�Nrfr r r r!rsrc@seZdZdZdZdS)r�	secp256k1rxNrfr r r r!rsrc@seZdZdZdZdS)r�	secp224r1��Nrfr r r r!rsrc@seZdZdZdZdS)r
�	secp192r1�Nrfr r r r!r
sr
c@seZdZdZdZdS)�BrainpoolP256R1�brainpoolP256r1rxNrfr r r r!r~ sr~c@seZdZdZdZdS)�BrainpoolP384R1�brainpoolP384r1rvNrfr r r r!r�%sr�c@seZdZdZdZdS)�BrainpoolP512R1�brainpoolP512r1iNrfr r r r!r�*sr�)Z
prime192v1Z
prime256v1r|rzrwrurtryrsrrrqrprormrkrirgrerr�r��_CURVE_TYPESc@seZdZdd�Ze�d�ZdS)�ECDSAcCs
||_dS�N)�
_algorithm)r&r0r r r!�__init__IszECDSA.__init__r�N)r
rrr�r�read_only_propertyr0r r r r!r�Hsr�)r?r$cCst|�}|�|�Sr�)r�#generate_elliptic_curve_private_key)r?rZr r r!�generate_private_keyOsr�)�
private_valuer?r$cCsHt|�}t|t�std��|dkr*td��t|t�s<td��|�||�S)Nz&private_value must be an integer type.rz)private_value must be a positive integer.�/curve must provide the EllipticCurve interface.)rr\r-r]r_r"�!derive_elliptic_curve_private_key)r�r?rZr r r!�derive_private_keyVs

r�c@s�eZdZeeed�dd�Zded�dd�Zed�dd	�Z	e
eedd
�dd��Ze�
d
�Ze�
d�Ze�
d�Zdd�Zdd�Zdd�Zdd�ZdS)rP)�x�yr?cCsDt|t�rt|t�std��t|t�s.td��||_||_||_dS)Nzx and y must be integers.r�)r\r-r]r"�_y�_x�_curve)r&r�r�r?r r r!r�gs
z#EllipticCurvePublicNumbers.__init__Nr#cCst|�}|�|�Sr�)r�"load_elliptic_curve_public_numbers�r&rZr r r!r=rsz%EllipticCurvePublicNumbers.public_keycCsBtjdtjdd�|jjdd}dt�|j|�t�|j|�S)Nz�encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.rV��
stacklevel���)	�warnings�warnr�PersistentlyDeprecated2019r?r)�int_to_bytesr�r�)r&�byte_lengthr r r!�encode_pointvs�	���z'EllipticCurvePublicNumbers.encode_pointrTcCs�t|t�std��tjdtjdd�|�d�r�|jdd}t	|�d|dkr�t
�|d|d�d	�}t
�||dd�d	�}||||�Std
��ntd��dS)NrUz�Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_pointrVr�r�r�r���bigz(Invalid elliptic curve point data lengthrY)
r\r"r]r�r�rr��
startswithr)r^r-�
from_bytesr_)rar?r@r�r�r�r r r!rb�s
�

z-EllipticCurvePublicNumbers.from_encoded_pointr�r�r�cCsFt|t�stS|j|jkoD|j|jkoD|jj|jjkoD|jj|jjkSr�)r\rP�NotImplementedr�r�r?r'r)�r&�otherr r r!�__eq__�s

���z!EllipticCurvePublicNumbers.__eq__cCs
||kSr�r r�r r r!�__ne__�sz!EllipticCurvePublicNumbers.__ne__cCst|j|j|jj|jjf�Sr�)�hashr�r�r?r'r)r%r r r!�__hash__�sz#EllipticCurvePublicNumbers.__hash__cCs
d�|�S)NzC<EllipticCurvePublicNumbers(curve={0.curve.name}, x={0.x}, y={0.y}>)rEr%r r r!�__repr__�s��z#EllipticCurvePublicNumbers.__repr__)N)r
rrr-r"r�r:r=rJr�rdrbrr�r?r�r�r�r�r�r�r r r r!rPfs�


rPc@sXeZdZeed�dd�Zded�dd�Ze�	d�Z
e�	d	�Zd
d�Zdd
�Z
dd�ZdS)rB)r�rQcCs4t|t�std��t|t�s$td��||_||_dS)Nz!private_value must be an integer.z>public_numbers must be an EllipticCurvePublicNumbers instance.)r\r-r]rP�_private_value�_public_numbers)r&r�rQr r r!r��s

�z$EllipticCurvePrivateNumbers.__init__Nr#cCst|�}|�|�Sr�)r�#load_elliptic_curve_private_numbersr�r r r!�private_key�sz'EllipticCurvePrivateNumbers.private_keyr�r�cCs&t|t�stS|j|jko$|j|jkSr�)r\rBr�r�rQr�r r r!r��s


�z"EllipticCurvePrivateNumbers.__eq__cCs
||kSr�r r�r r r!r��sz"EllipticCurvePrivateNumbers.__ne__cCst|j|jf�Sr�)r�r�rQr%r r r!r��sz$EllipticCurvePrivateNumbers.__hash__)N)r
rrr-rPr�r6r�rr�r�rQr�r�r�r r r r!rB�s�

	rBc@seZdZdS)r9N)r
rrr r r r!r9�sr9)�oidr$cCs,z
t|WStk
r&td��YnXdS)NzCThe provided object identifier has no matching elliptic curve class)�
_OID_TO_CURVE�KeyError�LookupError)r�r r r!�get_curve_for_oids
�r�)N)N)=r*r1r��cryptographyrZcryptography.hazmat._oidr�cryptography.hazmat.backendsr�cryptography.hazmat.primitivesrr�)cryptography.hazmat.primitives.asymmetricrrr3�objectr	�ABCMetar"r/r6Z(EllipticCurvePrivateKeyWithSerializationr:Z'EllipticCurvePublicKeyWithSerializationrrrrrrrrrrrrrrrr
r~r�r�r��Dictr,�Type�__annotations__r�r�r-r�rPrBr9rrrr�r�r r r r!�<module>s�
AF�����X'�