+
    šh©jP(  ã                   óú   € R t ^ RIt^ RIHtHt ^ RIHt ^ RIHtH	t	H
t
Ht ^ RIHt ^ RIHt ]! ^^#4      w  ttttt]! ^^#4       U u. uF  p ]	! V 4      NK  	  up w  ttttt ! R R4      t ! R	 R
]4      tR# u up i )zÒ
Variant on `KexGroup1 <paramiko.kex_group1.KexGroup1>` where the prime "p" and
generator "g" are provided by the server.  A bit more work is required on the
client side, and a **lot** more on the server side.
N)Úsha1Úsha256)Úutil)ÚDEBUGÚbyte_chrÚbyte_ordÚ	byte_mask)ÚMessage)ÚSSHExceptionc                   ón   a € ] tR t^3t o RtRtRtRt]t	R t
RR ltR tR tR	 tR
 tR tR tR tRtV tR# )ÚKexGexz"diffie-hellman-group-exchange-sha1é   é    i   c                ót   € Wn         R V n        R V n        R V n        R V n        R V n        R V n        RV n        R # )NF)Ú	transportÚpÚqÚgÚxÚeÚfÚ	old_style)Úselfr   s   &&ÚK/var/www/html/bestweb/venv/lib/python3.14/site-packages/paramiko/kex_gex.pyÚ__init__ÚKexGex.__init__;   s8   € Ø"ŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆŽó    c                ó^  € V P                   P                  '       d'   V P                   P                  \        \        4       R # \        4       pV'       d9   VP                  \        4       VP                  V P                  4       RV n
        MfVP                  \        4       VP                  V P                  4       VP                  V P                  4       VP                  V P                  4       V P                   P                  V4       V P                   P                  \        4       R # )NT)r   Úserver_modeÚ_expect_packetÚ_MSG_KEXDH_GEX_REQUESTÚ_MSG_KEXDH_GEX_REQUEST_OLDr	   Úadd_byteÚc_MSG_KEXDH_GEX_REQUEST_OLDÚadd_intÚpreferred_bitsr   Úc_MSG_KEXDH_GEX_REQUESTÚmin_bitsÚmax_bitsÚ_send_messageÚ_MSG_KEXDH_GEX_GROUP)r   Ú_test_old_styleÚms   && r   Ú	start_kexÚKexGex.start_kexE   sÅ   € Ø�>‰>×%×%Ð%Ø�N‰N×)Ñ)Ü&Ô(Bôñ ô ‹Iˆßà�J‰JÔ2Ô3Ø�I‰I�d×)Ñ)Ô*Ø!ˆD�Nà�J‰JÔ.Ô/Ø�I‰I�d—m‘mÔ$Ø�I‰I�d×)Ñ)Ô*Ø�I‰I�d—m‘mÔ$Ø�‰×$Ñ$ QÔ'Ø�‰×%Ñ%Ô&:Ö;r   c                óh  € V\         8X  d   V P                  V4      # V\        8X  d   V P                  V4      # V\        8X  d   V P                  V4      # V\        8X  d   V P                  V4      # V\        8X  d   V P                  V4      # R p\        VP                  V P                  V4      4      h)z*KexGex {} asked to handle packet type {:d})r    Ú_parse_kexdh_gex_requestr*   Ú_parse_kexdh_gex_groupÚ_MSG_KEXDH_GEX_INITÚ_parse_kexdh_gex_initÚ_MSG_KEXDH_GEX_REPLYÚ_parse_kexdh_gex_replyr!   Ú_parse_kexdh_gex_request_oldr
   ÚformatÚname)r   Úptyper,   Úmsgs   &&& r   Ú
