
    7gT                         d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ  edd	          \  ZZd
  edd	          D             \  ZZ G d d          ZdS )    N)UnsupportedAlgorithm)constant_timeserialization)X25519PrivateKeyX25519PublicKey)Messagebyte_chr)SSHException       c                 ,    g | ]}t          |          S  r	   ).0cs     Q/var/www/html/syslog/venv/lib/python3.11/site-packages/paramiko/kex_curve25519.py
<listcomp>r      s    *N*N*N18A;;*N*N*N    c                   V    e Zd Zej        Zd Zed             Zd Z	d Z
d Zd Zd ZdS )	KexCurve25519c                 "    || _         d | _        d S N)	transportkey)selfr   s     r   __init__zKexCurve25519.__init__   s    "r   c                 P    	 t          j                     dS # t          $ r Y dS w xY w)NTF)r   generater   )clss    r   is_availablezKexCurve25519.is_available   sA    	%''' 4 $ 	 	 	55	s    
%%c                     | j                             |          }t          j        |d          rt	          d          |S )Ns                                    z.peer's curve25519 public value has wrong order)r   exchanger   bytes_eqr   )r   peer_keysecrets      r   _perform_exchangezKexCurve25519._perform_exchange$   sH    ""8,,!&,77 	@   r   c                    t          j                    | _        | j        j        r!| j                            t                     d S t                      }|                    t                     |
                    | j                                                            t          j        j        t          j        j                             | j                            |           | j                            t$                     d S r   )r   r   r   r   server_mode_expect_packet_MSG_KEXECDH_INITr   add_bytec_MSG_KEXECDH_INIT
add_string
public_keypublic_bytesr   EncodingRawPublicFormat_send_message_MSG_KEXECDH_REPLY)r   ms     r   	start_kexzKexCurve25519.start_kex,   s    #,..>% 	N))*;<<<FII	

%&&&	H!!..&*M,F,J 	
 	
 	

 	$$Q'''%%&899999r   c                     | j         j        r |t          k    r|                     |          S | j         j        s |t          k    r|                     |          S t          d                    |                    )Nz.KexCurve25519 asked to handle packet type {:d})r   r(   r*   _parse_kexecdh_initr4   _parse_kexecdh_replyr   format)r   ptyper5   s      r   
parse_nextzKexCurve25519.parse_next<   s}    >% 	054E+E+E++A...+ 	0:L1L1L,,Q///<CCEJJ
 
 	
r   c                 >   |                                 }t          j        |          }|                     |          }t	          t          j        |          d          }t                      }|                    | j	        j
        | j	        j        | j	        j        | j	        j                   | j	                                                                        }| j                                                            t&          j        j        t&          j        j                  }|                    |           |                    |           |                    |           |                    |           |                     |                                                                          }| j	                            ||           | j	                                                            || j	        j                  }	t                      }|                    t>                     |                    |           |                    |           |                    |	           | j	                             |           | j	        !                                 d S N   )"
get_stringr   from_public_bytesr&   intbinasciihexlifyr   addr   remote_versionlocal_versionremote_kex_initlocal_kex_initget_server_keyasbytesr   r.   r/   r   r0   r1   r2   r-   	add_mpint	hash_algodigest_set_K_Hsign_ssh_datahost_key_typer+   c_MSG_KEXECDH_REPLYr3   _activate_outbound)
r   r5   peer_key_bytesr$   Khmserver_key_bytesexchange_key_bytesHsigs
             r   r8   z!KexCurve25519._parse_kexecdh_initE   s   "4^DD""8,, ##R((YY
N)N(N*N)		
 	
 	
  >88::BBDD!X0022??"&(B(F
 
 	&'''
n%%%
()))
QNN2::<<((//111%%%n++--;;t~+
 
 II	

&'''	%&&&	'(((	S$$Q'''))+++++r   c                    |                                 }|                                 }|                                }t          j        |          }|                     |          }t          t          j        |          d          }t                      }|	                    | j
        j        | j
        j        | j
        j        | j
        j                   |                    |           |                    | j                                                            t&          j        j        t&          j        j                             |                    |           |                    |           | j
                            ||                     |                                                                                     | j
                            ||           | j
                                         d S r>   )r@   
get_binaryr   rA   r&   rB   rC   rD   r   rE   r   rG   rF   rI   rH   r-   r   r.   r/   r   r0   r1   r2   rL   rO   rM   rK   rN   _verify_keyrS   )r   r5   peer_host_key_bytesrT   rZ   r$   rU   rV   s           r   r9   z"KexCurve25519._parse_kexecdh_replyh   s   llnnllnn"4^DD""8,, ##R((YY
N(N)N)N*		
 	
 	
 	)***
H!!..&*M,F,J 	
 	
 	

 	n%%%
Q4>>"**,,#?#?#F#F#H#HIII""#6<<<))+++++r   N)__name__
__module____qualname__hashlibsha256rM   r   classmethodr    r&   r6   r<   r8   r9   r   r   r   r   r      s        I     [  : : : 
 
 
!, !, !,F, , , , ,r   r   )rC   rb   cryptography.exceptionsr   cryptography.hazmat.primitivesr   r   0cryptography.hazmat.primitives.asymmetric.x25519r   r   paramiko.messager   paramiko.commonr
   paramiko.ssh_exceptionr   ranger*   r4   r,   rR   r   r   r   r   <module>rl      s     8 8 8 8 8 8 G G G G G G G G       
 % $ $ $ $ $ $ $ $ $ $ $ / / / / / / ).b" % %*N*Nb"*N*N*N ' 'o, o, o, o, o, o, o, o, o, o,r   