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: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib64/python3.10/site-packages/paramiko/__pycache__/kex_gex.cpython-310.pyc
o

�hP(�@s�dZddlZddlmZmZddlmZddlmZm	Z	m
Z
mZddlm
Z
ddlmZedd	�\ZZZZZd
d�edd	�D�\ZZZZZGdd
�d
�ZGdd�de�ZdS)z�
Variant on `KexGroup1 <paramiko.kex_group1.KexGroup1>` where the prime "p" and
generator "g" are provided by the server.  A bit more work is required on the
client side, and a **lot** more on the server side.
�N)�sha1�sha256)�util)�DEBUG�byte_chr�byte_ord�	byte_mask)�Message)�SSHException��#cCsg|]}t|��qS�)r)�.0�cr
r
�C/usr/local/CyberCP/lib/python3.10/site-packages/paramiko/kex_gex.py�
<listcomp>0src@sjeZdZdZdZdZdZeZdd�Z	ddd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS)�KexGexz"diffie-hellman-group-exchange-sha1�� icCs4||_d|_d|_d|_d|_d|_d|_d|_dS)NF)�	transport�p�q�g�x�e�f�	old_style)�selfrr
r
r�__init__;s
zKexGex.__init__FcCs�|jjr
|j�tt�dSt�}|r!|�t�|�|j	�d|_
n|�t�|�|j�|�|j	�|�|j
�|j�|�|j�t�dS)NT)r�server_mode�_expect_packet�_MSG_KEXDH_GEX_REQUEST�_MSG_KEXDH_GEX_REQUEST_OLDr	�add_byte�c_MSG_KEXDH_GEX_REQUEST_OLD�add_int�preferred_bitsr�c_MSG_KEXDH_GEX_REQUEST�min_bits�max_bits�
_send_message�_MSG_KEXDH_GEX_GROUP)r�_test_old_style�mr
r
r�	start_kexEs �

zKexGex.start_kexcCsp|tkr	|�|�S|tkr|�|�S|tkr|�|�S|tkr$|�|�S|tkr-|�	|�Sd}t
|�|j|���)Nz*KexGex {} asked to handle packet type {:d})
r!�_parse_kexdh_gex_requestr+�_parse_kexdh_gex_group�_MSG_KEXDH_GEX_INIT�_parse_kexdh_gex_init�_MSG_KEXDH_GEX_REPLY�_parse_kexdh_gex_replyr"�_parse_kexdh_gex_request_oldr
�format�name)r�ptyper-�msgr
r
r�
parse_next\s




zKexGex.parse_nextcCs�|jdd}t�|d�}t|d�}t|�}d}|d@s)|dK}|dL}|d@r	t�|�}t|d|�|dd�}t�|d�}|dkrK||krKnq*||_	dS)N��r��)
rr�deflate_longr�len�os�urandomr�inflate_longr)rr�qnorm�qhbyte�
byte_count�qmask�x_bytesrr
r
r�_generate_xls"�
�
zKexGex._generate_xcCs�|��}|��}|��}||jkr|j}||jkr|j}||kr"|}||kr(|}||_||_||_|j��}|dur>td��|j�td�	|||��|�
|||�\|_|_t
�}|�t�|�|j�|�|j�|j�|�|j�t�dS)N�-Can't do server-side gex with no modulus packzPicking p ({} <= {} <= {} bits))�get_intr)r(r&r�_get_modulus_packr
�_logrr6�get_modulusrrr	r#�c_MSG_KEXDH_GEX_GROUP�	add_mpintr*r r1)rr-�minbits�
preferredbits�maxbits�packr
r
rr/~s<


��
zKexGex._parse_kexdh_gex_requestcCs�|��|_|j|jkr|j|_|j|jkr|j|_|j��}|dur&td��|j�td�	|j��|�
|j|j|j�\|_|_t
�}|�t�|�|j�|�|j�|j�|�|j�t�d|_dS)NrJzPicking p (~ {} bits)T)rKr&r)r(rrLr
rMrr6rNrrr	r#rOrPr*r r1r)rr-rTr
r
rr5�s*

��

z#KexGex._parse_kexdh_gex_request_oldcCs�|��|_|��|_t�|j�}|dks|dkrtd�|���|j�t	d�|��|�
�t|j|j|j�|_
t�}|�t�|�|j
�|j�|�|j�t�dS)Nrrz<Server-generated gex p (don't ask) is out of range ({} bits)zGot server p ({} bits))�	get_mpintrrr�
bit_lengthr
r6rrMrrI�powrrr	r#�c_MSG_KEXDH_GEX_INITrPr*r r3)rr-�bitlenr
r
rr0�s 

�
zKexGex._parse_kexdh_gex_groupcCsz|��|_|jdks|j|jdkrtd��|��t|j|j|j�|_t|j|j|j�}|j	�
���}t�}|�
|j	j|j	j|j	j|j	j|�|jsQ|�|j�|�|j�|js`|�|j�|�|j�|�|j�|�|j�|�|j�|�|�|�|�����}|j	�||�|j	�
��||j	j�}t�}|�t�|�|�|�|j�|�|�|j	� |�|j	�!�dS)Nr;zClient kex "e" is out of range)"rUrrr
rIrWrrrr�get_server_key�asbytesr	�add�remote_version�
local_version�remote_kex_init�local_kex_initrr%r(r&r)rP�	hash_algo�digest�_set_K_H�
sign_ssh_data�
host_key_typer#�c_MSG_KEXDH_GEX_REPLY�
add_stringr*�_activate_outbound)rr-�K�key�hm�H�sigr
r
rr2�sJ
�

�


zKexGex._parse_kexdh_gex_initcCs|��}|��|_|��}|jdks|j|jdkrtd��t|j|j|j�}t�}|�|j	j
|j	j|j	j|j	j
|�|jsD|�|j�|�|j�|jsS|�|j�|�|j�|�|j�|�|j�|�|j�|�|�|j	�||�|������|j	�||�|j	��dS)Nr;zServer kex "f" is out of range)�
get_stringrUrrr
rWrr	r\rr^r]r`r_rr%r(r&r)rPrrrcrar[rb�_verify_keyrh)rr-�host_keyrmrirkr
r
rr4�s6
�
zKexGex._parse_kexdh_gex_replyN)F)�__name__�
__module__�__qualname__r7r(r)r&rrarr.r:rIr/r5r0r2r4r
r
r
rr3s

&+rc@seZdZdZeZdS)�KexGexSHA256z$diffie-hellman-group-exchange-sha256N)rqrrrsr7rrar
r
r
rrtsrt)�__doc__rA�hashlibrr�paramikor�paramiko.commonrrrr�paramiko.messager	�paramiko.ssh_exceptionr
�ranger"r+r1r3r!r$rOrXrfr'rrtr
r
r
r�<module>s0	�	�l