parse_nextÚKexGex.parse_next\   s£   € ØÔ*Ô*Ø×0Ñ0°Ó3Ð3ØÔ*Ô*Ø×.Ñ.¨qÓ1Ð1ØÔ)Ô)Ø×-Ñ-¨aÓ0Ð0ØÔ*Ô*Ø×.Ñ.¨qÓ1Ð1ØÔ0Ô0Ø×4Ñ4°QÓ7Ð7Ø:ˆÜ˜3Ÿ:™: d§i¡i°Ó7Ó8Ð8r   c                óº  € V P                   ^,
          ^,          p\        P                  ! V^ 4      p\        V^ ,          4      p\	        V4      p^ÿpV^€,          '       g   V^,          pV^,          pK#   \
        P                  ! V4      p\        V^ ,          V4      VR,          ,           p\        P                  ! V^4      pV^8”  g   KX  Wq8  g   K`   Ypn	        R# )é   :r>   NNN)
r   r   Údeflate_longr   ÚlenÚosÚurandomr   Úinflate_longr   )r   r   ÚqnormÚqhbyteÚ
byte_countÚqmaskÚx_bytesr   s   &       r   Ú_generate_xÚKexGex._generate_xl   s¬   € à�V‰V�a�Z˜AÕˆÜ×!Ò! ! QÓ'ˆÜ˜% �(Ó#ˆÜ˜“Zˆ
ØˆØ˜D—=”=Ø�q�LˆFØ�a�KŠEØÜ—j’j Ó,ˆGÜ ¨¥
¨EÓ2°W¸Rµ[Õ@ˆGÜ×!Ò! '¨1Ó-ˆAØ�A–˜AžEØØŽr   c                ó(  € VP                  4       pVP                  4       pVP                  4       pW0P                  8”  d   V P                  pW0P                  8  d   V P                  pW#8”  d   TpWC8  d   TpW n        W0n        W@n        V P                  P                  4       pVf   \        R4      hV P                  P                  \        RP                  W#V4      4       VP                  W#V4      w  V n        V n        \        4       pVP                  \        4       VP!                  V P                  4       VP!                  V P                  4       V P                  P#                  V4       V P                  P%                  \&        4       R # )Nú-Can't do server-side gex with no modulus packzPicking p ({} <= {} <= {} bits))Úget_intr(   r'   r%   r   Ú_get_modulus_packr
   Ú_logr   r7   Úget_modulusr   r   r	   r"   Úc_MSG_KEXDH_GEX_GROUPÚ	add_mpintr)   r   r2   )r   r,   ÚminbitsÚpreferredbitsÚmaxbitsÚpacks   &&    r   r0   ÚKexGex._parse_kexdh_gex_request~   s1  € Ø—)‘)“+ˆØŸ	™	›ˆØ—)‘)“+ˆàŸ=™=Ô(Ø ŸM™MˆMØŸ=™=Ô(Ø ŸM™MˆMð Ô"Ø#ˆGØÔ"Ø#ˆGàŒØ+ÔØŒà�~‰~×/Ñ/Ó1ˆØŠ<ÜÐNÓOÐOØ�‰×ÑÜØ-×4Ñ4Ø¨óô	
ð ×)Ñ)¨'À'ÓJ‰ˆŒ�”Ü‹IˆØ	�
‰
Ô(Ô)Ø	�‰�D—F‘FÔØ	�‰�D—F‘FÔØ�‰×$Ñ$ QÔ'Ø�‰×%Ñ%Ô&9Ö:r   c                óL  € VP                  4       V n        V P                  V P                  8”  d   V P                  V n        V P                  V P                  8  d   V P                  V n        V P                  P                  4       pVf   \        R4      hV P                  P                  \        RP                  V P                  4      4       VP                  V P                  V P                  V P                  4      w  V n        V n        \        4       pVP                  \        4       VP!                  V P                  4       VP!                  V P                  4       V P                  P#                  V4       V P                  P%                  \&        4       RV n        R # )NrL   zPicking p (~ {} bits)T)rM   r%   r(   r'   r   rN   r
   rO   r   r7   rP   r   r   r	   r"   rQ   rR   r)   r   r2   r   )r   r,   rV   s   && r   r6   Ú#KexGex._parse_kexdh_gex_request_old¤   s+  € ð  Ÿi™i›kˆÔà×Ñ §¡Ô.Ø"&§-¡-ˆDÔØ×Ñ §¡Ô.Ø"&§-¡-ˆDÔà�~‰~×/Ñ/Ó1ˆØŠ<ÜÐNÓOÐOØ�‰×ÑÜÐ*×1Ñ1°$×2EÑ2EÓFô	
