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__/dsskey.cpython-310.pyc
o

�h8 �@s�dZddlmZddlmZddlmZmZddlm	Z	ddl
mZmZddl
mZddlmZdd	lmZdd
lmZddlmZmZddlmZGd
d�de�ZdS)z
DSS keys.
�)�InvalidSignature)�default_backend)�hashes�
serialization)�dsa)�decode_dss_signature�encode_dss_signature)�util)�	zero_byte)�SSHException)�Message)�BER�BERException)�PKeyc@s�eZdZdZdZ						d#dd�Zdd�Zdd	�Zed
d��Z	dd
�Z
dd�Zdd�Zd$dd�Z
dd�Zd$dd�Zd$dd�Zed%dd��Zdd�Zdd �Zd!d"�ZdS)&�DSSKeyzX
    Representation of a DSS key which can be used to sign an verify SSH2
    data.
    zssh-dssNcCs�d|_d|_d|_d|_d|_d|_|dur|�||�dS|dur*|�||�dS|dur6|dur6t|�}|durE|\|_|_|_|_n!|j	||j
|j
�d�d�|��|_|��|_|��|_|��|_t�
|j�|_dS)Nz-cert-v01@openssh.com)�msg�key_type�	cert_type)�p�q�g�y�x�public_blob�_from_private_key�_from_private_key_filer�_check_type_and_load_cert�name�	get_mpintr	�
bit_length�size)�selfr�data�filename�password�vals�file_obj�r'�E/usr/local/CyberPanel/lib/python3.10/site-packages/paramiko/dsskey.py�__init__0s4	
�



zDSSKey.__init__cCsJt�}|�|j�|�|j�|�|j�|�|j�|�|j�|��S�N)	r�
add_stringr�	add_mpintrrrr�asbytes)r!�mr'r'r(r-UszDSSKey.asbytescCs|��Sr*)r-�r!r'r'r(�__str__^szDSSKey.__str__cCs|��|j|j|j|jfSr*)�get_namerrrrr/r'r'r(�_fieldsaszDSSKey._fieldscC�|jSr*)rr/r'r'r(r1f�zDSSKey.get_namecCr3r*)r r/r'r'r(�get_bitsir4zDSSKey.get_bitscCs
|jduSr*)rr/r'r'r(�can_signls
zDSSKey.can_signc
	Cs�tj|jtj|jtj|j|j|jd�d�d�j	t
�d�}|�|t�
��}t|�\}}t�}|�|j�t�|d�}t�|d�}	t|�dkrOtdt|�|}t|	�dkr_tdt|	�|	}	|�||	�|S)N�rrr�r�parameter_numbers�r�public_numbers��backendr�)r�DSAPrivateNumbersr�DSAPublicNumbersr�DSAParameterNumbersrrr�private_keyr�signr�SHA1rrr+rr	�deflate_long�lenr
)
r!r"�	algorithm�key�sig�r�sr.�rstr�sstrr'r'r(�
sign_ssh_dataos.����	zDSSKey.sign_ssh_datac	Cs�t|���dkr
|��}n|��}||jkrdS|��}t�|dd�d�}t�|dd�d�}t||�}tj	|j
tj|j|j
|jd�d�jt�d�}z|�||t���Wd	StyaYdSw)
N�(rr>�r7r8r<FT)rFr-�get_textr�
get_binaryr	�inflate_longrrr@rrArrr�
public_keyr�verifyrrDr)	r!r"rrI�kind�sigR�sigS�	signaturerHr'r'r(�verify_ssh_sig�s.


�����zDSSKey.verify_ssh_sigc	C�Rtj|jtj|jtj|j|j|jd�d�d�j	t
�d�}|j||tj
j|d�dS�Nr7r8r:r<)r$)rr?rr@rrArrrrBr�_write_private_key_filer�
PrivateFormat�TraditionalOpenSSL)r!r#r$rHr'r'r(�write_private_key_file��"����

�zDSSKey.write_private_key_filec	Cr[r\)rr?rr@rrArrrrBr�_write_private_keyrr^r_)r!r&r$rHr'r'r(�write_private_key�razDSSKey.write_private_key�cCsHtj|t�d���}t|jjj|jjj|jjj	|jj
fd�}|j|_|S)a$
        Generate a new private DSS 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 `.DSSKey` private key
        r<)r%)r�generate_private_keyr�private_numbersrr;r9rrrrr)�bits�
progress_func�numbersrHr'r'r(�generate�s
����zDSSKey.generatecC�|�d||�}|�|�dS�N�DSA)�_read_private_key_file�_decode_key)r!r#r$r"r'r'r(r��zDSSKey._from_private_key_filecCrkrl)�_read_private_keyro)r!r&r$r"r'r'r(r�rpzDSSKey._from_private_keyc
Cs�|\}}||jkr%zt|���}Wn+ty$}ztd�|���d}~ww||jkr8|�|d�}dgt|�}n|�	|�t
|�tusOt|�dksO|ddkrStd��|d|_|d|_
|d|_|d	|_|d
|_t�|j�|_dS)NzUnable to parse key file: {}�iiiiir�z3not a valid DSA private key file (bad ber encoding)rP����)�_PRIVATE_KEY_FORMAT_ORIGINALr
�decoderr�format�_PRIVATE_KEY_FORMAT_OPENSSH�_uint32_cstruct_unpack�list�_got_bad_key_format_id�typerFrrrrrr	rr )r!r"�pkformat�keylist�er'r'r(ro�s,
��

$�




zDSSKey._decode_key)NNNNNNr*)rdN)�__name__�
__module__�__qualname__�__doc__rr)r-r0�propertyr2r1r5r6rNrZr`rc�staticmethodrjrrror'r'r'r(r(s4
�%	



rN)r��cryptography.exceptionsr�cryptography.hazmat.backendsr�cryptography.hazmat.primitivesrr�)cryptography.hazmat.primitives.asymmetricr�/cryptography.hazmat.primitives.asymmetric.utilsrr�paramikor	�paramiko.commonr
�paramiko.ssh_exceptionr�paramiko.messager�paramiko.berr
r�
paramiko.pkeyrrr'r'r'r(�<module>s