HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib64/python3.10/site-packages/paramiko/__pycache__/rsakey.cpython-310.pyc
o

�hz�@sxdZddlmZmZddlmZddlmZmZddl	m
Z
mZddlm
Z
ddlmZddlmZGd	d
�d
e�ZdS)z
RSA keys.
�)�InvalidSignature�UnsupportedAlgorithm)�default_backend)�hashes�
serialization)�rsa�padding)�Message)�PKey)�SSHExceptionc@s�eZdZdZdZejejejejejejd�Z							d)dd�Z
edd��Ze
d	d
��Ze
dd��Zd
d�Zdd�Ze
dd��Zdd�Zdd�Zdd�Zd*dd�Zdd�Zd*dd�Zd*dd �Zed*d!d"��Zd#d$�Zd%d&�Zd'd(�ZdS)+�RSAKeyzZ
    Representation of an RSA key which can be used to sign and verify SSH2
    data.
    �ssh-rsa)r
�ssh-rsa-cert-v01@openssh.comzrsa-sha2-256z!rsa-sha2-256-cert-v01@openssh.comzrsa-sha2-512z!rsa-sha2-512-cert-v01@openssh.comNcCs�d|_d|_|dur|�||�dS|dur|�||�dS|dur*|dur*t|�}|dur3||_dS|j||jdd�tj|�	�|�	�d��
t��|_dS)Nr)�msg�key_type�	cert_type��e�n)�key�public_blob�_from_private_key�_from_private_key_filer	�_check_type_and_load_cert�namer�RSAPublicNumbers�	get_mpint�
public_keyr)�selfr�data�filename�passwordr�file_obj�r#�E/usr/local/CyberPanel/lib/python3.10/site-packages/paramiko/rsakey.py�__init__1s,	
���zRSAKey.__init__cCst|j���S�N)�list�HASHES�keys)�clsr#r#r$�identifiersRszRSAKey.identifierscCs|jjSr&)r�key_size�rr#r#r$�sizeVszRSAKey.sizecCs$t|jtj�r
|j��jS|j��Sr&)�
isinstancerr�
RSAPrivateKey�private_numbers�public_numbersr-r#r#r$r2Zs
zRSAKey.public_numberscCs6t�}|�|j�|�|jj�|�|jj�|��Sr&)r	�
add_stringr�	add_mpintr2rr�asbytes)r�mr#r#r$r5as
zRSAKey.asbytescCs|��jddd�S)N�utf8�ignore)�errors)r5�decoder-r#r#r$�__str__hszRSAKey.__str__cCs|��|jj|jjfSr&)�get_namer2rrr-r#r#r$�_fieldsmszRSAKey._fieldscC�|jSr&)rr-r#r#r$r<q�zRSAKey.get_namecCr>r&)r.r-r#r#r$�get_bitstr?zRSAKey.get_bitscCst|jtj�Sr&)r/rrr0r-r#r#r$�can_signwszRSAKey.can_signcCsR|dur|j}|jj|t��|j|�d�}t�}|�|�dd��|�|�|S)N)r�	algorithmz-cert-v01@openssh.com�)	rr�signr�PKCS1v15r(r	r3�replace)rrrB�sigr6r#r#r$�
sign_ssh_datazs
�
zRSAKey.sign_ssh_datacCs�|��}||jvrdS|j}t|tj�r|��}|��}|jt	|�d}|dkr3d|dd|}z|�
||t��|j|��WdSt
yNYdSw)NF�r��T)�get_textr(rr/rr0r�
get_binaryr,�len�verifyrrEr)rrr�
sig_algorithmrrD�diffr#r#r$�verify_ssh_sig�s$
���zRSAKey.verify_ssh_sigcC�|j||jtjj|d�dS�N)r!)�_write_private_key_filerr�
PrivateFormat�TraditionalOpenSSL)rr r!r#r#r$�write_private_key_file��
�zRSAKey.write_private_key_filecCrSrT)�_write_private_keyrrrVrW)rr"r!r#r#r$�write_private_key�rYzRSAKey.write_private_keycCstjd|t�d�}t|d�S)a$
        Generate a new private RSA key.  This factory function can be used to
        generate a new host key or authentication key.

        :param int bits: number of bits the generated key should be.
        :param progress_func: Unused
        :return: new `.RSAKey` private key
        i)�public_exponentr,�backend)r)r�generate_private_keyrr)�bits�
progress_funcrr#r#r$�generate�s
�
zRSAKey.generatecC�|�d||�}|�|�dS�N�RSA)�_read_private_key_file�_decode_key)rr r!rr#r#r$r��zRSAKey._from_private_key_filecCrbrc)�_read_private_keyrf)rr"r!rr#r#r$r�rgzRSAKey._from_private_keyc
Cs�|\}}||jkr*ztj|dt�d�}WnKtttfy)}ztt|���d}~ww||j	kr[|�
|d�\}}}}}}	tj||d�}
tj
||	|||d||	d||
d��t��}n|�|�t|tj�shJ�||_dS)N)r!r]�iiiiiir�)�p�q�d�dmp1�dmq1�iqmpr2)�_PRIVATE_KEY_FORMAT_ORIGINALr�load_der_private_keyr�
ValueError�	TypeErrorrr�str�_PRIVATE_KEY_FORMAT_OPENSSH�_uint32_cstruct_unpackrr�RSAPrivateNumbers�private_key�_got_bad_key_format_idr/r0r)rr�pkformatrrrrmrprkrlr2r#r#r$rf�s6

���


��


zRSAKey._decode_key)NNNNNNr&)�__name__�
__module__�__qualname__�__doc__rr�SHA1�SHA256�SHA512r(r%�classmethodr+�propertyr.r2r5r;r=r<r@rArHrRrXr[�staticmethodrarrrfr#r#r#r$r!sN�
�!






rN)r�cryptography.exceptionsrr�cryptography.hazmat.backendsr�cryptography.hazmat.primitivesrr�)cryptography.hazmat.primitives.asymmetricrr�paramiko.messager	�
paramiko.pkeyr
�paramiko.ssh_exceptionrrr#r#r#r$�<module>s