ó
    &ÝNj¿  ã                   óú   • S r SSKrSSKJr  SSKJr  SSKJrJrJ	r	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
5      \	S-  -   r\
S-  r " S S5      rgs  sn f )z�
Standard SSH key exchange ("kex" if you wanna sound cool).  Diffie-Hellman of
1024 bit key halves, using a known "p" prime and "g" generator.
é    N)Úsha256)Úutil)Úbyte_chrÚ	byte_maskÚmax_byteÚ	zero_byte)ÚMessage)ÚSSHExceptioné   é    é   é   é   c                   óH   • \ rS rSrSrSrSr\rS r	S r
S rS rS	 rS
 rSrg)ÚKexGroup14SHA256é(   l‰   ÿÿÿÿ�&•U¢G9
tcb0]Q\-¥:¾$•90.`U´_¼b;YS7x]EkŠ`:xds€!,w<Gï8¶qbdR_ÊØhÅÀd«d©ÃY6K–pRT{ÜUÄj¼K­#¹Gt|õL¤ê‹4šS«8Ø ÒFYpw,(.> Â=¶H³G2C’düc_Ÿ.K?&jÚ_†c½}­z[\Vµ_1M.D‰^±/1v5I	ŽjÖV&|ÓŠ/òmVÀlRÓ<6#å{n4ó(EY91ÇTï:Ìg8	H	ÍAp¢cb4BÑBˆj~Hüÿÿÿÿ é   zdiffie-hellman-group14-sha256c                 ó:   • Xl         SU l        SU l        SU l        g )Nr   )Ú	transportÚxÚeÚf)Úselfr   s     ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/paramiko/kex_group14.pyÚ__init__ÚKexGroup14SHA256.__init__0   s   € Ø"ŒØˆŒØˆŒØˆ�ó    c                 óB  • U R                  5         U R                  R                  (       aP  [        U R                  U R
                  U R                  5      U l        U R                  R                  [        5        g [        U R                  U R
                  U R                  5      U l
        [        5       nUR                  [        5        UR                  U R                  5        U R                  R                  U5        U R                  R                  [         5        g )N)Ú_generate_xr   Úserver_modeÚpowÚGr   ÚPr   Ú_expect_packetÚ_MSG_KEXDH_INITr   r	   Úadd_byteÚc_MSG_KEXDH_INITÚ	add_mpintÚ_send_messageÚ_MSG_KEXDH_REPLY)r   Úms     r   Ú	start_kexÚKexGroup14SHA256.start_kex6   s±   € Ø×ÑÔØ�>‰>×%×%ä˜Ÿ™ §¡¨¯©Ó0ˆDŒFØ�N‰N×)Ñ)¬/Ô:Øä�T—V‘V˜TŸV™V T§V¡VÓ,ˆŒÜ‹IˆØ	�
‰
Ô#Ô$Ø	�‰�D—F‘FÔØ�‰×$Ñ$ QÔ'Ø�‰×%Ñ%Ô&6Õ7r   c                 ó  • U R                   R                  (       a  U[        :X  a  U R                  U5      $ U R                   R                  (       d  U[        :X  a  U R                  U5      $ Sn[        UR                  U5      5      e)Nz1KexGroup14SHA256 asked to handle packet type {:d})r   r    r%   Ú_parse_kexdh_initr*   Ú_parse_kexdh_replyr
   Úformat)r   Úptyper+   Úmsgs       r   Ú
