
    7gl                         d Z ddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlmZ  edd	          \  ZZd
  edd	          D             \  ZZ e	d          edz  z   Zedz  Z G d d          ZdS )z
Standard SSH key exchange ("kex" if you wanna sound cool).  Diffie-Hellman of
1024 bit key halves, using a known "p" prime and "g" generator.
    N)sha1)util)max_byte	zero_bytebyte_chr	byte_mask)Message)SSHException       c                 ,    g | ]}t          |          S  )r   ).0cs     M/var/www/html/syslog/venv/lib/python3.11/site-packages/paramiko/kex_group1.py
<listcomp>r   "   s    &J&J&Jqx{{&J&J&J             c                   B    e Zd ZdZdZdZeZd Zd Z	d Z
d Zd Zd	 Zd
S )	KexGroup1lE   8{3If?E yZ3V58noPe?a-tBLy3W[<p6m5P&aF!33*w& ARM;L}.c|&A@h\&&#-Dvd    zdiffie-hellman-group1-sha1c                 >    || _         d| _        d| _        d| _        d S )Nr   )	transportxef)selfr   s     r   __init__zKexGroup1.__init__1   s"    "r   c                    |                                   | j        j        rFt          | j        | j        | j                  | _        | j                            t                     d S t          | j        | j        | j                  | _
        t                      }|                    t                     |                    | j
                   | j                            |           | j                            t                      d S )N)_generate_xr   server_modepowGr   Pr   _expect_packet_MSG_KEXDH_INITr   r	   add_bytec_MSG_KEXDH_INIT	add_mpint_send_message_MSG_KEXDH_REPLY)r   ms     r   	start_kexzKexGroup1.start_kex7   s    >% 	00DFN))/:::FTVTVTV,,II	

#$$$	DF$$Q'''%%&677777r   c                     | j         j        r |t          k    r|                     |          S | j         j        s |t          k    r|                     |          S d}t          |                    |                    )Nz*KexGroup1 asked to handle packet type {:d})r   r#   r(   _parse_kexdh_initr-   _parse_kexdh_replyr
   format)r   ptyper.   msgs       r   
parse_nextzKexGroup1.parse_nextF   sx    >% 	.5O+C+C))!,,,+ 	.:J1J1J**1---:3::e,,---r   c                     	 t          j        d          }t          |d         d          |dd          z   }|d d         t          k    r|d d         t          k    rn]t          j        |          | _        d S )N      r   r   r   )osurandomr   b7fffffffffffffffb0000000000000000r   inflate_longr   )r   x_bytess     r   r"   zKexGroup1._generate_xP   s|    	jooG
D11GABBK?G000BQBK#444	 "7++r   c                    |                                 }|                                | _        | j        dk     s| j        | j        dz
  k    rt	          d          |                                }t          | j        | j        | j                  }t                      }|	                    | j
        j        | j
        j        | j
        j        | j
        j                   |                    |           |                    | j                   |                    | j                   |                    |           | j
                            ||                     |                                                                                     | j
                            ||           | j
                                         d S )Nr8   zServer kex "f" is out of range)
get_string	get_mpintr   r&   r
   
get_binaryr$   r   r	   addr   local_versionremote_versionlocal_kex_initremote_kex_init
add_stringr+   r   _set_K_H	hash_algoasbytesdigest_verify_key_activate_outbound)r   r.   host_keysigKhms         r   r2   zKexGroup1._parse_kexdh_replya   sd   <<>>FQJJDFTVaZ//?@@@llnn'' YY
N(N)N)N*		
 	
 	
 	h
TV
TV
Q4>>"**,,#?#?#F#F#H#HIII""8S111))+++++r   c                    |                                 | _        | j        dk     s| j        | j        dz
  k    rt          d          t	          | j        | j        | j                  }| j                                                                        }t                      }|
                    | j        j        | j        j        | j        j        | j        j                   |                    |           |                    | j                   |                    | j                   |                    |           |                     |                                                                          }| j                            ||           | j                                                            || j        j                  }t                      }|                    t0                     |                    |           |                    | j                   |                    |           | j                            |           | j                                         d S )Nr8   zClient kex "e" is out of range)rB   r   r&   r
   r$   r   r   get_server_keyrL   r	   rD   rF   rE   rH   rG   rI   r+   r   rK   rM   rJ   sign_ssh_datahost_key_typer)   c_MSG_KEXDH_REPLYr,   rO   )r   r.   rR   keyrS   HrQ   s          r   r1   zKexGroup1._parse_kexdh_initz   s   FQJJDFTVaZ//?@@@''n++--5577 YY
N)N(N*N)		
 	
 	
 	c
TV
TV
QNN2::<<((//111%%%n++--;;t~+
 
 II	

$%%%	S	DF	S$$Q'''))+++++r   N)__name__
__module____qualname__r&   r%   namer   rK   r    r/   r6   r"   r2   r1   r   r   r   r   r   (   s         	KA	A'DI  8 8 8. . ., , ,", , ,2!, !, !, !, !,r   r   )__doc__r:   hashlibr   paramikor   paramiko.commonr   r   r   r   paramiko.messager	   paramiko.ssh_exceptionr
   ranger(   r-   r*   rX   r<   r=   r   r   r   r   <module>rf      s  & 
 
			             D D D D D D D D D D D D $ $ $ $ $ $ / / / / / / %*E"bMM !!&J&JEE"bMM&J&J&J # #HTNNX\1 M s, s, s, s, s, s, s, s, s, s,r   