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/lib/python3.10/site-packages/paramiko/__pycache__/ed25519key.cpython-310.pyc
o

�h!�@sxddlZddlmZddlmZddlZddlmZddl	m
Z
mZmZddl
mZddlmZmZGdd	�d	e
�ZdS)
�N)�default_backend)�Cipher)�Message)�PKey�OPENSSH_AUTH_MAGIC�_unpad_openssh)�b)�SSHException�PasswordRequiredExceptionc@sfeZdZdZdZ	ddd�Zdd�Zdd	�Zed
d��Z	dd
�Z
dd�Zdd�Zddd�Z
dd�ZdS)�
Ed25519Keya
    Representation of an `Ed25519 <https://ed25519.cr.yp.to/>`_ key.

    .. note::
        Ed25519 key support was added to OpenSSH in version 6.5.

    .. versionadded:: 2.2
    .. versionchanged:: 2.3
        Added a ``file_obj`` parameter to match other key classes.
    zssh-ed25519Nc
Cs�d|_d}}|dur|durt|�}|dur)|j||jdd�tj�|���}n.|durKt|d��}|�	d|�\}	}Wd�n1sEwYn|durW|�	d|�\}	}|s[|ra|�
||�}|durm|durmtd��||_||_
dS)Nz ssh-ed25519-cert-v01@openssh.com)�msg�key_type�	cert_type�r�OPENSSHz
need a key)�public_blobr�_check_type_and_load_cert�name�nacl�signing�	VerifyKey�
get_binary�open�_read_private_key�_parse_signing_key_data�
ValueError�_signing_key�_verifying_key)
�selfr�data�filename�password�file_obj�
verifying_key�signing_key�f�pkformat�r'�I/usr/local/CyberPanel/lib/python3.10/site-packages/paramiko/ed25519key.py�__init__,s0���
zEd25519Key.__init__cCsnddlm}t|�}|�tt��tkrtd��|��}|��}|��}|�	�}|dkr6|s1|dkr5td��n|dkrM|s@t
d��t|�}	|	��}
|	�	�}ntd��|dkr^||jvr^td��g}t|�D]}
t|���}|��|j
krwtd��|�|���qd|��}|dkr�|}n>|j|}tjt|�|
|d|d|d	d
�}t|d|d|d��|d||dd��t�d
���}|�|�|��}tt|��}|�	�|�	�kr�td��g}t|�D]G}|��|j
kr�td��|��}|��}tj�|dd��}|j��|k�r||k�r|dd�k�sJ�J�|�|�|��q�t|�dk�r3td��|dS)Nr)�	TransportzInvalid key�none�bcryptzPrivate key file is encryptedzkey-sizez
block-sizeT)r!�salt�desired_key_bytes�rounds�ignore_few_rounds�class�mode)�backend� �)�paramiko.transportr*r�	get_bytes�lenrr	�get_textr�get_intr
�_cipher_info�ranger�appendr,�kdfrrr�	decryptor�update�finalizerrr�
SigningKey�
verify_key�encode)rrr!r*�message�
ciphername�kdfname�
kdfoptions�num_keysr>�bcrypt_salt�
bcrypt_rounds�public_keys�_�pubkey�private_ciphertext�private_data�cipher�keyr?�signing_keys�i�public�key_datar$r'r'r(rIs���

�	���
�
�
�

z"Ed25519Key._parse_signing_key_datacCs@|��r	|jj}n|j}t�}|�|j�|�|���|��S�N)	�can_signrrCrr�
add_stringrrD�asbytes)r�v�mr'r'r(rZ�s
zEd25519Key.asbytescCs$|��r	|jj}n|j}|��|fSrW)rXrrCr�get_name)rr[r'r'r(�_fields�s
zEd25519Key._fieldscCs|jSrW)r�rr'r'r(r]�szEd25519Key.get_namecCsdS)N�r'r_r'r'r(�get_bits�szEd25519Key.get_bitscCs
|jduSrW)rr_r'r'r(rX�s
zEd25519Key.can_signcCs*t�}|�|j�|�|j�|�j�|SrW)rrYrr�sign�	signature)rr�	algorithmr\r'r'r(�
sign_ssh_data�szEd25519Key.sign_ssh_datacCsD|��|jkr	dSz|j�||���WdStjjy!YdSw)NFT)r9rr�verifyrr�
exceptions�BadSignatureError)rrrr'r'r(�verify_ssh_sig�s��zEd25519Key.verify_ssh_sig)NNNNNrW)�__name__�
__module__�__qualname__�__doc__rr)rrZ�propertyr^r]rarXrerir'r'r'r(rs
�`


r)r,�cryptography.hazmat.backendsr�&cryptography.hazmat.primitives.ciphersr�nacl.signingr�paramiko.messager�
paramiko.pkeyrrr�
paramiko.utilr�paramiko.ssh_exceptionr	r
rr'r'r'r(�<module>s