
    ohT                         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 edd	      D  cg c]
  }  e|        c} \  ZZ G d
 d      Zyc c} w )    N)UnsupportedAlgorithm)constant_timeserialization)X25519PrivateKeyX25519PublicKey)Message)byte_chr)SSHException       c                   X    e Zd Zej                  Zd Zed        Zd Z	d Z
d Zd Zd Zy)	KexCurve25519c                      || _         d | _        y N)	transportkey)selfr   s     i/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/paramiko/kex_curve25519.py__init__zKexCurve25519.__init__   s    "    c                 L    	 t        j                          y# t        $ r Y yw xY w)NTF)r   generater   )clss    r   is_availablezKexCurve25519.is_available   s,    	%%'  $ 		s    	##c                 ~    | j                   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$   s=    ""8,!!&,7@  r   c                 &   t        j                         | _        | j                  j                  r | j                  j                  t               y t               }|j                  t               |j                  | j                  j                         j                  t        j                  j                  t        j                   j                               | j                  j#                  |       | j                  j                  t$               y 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    #,,.>>%%NN))*;<I	

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

 	$$Q'%%&89r   c                     | j                   j                  r|t        k(  r| j                  |      S | j                   j                  s|t        k(  r| j                  |      S t        dj                  |            )Nz.KexCurve25519 asked to handle packet type {:d})r   r"   r$   _parse_kexecdh_initr.   _parse_kexecdh_replyr
   format)r   ptyper/   s      r   
parse_nextzKexCurve25519.parse_next<   si    >>%%54E+E++A..++:L1L,,Q//<CCEJ
 	
r   c                 2   |j                         }t        j                  |      }| j                  |      }t	        t        j                  |      d      }t               }|j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                         | j                  j                         j                         }| j                   j#                         j%                  t&        j(                  j*                  t&        j,                  j*                        }|j/                  |       |j/                  |       |j/                  |       |j1                  |       | j3                  |j                               j5                         }| j                  j7                  ||       | j                  j                         j9                  || j                  j:                        }	t               }|j=                  t>               |j/                  |       |j/                  |       |j/                  |	       | j                  jA                  |       | j                  jC                          y 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   r*   r+   r,   r'   	add_mpint	hash_algodigest_set_K_Hsign_ssh_datahost_key_typer%   c_MSG_KEXECDH_REPLYr-   _activate_outbound)
r   r/   peer_key_bytesr   Khmserver_key_bytesexchange_key_bytesHsigs
             r   r2   z!KexCurve25519._parse_kexecdh_initE   s   "44^D""8,  #R(Y
NN))NN((NN**NN))		
  >>88:BBD!XX002??""&&(B(B(F(F
 	&'
n%
()
QNN2::<(//11%nn++-;;t~~++
 I	

&'	%&	'(	S$$Q'))+r   c                    |j                         }|j                         }|j                         }t        j                  |      }| j	                  |      }t        t        j                  |      d      }t               }|j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                         |j                  |       |j                  | j                   j#                         j%                  t&        j(                  j*                  t&        j,                  j*                               |j                  |       |j/                  |       | j                  j1                  || j3                  |j5                               j7                                | j                  j9                  ||       | j                  j;                          y r8   )r:   
get_binaryr   r;   r    r<   r=   r>   r   r?   r   rA   r@   rC   rB   r'   r   r(   r)   r   r*   r+   r,   rF   rI   rG   rE   rH   _verify_keyrM   )r   r/   peer_host_key_bytesrN   rT   r   rO   rP   s           r   r3   z"KexCurve25519._parse_kexecdh_replyh   s_   llnlln"44^D""8,  #R(Y
NN((NN))NN))NN**		
 	)*
HH!..&&**M,F,F,J,J	

 	n%
Q4>>"**,#?#F#F#HI""#6<))+r   N)__name__
__module____qualname__hashlibsha256rG   r   classmethodr   r    r0   r6   r2   r3    r   r   r   r      s>    I  : 
!,F,r   r   )r=   r\   cryptography.exceptionsr   cryptography.hazmat.primitivesr   r   0cryptography.hazmat.primitives.asymmetric.x25519r   r   paramiko.messager   paramiko.commonr	   paramiko.ssh_exceptionr
   ranger$   r.   r&   rL   r   )cs   0r   <module>rh      sh      8 G
 % $ / ).b" % %@Eb"*N18A;*N ' 'o, o, +Os   A(