ð ×)Ñ)Ø�M‰M˜4×.Ñ.°·±ó
‰ˆŒ�”ô ‹IˆØ	�
‰
Ô(Ô)Ø	�‰�D—F‘FÔØ	�‰�D—F‘FÔØ�‰×$Ñ$ QÔ'Ø�‰×%Ñ%Ô&9Ô:ØˆŽr   c                ó°  € VP                  4       V n        VP                  4       V n        \        P                  ! V P                  4      pVR 8  g   VR8”  d   \        RP                  V4      4      hV P                  P                  \        RP                  V4      4       V P                  4        \        V P                  V P                  V P                  4      V n        \        4       pVP                  \         4       VP#                  V P                  4       V P                  P%                  V4       V P                  P'                  \(        4       R# )r   r   z<Server-generated gex p (don't ask) is out of range ({} bits)zGot server p ({} bits)N)Ú	get_mpintr   r   r   Ú
bit_lengthr
   r7   r   rO   r   rI   Úpowr   r   r	   r"   Úc_MSG_KEXDH_GEX_INITrR   r)   r   r4   )r   r,   Úbitlens   && r   r1   ÚKexGex._parse_kexdh_gex_group¿   sé   € Ø—‘“ˆŒØ—‘“ˆŒä—’ §¡Ó(ˆØ�TŒM˜v¨œ}Üðß"™F 6›Nóð ð 	�‰×ÑœEÐ#;×#BÑ#BÀ6Ó#JÔKØ×ÑÔä�T—V‘V˜TŸV™V T§V¡VÓ,ˆŒÜ‹IˆØ	�
‰
Ô'Ô(Ø	�‰�D—F‘FÔØ�‰×$Ñ$ QÔ'Ø�‰×%Ñ%Ô&:Ö;r   c                óÀ  € VP                  4       V n        V P                  ^8  g#   V P                  V P                  ^,
          8”  d   \        R4      hV P	                  4        \        V P                  V P                  V P                  4      V n        \        V P                  V P                  V P                  4      pV P                  P                  4       P                  4       p\        4       pVP                  V P                  P                  V P                  P                  V P                  P                   V P                  P"                  V4       V P$                  '       g   VP'                  V P(                  4       VP'                  V P*                  4       V P$                  '       g   VP'                  V P,                  4       VP/                  V P                  4       VP/                  V P                  4       VP/                  V P                  4       VP/                  V P                  4       VP/                  V4       V P1                  VP                  4       4      P3                  4       pV P                  P5                  W%4       V P                  P                  4       P7                  WPP                  P8                  4      p\        4       pVP;                  \<        4       VP?                  V4       VP/                  V P                  4       VP?                  V4       V P                  PA                  V4       V P                  PC                  4        R# )r>   zClient kex "e" is out of rangeN)"r[   r   r   r
   rI   r]   r   r   r   r   Úget_server_keyÚasbytesr	   ÚaddÚremote_versionÚlocal_versionÚremote_kex_initÚlocal_kex_initr   r$   r'   r%   r(   rR   Ú	hash_algoÚdigestÚ_set_K_HÚsign_ssh_dataÚhost_key_typer"   Úc_MSG_KEXDH_GEX_REPLYÚ
add_stringr)   Ú_activate_outbound)r   r,   ÚKÚkeyÚhmÚHÚsigs   &&     r   r3   ÚKexGex._parse_kexdh_gex_initÓ   s,  € Ø—‘“ˆŒØ�F‰F�QŒJ˜DŸF™F T§V¡V¨a¥ZÔ/ÜÐ?Ó@Ð@Ø×ÑÔÜ�T—V‘V˜TŸV™V T§V¡VÓ,ˆŒÜ�—‘˜Ÿ™ §¡Ó'ˆØ�n‰n×+Ñ+Ó-×5Ñ5Ó7ˆô ‹YˆØ
�‰Ø�N‰N×)Ñ)Ø�N‰N×(Ñ(Ø�N‰N×*Ñ*Ø�N‰N×)Ñ)Øô	
ð �~�~ˆ~Ø�J‰J�t—}‘}Ô%Ø
�
‰
�4×&Ñ&Ô'Ø�~�~ˆ~Ø�J‰J�t—}‘}Ô%Ø
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�QŒØ�N‰N˜2Ÿ:™:›<Ó(×/Ñ/Ó1ˆØ�‰×Ñ Ô%à�n‰n×+Ñ+Ó-×;Ñ;Ø�~‰~×+Ñ+ó
ˆô ‹IˆØ	�
‰
Ô(Ô)Ø	�‰�SÔØ	�‰�D—F‘FÔØ	�‰�SÔØ�‰×$Ñ$ QÔ'Ø�‰×)Ñ)Ö+r   c                óú  € VP                  4       pVP                  4       V n        VP                  4       pV P                  ^8  g#   V P                  V P                  ^,
          8”  d   \	        R4      h\        V P                  V P                  V P                  4      p\        4       pVP                  V P                  P                  V P                  P                  V P                  P                  V P                  P                  V4       V P                  '       g   VP                  V P                   4       VP                  V P"                  4       V P                  '       g   VP                  V P$                  4       VP'                  V P                  4       VP'                  V P(                  4       VP'                  V P*                  4       VP'                  V P                  4       VP'                  V4       V P                  P-                  W@P/                  VP1                  4       4      P3                  4       4       V P                  P5                  W#4       V P                  P7                  4        R# )r>   zServer kex "f" is out of rangeN)Ú
get_stringr[   r   r   r
   r]   r   r	   rd   r   rf   re   rh   rg   r   r$   r'   r%   r(   rR   r   r   rk   ri   rc   rj   Ú_verify_keyrp   )r   r,   Úhost_keyru   rq   rs   s   &&    r   r5   ÚKexGex._parse_kexdh_gex_replyþ   s’  € Ø—<‘<“>ˆØ—‘“ˆŒØ�l‰l‹nˆØ�F‰F�QŒJ˜DŸF™F T§V¡V¨a¥ZÔ/ÜÐ?Ó@Ð@Ü�—‘˜Ÿ™ §¡Ó'ˆô ‹YˆØ
�‰Ø�N‰N×(Ñ(Ø�N‰N×)Ñ)Ø�N‰N×)Ñ)Ø�N‰N×*Ñ*Øô	
ð �~�~ˆ~Ø�J‰J�t—}‘}Ô%Ø
�
‰
�4×&Ñ&Ô'Ø�~�~ˆ~Ø�J‰J�t—}‘}Ô%Ø
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�QŒØ�‰×Ñ §>¡>°"·*±*³,Ó#?×#FÑ#FÓ#HÔIØ�‰×"Ñ" 8Ô1Ø�‰×)Ñ)Ö+r   )r   r   r   r(   r'   r   r   r%   r   r   r   N)F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r8   r'   r(   r%   r   ri   r   r-   r;   rI   r0   r6   r1   r3   r5   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r   3   sR   ø‡ € à/€DØ€HØ€HØ€NØ€Iòô<ò.9ò ò$$;òLò6<ò(),÷V,ð ,r   r   c                   ó   € ] tR tRtRt]tRtR# )ÚKexGexSHA256i  z$diffie-hellman-group-exchange-sha256© N)r|   r}   r~   r   r8   r   ri   r€   r…   r   r   r„   r„     s   † Ø1€DØ„Ir   r„   )Ú__doc__rA   Úhashlibr   r   Úparamikor   Úparamiko.commonr   r   r   r   Úparamiko.messager	   Úparamiko.ssh_exceptionr
   Úranger!   r*   r2   r4   r    r#   rQ   r^   rn   r&   r   r„   )Úcs   0r   Ú<module>rŽ      s‘   ðñ&ó 
ß  å ß @Ó @Ý $Ý /ñ 
ˆ"ˆbƒMñØØØØØñ    Bœ-Ó(™-�Q�Xˆa†[™-Ñ(ñØØØØØ÷h,ñ h,ôV�6ö ùò] )s   ÁA8