parse_nextÚKexGroup14SHA256.parse_nextE   sf   € Ø�>‰>×%×%¨5´OÓ+CØ×)Ñ)¨!Ó,Ð,Ø—‘×+×+°Ô:JÓ1JØ×*Ñ*¨1Ó-Ð-ØAˆÜ˜3Ÿ:™: eÓ,Ó-Ð-r   c                 óÌ   •  [         R                  " S5      n[        US   S5      USS  -   nUS S [        :w  a  US S [        :w  a  OMH  [
        R                  " U5      U l        g )Né   é€   r   r   r   )ÚosÚurandomr   Úb7fffffffffffffffÚb0000000000000000r   Úinflate_longr   )r   Úx_bytess     r   r   ÚKexGroup14SHA256._generate_xO   si   € ð Ü—j’j “oˆGÜ ¨¡
¨DÓ1°G¸A¸B°KÑ?ˆGà˜˜�Ô0Ó0Ø˜B˜Q�KÔ#4Ó4àñ ô ×"Ò" 7Ó+ˆ�r   c                 ó¶  • UR                  5       nUR                  5       U l        U R                  S:  d  U R                  U R                  S-
  :”  a  [	        S5      eUR                  5       n[        U R                  U R                  U R                  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"                  5        UR!                  U R                  5        UR!                  U5        U R                  R%                  X@R'                  UR)                  5       5      R+                  5       5        U R                  R-                  X#5        U R                  R/                  5         g )Nr7   zServer kex "f" is out of range)Ú
get_stringÚ	get_mpintr   r#   r
   Ú
get_binaryr!   r   r	   Úaddr   Úlocal_versionÚremote_versionÚlocal_kex_initÚremote_kex_initÚ
add_stringr(   r   Ú_set_K_HÚ	hash_algoÚasbytesÚdigestÚ_verify_keyÚ_activate_outbound)r   r+   Úhost_keyÚsigÚKÚhms         r   r0   Ú#KexGroup14SHA256._parse_kexdh_reply`   s7  € à—<‘<“>ˆØ—‘“ˆŒØ�F‰F�Q‹J˜DŸF™F T§V¡V¨a¡ZÓ/ÜÐ?Ó@Ð@Ø�l‰l‹nˆÜ�—‘˜Ÿ™ §¡Ó'ˆô ‹YˆØ
�‰Ø�N‰N×(Ñ(Ø�N‰N×)Ñ)Ø�N‰N×)Ñ)Ø�N‰N×*Ñ*ô		
ð 	�‰�hÔØ
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�QŒØ�‰×Ñ §>¡>°"·*±*³,Ó#?×#FÑ#FÓ#HÔIØ�‰×"Ñ" 8Ô1Ø�‰×)Ñ)Õ+r   c                 óü  • UR                  5       U l        U R                  S:  d  U R                  U R                  S-
  :”  a  [        S5      e[	        U R                  U R
                  U R                  5      nU R                  R                  5       R                  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                  5        UR!                  U R"                  5        UR!                  U5        U R%                  UR                  5       5      R'                  5       nU R                  R)                  X%5        U R                  R                  5       R+                  XPR                  R,                  5      n[        5       nUR/                  [0        5        UR                  U5        UR!                  U R"                  5        UR                  U5        U R                  R3                  U5        U R                  R5                  5         g )Nr7   zClient kex "e" is out of range)rB   r   r#   r
   r!   r   r   Úget_server_keyrL   r	   rD   rF   rE   rH   rG   rI   r(   r   rK   rM   rJ   Úsign_ssh_dataÚhost_key_typer&   Úc_MSG_KEXDH_REPLYr)   rO   )r   r+   rR   ÚkeyrS   ÚHrQ   s          r   r/   Ú"KexGroup14SHA256._parse_kexdh_inity   s©  € à—‘“ˆŒØ�F‰F�Q‹J˜DŸF™F T§V¡V¨a¡ZÓ/ÜÐ?Ó@Ð@Ü�—‘˜Ÿ™ §¡Ó'ˆØ�n‰n×+Ñ+Ó-×5Ñ5Ó7ˆô ‹YˆØ
�‰Ø�N‰N×)Ñ)Ø�N‰N×(Ñ(Ø�N‰N×*Ñ*Ø�N‰N×)Ñ)ô		
ð 	�‰�cÔØ
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�QŒØ�N‰N˜2Ÿ:™:›<Ó(×/Ñ/Ó1ˆØ�‰×Ñ Ô%à�n‰n×+Ñ+Ó-×;Ñ;Ø�~‰~×+Ñ+ó
ˆô ‹IˆØ	�
‰
Ô$Ô%Ø	�‰�SÔØ	�‰�D—F‘FÔØ	�‰�SÔØ�‰×$Ñ$ QÔ'Ø�‰×)Ñ)Õ+r   )r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r#   r"   Únamer   rK   r   r,   r4   r   r0   r/   Ú__static_attributes__© r   r   r   r   (   s7   † ð 	K€AØ	€Aà*€DØ€Iòò8ò.ò,ò",õ2!,r   r   )Ú__doc__r9   Úhashlibr   Úparamikor   Úparamiko.commonr   r   r   r   Úparamiko.messager	   Úparamiko.ssh_exceptionr
   Úranger%   r*   r'   rY   r;   r<   r   )Úcs   0r   Ú<module>rl      s†   ðñ(ó
 
Ý å ß DÓ DÝ $Ý /á$)¨"¨b£MÑ !€Ð!Ù<AÀ"Àb¼MÓ&JºM°q¡x°¦{¹MÑ&JÑ #Ð Ð#á˜T“N X°¡\Ñ1Ð Ø ‘MÐ ÷r,ò r,ùò 'Ks   ÁA8