Ë
    zñ�j”  ã                   ó  — 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     úW/var/www/api.ozpay.ru/ozpay/venv/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¨   € Ø×ÑÔ!Ø�>‰>×%Ò%Ø�N‰N×)Ñ)Ô*;Ô<ØÜ‹IˆØ	�
‰
Ô%Ô&à	�‰Ø�H‰H×!Ñ!Ü×&Ñ&×+Ñ+Ü×*Ñ*×<Ñ<óô	
ð 	�‰×$Ñ$ 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   € Ø�>‰>×%Ò%¨5Ô4EÒ+EØ×+Ñ+¨AÓ.Ð.Ø—‘×+Ò+°Ô:LÒ1LØ×,Ñ,¨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ˆŒØ�>‰>×%Ò%Ø—v‘v×(Ñ(Ó*ˆDŒHØØ—6‘6×$Ñ$Ó&ˆ�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  € Ø—L‘L“Nˆ	Ü×,Ñ,×?Ñ?Ø�J‰J˜	ó
ˆŒð �n‰n×+Ñ+Ó-×5Ñ5Ó7ˆØ�F‰F�O‰OœBŸG™G›I t§x¡xÓ0ˆÜ”˜“
˜BÓˆä‹YˆØ
�‰Ø�N‰N×)Ñ)Ø�N‰N×(Ñ(Ø�N‰N×*Ñ*Ø�N‰N×)Ñ)ô		
ð 	�‰�cÔØ
�‰�iÔ à
�‰Ø�H‰H×!Ñ!Ü×&Ñ&×+Ñ+Ü×*Ñ*×<Ñ<óô	
ð 	�‰”S˜“VÔØ�N‰N˜2Ÿ:™:›<Ó(×/Ñ/Ó1ˆØ�‰×Ñ  1Ô%Ø�n‰n×+Ñ+Ó-×;Ñ;Øˆt�~‰~×+Ñ+ó
ˆô ‹IˆØ	�
‰
Ô&Ô'Ø	�‰�SÔØ	�‰Ø�H‰H×!Ñ!Ü×&Ñ&×+Ñ+Ü×*Ñ*×<Ñ<óô	
ð 	
�‰�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  € Ø�l‰l‹nˆØ—L‘L“Nˆ	Ü×,Ñ,×?Ñ?Ø�J‰J˜	ó
ˆŒð �l‰l‹nˆØ�F‰F�O‰OœBŸG™G›I t§x¡xÓ0ˆÜ”˜“
˜BÓˆä‹YˆØ
�‰Ø�N‰N×(Ñ(Ø�N‰N×)Ñ)Ø�N‰N×)Ñ)Ø�N‰N×*Ñ*ô		
ð 	�‰�cÔà
�‰Ø�H‰H×!Ñ!Ü×&Ñ&×+Ñ+Ü×*Ñ*×<Ñ<óô	
ð 	�‰�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ØˆB�L‰L‹N€Eòò:ò"
ò'ò+,ó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ØˆB�L‰L‹N�Er   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°"«Ñ %Ð Ð%Ù@EÀbÈ"ÃÖ*N¸1©8°A­;Ò*NÑ 'Ð Ð'÷x,ñ x,ôv�+ô ô�+õ ùòI +Os   ÁB