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__/dsskey.cpython-38.pyc
U

P��g8 �@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�eZdZdZdZd#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|_|dk	r<|�||�dS|dk	rT|�||�dS|dkrl|dk	rlt|�}|dk	r�|\|_|_|_|_nB|j	||j
|j
�d�d�|��|_|��|_|��|_|��|_t�
|j�|_dS)Nz-cert-v01@openssh.com)�msgZkey_typeZ	cert_type)�p�q�g�y�xZpublic_blob�_from_private_key�_from_private_key_filerZ_check_type_and_load_cert�nameZ	get_mpintr	�
bit_length�size)�selfr�data�filename�password�vals�file_obj�r"�</opt/cppython/lib/python3.8/site-packages/paramiko/dsskey.py�__init__0s4	
�



zDSSKey.__init__cCsJt�}|�|j�|�|j�|�|j�|�|j�|�|j�|��S�N)	r�
add_stringrZ	add_mpintrrrr�asbytes)r�mr"r"r#r'UszDSSKey.asbytescCs|��Sr%)r'�rr"r"r#�__str__^szDSSKey.__str__cCs|��|j|j|j|jfSr%)�get_namerrrrr)r"r"r#�_fieldsaszDSSKey._fieldscCs|jSr%)rr)r"r"r#r+fszDSSKey.get_namecCs|jSr%)rr)r"r"r#�get_bitsiszDSSKey.get_bitscCs
|jdk	Sr%)rr)r"r"r#�can_signlszDSSKey.can_signc
	Cs�tj|jtj|jtj|j|j|jd�d�d�j	t
�d�}|�|t�
��}t|�\}}t�}|�|j�t�|d�}t�|d�}	t|�dkr�tdt|�|}t|	�dkr�tdt|	�|	}	|�||	�|S)N�rrr�r�parameter_numbers�r�public_numbers��backendr�)r�DSAPrivateNumbersr�DSAPublicNumbersr�DSAParameterNumbersrrr�private_keyr�signr�SHA1rrr&rr	Zdeflate_long�lenr
)
rr�	algorithm�key�sig�r�sr(ZrstrZsstrr"r"r#�
sign_ssh_dataos2����	zDSSKey.sign_ssh_datac	Cs�t|���dkr|��}n|��}||jkr0dS|��}t�|dd�d�}t�|dd�d�}t||�}tj	|j
tj|j|j
|jd�d�jt�d�}z|�||t���Wntk
r�YdSXd	SdS)
N�(rr6�r/r0r4FT)r=r'Zget_textrZ
get_binaryr	Zinflate_longrrr8rr9rrrZ
public_keyr�verifyrr<r)	rrrr@�kindZsigRZsigS�	signaturer?r"r"r#�verify_ssh_sig�s0


���zDSSKey.verify_ssh_sigc	CsRtj|jtj|jtj|j|j|jd�d�d�j	t
�d�}|j||tj
j|d�dS�Nr/r0r2r4)r)rr7rr8rr9rrrr:rZ_write_private_key_filer�
PrivateFormat�TraditionalOpenSSL)rrrr?r"r"r#�write_private_key_file�s&����
�zDSSKey.write_private_key_filec	CsRtj|jtj|jtj|j|j|jd�d�d�j	t
�d�}|j||tj
j|d�dSrJ)rr7rr8rr9rrrr:rZ_write_private_keyrrKrL)rr!rr?r"r"r#�write_private_key�s&����
�zDSSKey.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
        r4)r )rZgenerate_private_keyrZprivate_numbersrr3r1rrrrr)�bitsZ
progress_func�numbersr?r"r"r#�generate�s
�
��zDSSKey.generatecCs|�d||�}|�|�dS�NZDSA)Z_read_private_key_file�_decode_key)rrrrr"r"r#r�szDSSKey._from_private_key_filecCs|�d||�}|�|�dSrS)Z_read_private_keyrT)rr!rrr"r"r#r�szDSSKey._from_private_keyc
Cs�|\}}||jkrVzt|���}Wq�tk
rR}ztd�|���W5d}~XYq�Xn0||jkr||�|d�}dgt|�}n
|�	|�t
|�tk	s�t|�dks�|ddkr�td��|d|_|d|_
|d|_|d	|_|d
|_t�|j�|_dS)NzUnable to parse key file: {}Ziiiiir�z3not a valid DSA private key file (bad ber encoding)rE����)Z_PRIVATE_KEY_FORMAT_ORIGINALr
�decoderr�formatZ_PRIVATE_KEY_FORMAT_OPENSSHZ_uint32_cstruct_unpack�listZ_got_bad_key_format_id�typer=rrrrrr	rr)rrZpkformatZkeylist�er"r"r#rT�s(
"

$�




zDSSKey._decode_key)NNNNNN)N)N)N)rON)�__name__�
__module__�__qualname__�__doc__rr$r'r*�propertyr,r+r-r.rCrIrMrN�staticmethodrRrrrTr"r"r"r#r(s2�
%	



rN)rbZcryptography.exceptionsrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrrZ)cryptography.hazmat.primitives.asymmetricrZ/cryptography.hazmat.primitives.asymmetric.utilsrrZparamikor	Zparamiko.commonr
Zparamiko.ssh_exceptionrZparamiko.messagerZparamiko.berr
rZ
paramiko.pkeyrrr"r"r"r#�<module>s

F1le Man4ger