ó
    &ÝNjT  ã                   óà   • S SK r S SKrS SKJr  S SKJrJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJr  \" SS	5      u  rr\" SS	5       V s/ s H  n \" U 5      PM     sn u  rr " S
 S5      rgs  sn f )é    N)ÚUnsupportedAlgorithm)Úconstant_timeÚserialization)ÚX25519PrivateKeyÚX25519PublicKey)ÚMessage)Úbyte_chr)ÚSSHExceptioné   é    c                   ó`   • \ rS rSr\R
                  rS r\S 5       r	S r
S rS rS rS rS	rg
)ÚKexCurve25519é   c                 ó   • Xl         S U l        g ©N)Ú	transportÚkey)Úselfr   s     ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/paramiko/kex_curve25519.pyÚ__init__ÚKexCurve25519.__init__   s   € Ø"ŒØˆ�ó    c                 óP   •  [         R                  " 5         g! [         a     gf = f)NTF)r   Úgenerater   )Úclss    r   Úis_availableÚKexCurve25519.is_available   s,   € ð	Ü×%Ò%Ô'ð øô $ó 	Ùð	ús   ‚ ˜
%¤%c                 óŠ   • U R                   R                  U5      n[        R                  " US5      (       a  [	        S5      eU$ )Ns                                    z.peer's curve25519 public value has wrong order)r   Úexchanger   Úbytes_eqr
   )r   Úpeer_keyÚsecrets      r   Ú_perform_exchangeÚKexCurve25519._perform_exchange$   s@   € Ø—‘×"Ñ" 8Ó,ˆÜ×!Ò! &¨,×7Ñ7ÜØ@óð ð ˆr   c                 ó2  • [         R                  " 5       U l        U R                  R                  (       a   U R                  R                  [        5        g [        5       nUR                  [        5        UR                  U R                  R                  5       R                  [        R                  R                  [        R                   R                  5      5        U R                  R#                  U5        U R                  R                  [$        5        g 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_kexÚKexCurve25519.start_kex,   s´   € Ü#×,Ò,Ó.ˆŒØ�>‰>×%×%Ø�N‰N×)Ñ)Ô*;Ô<Øä‹IˆØ	�
‰
Ô%Ô&Ø	�‰Ø�H‰H×ÑÓ!×.Ñ.Ü×&Ñ&×*Ñ*¬M×,FÑ,F×,JÑ,Jóô	
ð
 	�‰×$Ñ$ QÔ'Ø�‰×%Ñ%Ô&8Õ9r   c                 ó  • U R                   R                  (       a  U[        :X  a  U R                  U5      $ U R                   R                  (       d  U[        :X  a  U R                  U5      $ [        SR                  U5      5      e)Nz.KexCurve25519 asked to handle packet type {:d})r   r&   r(   Ú_parse_kexecdh_initr2   Ú_parse_kexecdh_replyr
   Úformat)r   Úptyper3   s      r   Ú
parse_nextÚKexCurve25519.parse_next<   si   € Ø�>‰>×%×%¨5Ô4EÓ+EØ×+Ñ+¨AÓ.Ð.Ø—‘×+×+°Ô:LÓ1LØ×,Ñ,¨QÓ/Ð/ÜØ<×CÑCÀEÓJó
ð 	
r   c                 ó2  • UR                  5       n[        R                  " U5      nU R                  U5      n[	        [
        R                  " U5      S5      n[        5       nUR                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  5        U R                  R                  5       R                  5       nU R                   R#                  5       R%                  [&        R(                  R*                  [&        R,                  R*                  5      nUR/                  U5        UR/                  U5        UR/                  U5        UR1                  U5        U R3                  UR                  5       5      R5                  5       nU R                  R7                  XH5        U R                  R                  5       R9                  X€R                  R:                  5      n	[        5       nUR=                  [>        5        UR/                  U5        UR/                  U5        UR/                  U	5        U R                  RA                  U5        U R                  RC                  5         g ©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/   r0   r+   Ú	add_mpintÚ	hash_algoÚdigestÚ_set_K_HÚsign_ssh_dataÚhost_key_typer)   Úc_MSG_KEXECDH_REPLYr1   Ú_activate_outbound)
r   r3   Úpeer_key_bytesr!   ÚKÚhmÚserver_key_bytesÚexchange_key_bytesÚHÚsigs
             r   r7   Ú!KexCurve25519._parse_kexecdh_initE   sÎ  € ØŸ™›ˆÜ"×4Ò4°^ÓDˆØ×"Ñ" 8Ó,ˆÜ”× Ò  Ó# RÓ(ˆä‹YˆØ
�‰Ø�N‰N×)Ñ)Ø�N‰N×(Ñ(Ø�N‰N×*Ñ*Ø�N‰N×)Ñ)ô		
ð  Ÿ>™>×8Ñ8Ó:×BÑBÓDÐØ!ŸX™X×0Ñ0Ó2×?Ñ?Ü×"Ñ"×&Ñ&¬×(BÑ(B×(FÑ(Fó
Ðð 	�‰Ð&Ô'Ø
�‰�nÔ%Ø
�‰Ð(Ô)Ø
�‰�QŒØ�N‰N˜2Ÿ:™:›<Ó(×/Ñ/Ó1ˆØ�‰×Ñ Ô%Ø�n‰n×+Ñ+Ó-×;Ñ;Ø�~‰~×+Ñ+ó
ˆô ‹IˆØ	�
‰
Ô&Ô'Ø	�‰Ð%Ô&Ø	�‰Ð'Ô(Ø	�‰�SÔØ�‰×$Ñ$ QÔ'Ø�‰×)Ñ)Õ+r   c                 óü  • UR                  5       nUR                  5       nUR                  5       n[        R                  " U5      nU R	                  U5      n[        [        R                  " U5      S5      n[        5       nUR                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  5        UR                  U5        UR                  U R                   R#                  5       R%                  [&        R(                  R*                  [&        R,                  R*                  5      5        UR                  U5        UR/                  U5        U R                  R1                  X`R3                  UR5                  5       5      R7                  5       5        U R                  R9                  X$5        U R                  R;                  5         g r>   )r@   Ú
get_binaryr   rA   r#   rB   rC   rD   r   rE   r   rG   rF   rI   rH   r+   r   r,   r-   r   r.   r/   r0   rL   rO   rM   rK   rN   Ú_verify_keyrS   )r   r3   Úpeer_host_key_bytesrT   rZ   r!   rU   rV   s           r   r8   Ú"KexCurve25519._parse_kexecdh_replyh   s[  € ØŸl™l›nÐØŸ™›ˆØ�l‰l‹nˆä"×4Ò4°^ÓDˆà×"Ñ" 8Ó,ˆÜ”× Ò  Ó# RÓ(ˆä‹YˆØ
�‰Ø�N‰N×(Ñ(Ø�N‰N×)Ñ)Ø�N‰N×)Ñ)Ø�N‰N×*Ñ*ô		
ð 	�‰Ð)Ô*Ø
�‰Ø�H‰H×ÑÓ!×.Ñ.Ü×&Ñ&×*Ñ*¬M×,FÑ,F×,JÑ,Jóô	
ð
 	�‰�nÔ%Ø
�‰�QŒØ�‰×Ñ §>¡>°"·*±*³,Ó#?×#FÑ#FÓ#HÔIØ�‰×"Ñ"Ð#6Ô<Ø�‰×)Ñ)Õ+r   )r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚhashlibÚsha256rM   r   Úclassmethodr   r#   r4   r;   r7   r8   Ú__static_attributes__© r   r   r   r      s>   † Ø—‘€Iòð ñó ðòò:ò 
ò!,õF,r   r   )rC   re   Úcryptography.exceptionsr   Úcryptography.hazmat.primitivesr   r   Ú0cryptography.hazmat.primitives.asymmetric.x25519r   r   Úparamiko.messager   Úparamiko.commonr	   Úparamiko.ssh_exceptionr
   Úranger(   r2   r*   rR   r   )Úcs   0r   Ú<module>rr      sl   ðÛ Û å 8ß G÷õ
 %Ý $Ý /ñ ).¨b°"«Ñ %Ð Ð%Ù@EÀbÈ"ÄÓ*NÂ¸1©8°A®;ÁÑ*NÑ 'Ð Ð'÷o,ò o,ùò +Os   ÁA+