Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/site-packages/paramiko/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/site-packages/paramiko/__pycache__/ecdsakey.cpython-38.pyc
U

P��g�-�@s�dZddlmZmZddlmZddlmZmZddl	m
Z
ddlmZm
Z
ddlmZddlmZdd	lmZdd
lmZddlmZGdd
�d
�ZGdd�d�ZGdd�de�ZdS)z
ECDSA keys
�)�InvalidSignature�UnsupportedAlgorithm)�default_backend)�hashes�
serialization)�ec)�decode_dss_signature�encode_dss_signature)�	four_byte)�Message)�PKey)�SSHException)�deflate_longc@seZdZdZdd�ZdS)�_ECDSACurvez�
    Represents a specific ECDSA Curve (nistp256, nistp384, etc).

    Handles the generation of the key format identifier and the selection of
    the proper hash function. Also grabs the proper curve from the 'ecdsa'
    package.
    cCsT||_|j|_d|j|_|jdkr.tj|_n|jdkrBtj|_ntj|_||_	dS)N�ecdsa-sha2-�i�)
�	nist_name�key_size�
key_length�key_format_identifierr�SHA256�hash_object�SHA384�SHA512�curve_class)�selfrr�r�>/opt/cppython/lib/python3.8/site-packages/paramiko/ecdsakey.py�__init__0s



z_ECDSACurve.__init__N)�__name__�
__module__�__qualname__�__doc__rrrrrr'src@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�_ECDSACurveSetz�
    A collection to hold the ECDSA curves. Allows querying by oid and by key
    format identifier. The two ways in which ECDSAKey needs to be able to look
    up curves.
    cCs
||_dS�N��ecdsa_curves)rr&rrrrIsz_ECDSACurveSet.__init__cCsdd�|jD�S)NcSsg|]
}|j�qSr)r)�.0�curverrr�
<listcomp>MszA_ECDSACurveSet.get_key_format_identifier_list.<locals>.<listcomp>r%�rrrr�get_key_format_identifier_listLsz-_ECDSACurveSet.get_key_format_identifier_listcCs"|jD]}|j|kr|SqdSr$)r&r)rrr(rrr�get_by_curve_classOs

z!_ECDSACurveSet.get_by_curve_classcCs"|jD]}|j|kr|SqdSr$)r&r)rrr(rrr�get_by_key_format_identifierTs

z+_ECDSACurveSet.get_by_key_format_identifiercCs"|jD]}|j|kr|SqdSr$)r&r)rrr(rrr�get_by_key_lengthYs

z _ECDSACurveSet.get_by_key_lengthN)	rr r!r"rr+r,r-r.rrrrr#Bsr#c@s�eZdZdZeeejd�eejd�eej	d�g�Z
d-dd�Zed	d
��Z
edd��Zd
d�Zdd�Zedd��Zdd�Zdd�Zdd�Zd.dd�Zdd�Zd/dd�Zd0dd �Zee��ddfd!d"��Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�ZdS)1�ECDSAKeyz\
    Representation of an ECDSA key which can be used to sign and verify SSH2
    data.
    Znistp256Znistp384Znistp521NTcCsTd|_d|_d|_|dk	r*|�||�dS|dk	rB|�||�dS|dkrZ|dk	rZt|�}|dk	r�|\|_|_|jjj}|j�	|�|_
n�|��}	d}
|	�|
�r�|	dt
|
��}	|j�|	�|_
|j��}dd�|D�}|j|||d�|��}
|
|j
jk�r
td�|
���|��}ztj�|j
��|�}||_Wntk
�rNtd��YnXdS)Nz-cert-v01@openssh.comcSsg|]}d�|��qS)z{}-cert-v01@openssh.com)�format)r'�xrrrr)�sz%ECDSAKey.__init__.<locals>.<listcomp>)�msg�key_typeZ	cert_typezCan't handle curve of type {}zInvalid public key)�
verifying_key�signing_keyZpublic_blob�_from_private_key�_from_private_key_filerr(�	__class__�
_ECDSA_CURVESr,�ecdsa_curve�get_text�endswith�lenr-r+Z_check_type_and_load_certrr
r0�
get_binaryrZEllipticCurvePublicKeyZfrom_encoded_pointr�
ValueError)rr2�data�filename�password�vals�file_objZvalidate_pointZc_classr3�suffixZ	key_typesZ
cert_typesZ	curvenameZ	pointinfo�keyrrrrmsZ

