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

�hn�@s�UdZddlZddlmZddlmZmZmZmZm	Z	m
Z
ddlmZddl
mZddlmZer7dd	lmZeeZeee	e
d
eeffZgZeed<gZeed<iZeed
<gZeed<gZeed<iZeed<Gdd
�d
e�Zdede
edede	deddfdd�Z dede
edede	deddfdd�Z!deefdd�Z"deefdd�Z#d eed!eed"edeefd#d$�Z$d%d&dedefd'd(�Z%dS))zSSH key exchange handlers�N)�md5)�
TYPE_CHECKING�Dict�List�Sequence�Tuple�Type�)�	SSHLogger)�HashType)�SSHPacketHandler)�
SSHConnection�Kex�	_kex_algs�_default_kex_algs�
_kex_handlers�
_gss_kex_algs�_default_gss_kex_algs�_gss_kex_handlersc@szeZdZdZdedddefdd�Zdd
d�Zded
edd	fdd�Z	e
defdd��Zdedededededefdd�Z
d	S)rz&Parent class for key exchange handlers�alg�connr
�hash_algcCs||_||_|j|_||_dS)N)�	algorithm�_conn�logger�_logger�	_hash_alg)�selfrrr�r�?/usr/local/CyberCP/lib/python3.10/site-packages/asyncssh/kex.py�__init__5s
zKex.__init__�returnNc�s�t�)zStart key exchange)�NotImplementedError�rrrr�start=s�z	Kex.start�pkttype�argscGs|jj|g|�Rd|i�dS)zSend a kex packet�handlerN)r�send_packet)rr%r&rrrr(BszKex.send_packetcCs|jS)z(A logger associated with this connection)rr#rrrrGsz
Kex.logger�k�h�x�
session_id�keylencCsfd}t|�|kr-|��}|�|�|�|�|�|r|n||�||��7}t|�|ks|d|�S)z(Compute keys from output of key exchange�N)�lenr�update�digest)rr)r*r+r,r-�key�hash_objrrr�compute_keyMs

�zKex.compute_key)r!N)�__name__�
__module__�__qualname__�__doc__�bytesrr r$�intr(�propertyr
rr4rrrrr2s
���rr'rr&�defaultr!cC�*t�|�|rt�|�|||ft|<dS)z!Register a key exchange algorithmN)r�appendrr�rr'rr&r<rrr�register_kex_alg\�

r@cCr=)z(Register a GSSAPI key exchange algorithmN)rr>rrr?rrr�register_gss_kex_alghrArBcC�ttS)z(Return supported key exchange algorithms)rrrrrr�get_kex_algst�rDcCrC)z&Return default key exchange algorithms)rrrrrr�get_default_kex_algszrErF�kex_algs�mechs�host_key_availablecCsbg}|D]*}|�d�r'|D]}dt�t|����dd�}|�||�q
q|r.|�|�q|S)z<Add mechanisms to GSS entries in key exchange algorithm list�gss-�-N���)�
startswith�binascii�
b2a_base64rr1r>)rGrHrI�expanded_kex_algsr�mech�suffixrrr�expand_kex_algs�s
�
�rSrr
cCsL|�d�r|�dd�d}t|\}}}nt|\}}}||||g|�R�S)z�Return a key exchange handler

       The function looks up a key exchange algorithm and returns a
       handler which can perform that type of key exchange.

    rJrKr	r)rM�rsplitrr)rrr'rr&rrr�get_kex�s

rU)&r8rN�hashlibr�typingrrrrrr�loggingr
�miscr�packetr�
connectionr
r9�_KexAlgList�object�
_KexAlgMapr�__annotations__rrrrrr�boolr@rBrDrFrSrUrrrr�<module>sP *��
���
��
