File: //usr/local/CyberCP/lib64/python3.10/site-packages/paramiko/__pycache__/kex_gex.cpython-310.pyc
o
�hP( � @ s� d Z ddlZddlmZmZ ddlmZ ddlmZm Z m
Z
mZ ddlm
Z
ddlmZ edd �\ZZZZZd
d� edd �D �\ZZZZZG dd
� d
�ZG dd� 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� �# c C s g | ]}t |��qS � )r )�.0�cr
r
�C/usr/local/CyberCP/lib/python3.10/site-packages/paramiko/kex_gex.py�
<listcomp>0 s r c @ sj e Zd ZdZdZdZdZeZdd� Z ddd �Z
d
d� Zdd
� Zdd� Z
dd� Zdd� Zdd� Zdd� ZdS )�KexGexz"diffie-hellman-group-exchange-sha1� � i c C s4 || _ d | _d | _d | _d | _d | _d | _d| _d S )NF)� transport�p�q�g�x�e�f� old_style)�selfr r
r
r �__init__; s
zKexGex.__init__Fc C s� | j jr
| j �tt� d S t� }|r!|�t� |�| j � d| _
n|�t� |�| j� |�| j � |�| j
� | j �|� | j �t� d S )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_kexE s �
zKexGex.start_kexc C sp |t kr | �|�S |tkr| �|�S |tkr| �|�S |tkr$| �|�S |tkr-| � |�S d}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"