
    oh                        d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddl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 G d de      Z G d de      Zyc c} w )zQ
Ephemeral Elliptic Curve Diffie-Hellman (ECDH) key exchange
RFC 5656, Section 4
    )sha256sha384sha512)byte_chr)Message)SSHException)default_backend)ec)serialization)hexlify       c                   Z    e Zd ZdZeZ ej                         Zd Z	d Z
d Zd Zd Zd Zy)	KexNistp256zecdh-sha2-nistp256c                 <    || _         d| _        d | _        d | _        y )Nr   )	transportPQ_CQ_S)selfr   s     h/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/paramiko/kex_ecdh_nist.py__init__zKexNistp256.__init__   s    "    c                    | j                          | j                  j                  r | j                  j                  t               y t               }|j                  t               |j                  | j                  j                  t        j                  j                  t        j                  j                               | j                  j!                  |       | j                  j                  t"               y N)_generate_key_pairr   server_mode_expect_packet_MSG_KEXECDH_INITr   add_bytec_MSG_KEXECDH_INIT
add_stringr   public_bytesr   EncodingX962PublicFormatUncompressedPoint_send_message_MSG_KEXECDH_REPLY)r   ms     r   	start_kexzKexNistp256.start_kex    s    !>>%%NN))*;<I	

%&	HH!!&&++**<<	
 	$$Q'%%&89r   c                     | j                   j                  r|t        k(  r| j                  |      S | j                   j                  s|t        k(  r| j                  |      S t        dj                  |            )Nz(KexECDH asked to handle packet type {:d})r   r   r   _parse_kexecdh_initr)   _parse_kexecdh_replyr   format)r   ptyper*   s      r   
parse_nextzKexNistp256.parse_next1   si    >>%%54E+E++A..++:L1L,,Q//6==eD
 	
r   c                    t        j                  | j                  t                     | _        | j
                  j                  r | j                  j                         | _        y | j                  j                         | _	        y r   )
r
   generate_private_keycurver	   r   r   r   
public_keyr   r   )r   s    r   r   zKexNistp256._generate_key_pair:   sU    ((_5FG>>%%vv((*DH66$$&r   c                 &   |j                         }t        j                  j                  | j                  |      | _        | j                  j                         j                         }| j                  j                  t        j                         | j
                        }t        t        |      d      }t               }|j                  | j                  j                   | j                  j"                  | j                  j$                  | j                  j&                         |j)                  |       |j)                  |       |j)                  | j*                  j-                  t.        j0                  j2                  t.        j4                  j6                               |j9                  t        |             | j;                  |j                               j=                         }| j                  j?                  ||       | j                  j                         jA                  || j                  jB                        }t               }|jE                  tF               |j)                  |       |j)                  | j*                  j-                  t.        j0                  j2                  t.        j4                  j6                               |j)                  |       | j                  jI                  |       | j                  jK                          y N   )&
get_stringr
   EllipticCurvePublicKeyfrom_encoded_pointr4   r   r   get_server_keyasbytesr   exchangeECDHintr   r   addremote_versionlocal_versionremote_kex_initlocal_kex_initr"   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*   	Q_C_bytesK_SKhmHsigs           r   r-   zKexNistp256._parse_kexecdh_initA   s   LLN	,,??JJ	
 nn++-557FFOOBGGItxx0
BY
NN))NN((NN**NN))		
 	c
i 
HH!!&&++**<<	
 	SVNN2::<(//11%nn++-;;t~~++
 I	

&'	S	HH!!&&++**<<	
 	
S$$Q'))+r   c                 N   |j                         }|j                         }t        j                  j                  | j                  |      | _        |j                         }| j                  j                  t        j                         | j
                        }t        t        |      d      }t               }|j                  | j                  j                  | j                  j                   | j                  j"                  | j                  j$                         |j'                  |       |j'                  | j(                  j+                  t,        j.                  j0                  t,        j2                  j4                               |j'                  |       |j7                  |       | j                  j9                  || j;                  |j=                               j?                                | j                  jA                  ||       | j                  jC                          y r7   )"r9   r
   r:   r;   r4   r   
get_binaryr   r>   r?   r@   r   r   rA   r   rC   rB   rE   rD   r"   r   r#   r   r$   r%   r&   r'   rF   rI   rG   r=   rH   _verify_keyrM   )r   r*   rO   	Q_S_bytesrS   rP   rQ   s          r   r.   z KexNistp256._parse_kexecdh_replyn   sn   llnLLN	,,??JJ	
 llnFFOOBGGItxx0
BY
NN((NN))NN))NN**		
 	c
HH!!&&++**<<	
 	i 
Q4>>"**,#?#F#F#HI""3,))+r   N)__name__
__module____qualname__namer   rG   r
   	SECP256R1r4   r   r+   r1   r   r-   r.    r   r   r   r      s8    DIBLLNE:"
'+,Z,r   r   c                   6    e Zd ZdZeZ ej                         Zy)KexNistp384zecdh-sha2-nistp384N)	rX   rY   rZ   r[   r   rG   r
   	SECP384R1r4   r]   r   r   r_   r_          DIBLLNEr   r_   c                   6    e Zd ZdZeZ ej                         Zy)KexNistp521zecdh-sha2-nistp521N)	rX   rY   rZ   r[   r   rG   r
   	SECP521R1r4   r]   r   r   rc   rc      ra   r   rc   N)__doc__hashlibr   r   r   paramiko.commonr   paramiko.messager   paramiko.ssh_exceptionr   cryptography.hazmat.backendsr	   )cryptography.hazmat.primitives.asymmetricr
   cryptography.hazmat.primitivesr   binasciir   ranger   r)   r!   rL   r   r_   rc   )cs   0r   <module>rp      s   
 + * $ $ / 8 8 8 (-b" % %@Eb"*N18A;*N ' 'x, x,v+ + I +Os   B