�
����
zECDSAKey.__init__cCs
|j��Sr$)r9r+��clsrrr�identifiers�szECDSAKey.identifierscCs|��Sr$)rIrGrrr� supported_key_format_identifiers�sz)ECDSAKey.supported_key_format_identifierscCs�|j}t�}|�|jj�|�|jj�|��}|jjdd}t	|j
dd�}d|t|�|}t	|jdd�}d|t|�|}t
||}|�|�|��S)N��F)Zadd_sign_padding�)r4r�
add_stringr:rr�public_numbersr(rrr1r=�yr
�asbytes)rrF�m�numbersZkey_size_bytesZx_bytesZy_bytesZ	point_strrrrrQ�s
zECDSAKey.asbytescCs|��Sr$)rQr*rrr�__str__�szECDSAKey.__str__cCs|��|j��j|j��jfSr$)�get_namer4rOr1rPr*rrr�_fields�s

�zECDSAKey._fieldscCs|jjSr$)r:rr*rrrrU�szECDSAKey.get_namecCs|jjSr$)r:rr*rrr�get_bits�szECDSAKey.get_bitscCs
|jdk	Sr$)r5r*rrr�can_sign�szECDSAKey.can_signcCsTt�|j���}|j�||�}t|�\}}t�}|�|jj	�|�|�
||��|Sr$)r�ECDSAr:rr5�signrrrNr�
_sigencode)rr@�	algorithmZecdsa�sig�r�srRrrr�
sign_ssh_data�szECDSAKey.sign_ssh_datacCst|��|jjkrdS|��}|�|�\}}t||�}z |j�||t�	|j�
���Wntk
rjYdSXdSdS)NFT)r;r:rr>�
_sigdecoder	r4�verifyrrYrr)rr@r2r]ZsigRZsigS�	signaturerrr�verify_ssh_sig�s
�zECDSAKey.verify_ssh_sigcCs|j||jtjj|d�dS�N)rB)Z_write_private_key_filer5r�
PrivateFormat�TraditionalOpenSSL)rrArBrrr�write_private_key_file�s�zECDSAKey.write_private_key_filecCs|j||jtjj|d�dSre)Z_write_private_keyr5rrfrg)rrDrBrrr�write_private_key�s�zECDSAKey.write_private_keycCsT|dk	r2|j�|�}|dkr*td�|���|��}tj|t�d�}t||�	�fd�S)a
        Generate a new private ECDSA key.  This factory function can be used to
        generate a new host key or authentication key.

        :param progress_func: Not used for this type of key.
        :returns: A new private key (`.ECDSAKey`) object
        NzUnsupported key length: {:d})�backend)rC)
r9r.r?r0rrZgenerate_private_keyrr/�
public_key)rHr(Z
progress_func�bitsZprivate_keyrrr�generates	zECDSAKey.generatecCs|�d||�}|�|�dS�NZEC)Z_read_private_key_file�_decode_key)rrArBr@rrrr7szECDSAKey._from_private_key_filecCs|�d||�}|�|�dSrn)Z_read_private_keyro)rrDrBr@rrrr6szECDSAKey._from_private_keycCs*|\}}||jkrbztj|dt�d�}Wn6ttttfk
r^}ztt	|���W5d}~XYnXn�||j
kr�zXt|�}|��}|�
�}|��}d|}	|j�|	�}
|
s�td��t�||
��t��}Wn.tk
r�}ztt	|���W5d}~XYnXn
|�|�||_|��|_|jj}|j�|�|_dS)N)rBrjrzInvalid key curve identifier)Z_PRIVATE_KEY_FORMAT_ORIGINALrZload_der_private_keyrr?�AssertionError�	TypeErrorrr
�strZ_PRIVATE_KEY_FORMAT_OPENSSHrr;r>�	get_mpintr9r-rZderive_private_keyr�	ExceptionZ_got_bad_key_format_idr5rkr4r(r8r,r:)rr@ZpkformatrF�er2Z
curve_nameZverkeyZsigkey�namer(rrrrro"sJ
�
� 
� 

zECDSAKey._decode_keycCs"t�}|�|�|�|�|��Sr$)rZ	add_mpintrQ)rr^r_r2rrrr[Is

zECDSAKey._sigencodecCs t|�}|��}|��}||fSr$)rrs)rr]r2r^r_rrrraOszECDSAKey._sigdecode)NNNNNNT)N)N)N) rr r!r"r#rrZ	SECP256R1Z	SECP384R1Z	SECP521R1r9r�classmethodrIrJrQrT�propertyrVrUrWrXr`rdrhrirmr7r6ror[rarrrrr/_sJ


��
�
>






'r/N)r"Zcryptography.exceptionsrrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrrZ)cryptography.hazmat.primitives.asymmetricrZ/cryptography.hazmat.primitives.asymmetric.utilsrr	Zparamiko.commonr
Zparamiko.messagerZ
paramiko.pkeyrZparamiko.ssh_exceptionr
Z
paramiko.utilrrr#r/rrrr�<module>s

F1le Man4ger