Ë
    zñ�jP(  ã                   óô   — d Z ddlZddlmZmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZ ddlmZ  edd	«      \  ZZZZZ edd	«      D � cg c]
  }  e	| «      ‘Œ c} \  ZZZZZ G d
„ d«      Z G d„ de«      Zyc c} w )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)ÚSSHExceptioné   é#   c                   óX   — e Zd ZdZdZdZdZeZd„ Z	dd„Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚKexGexz"diffie-hellman-group-exchange-sha1é   é    i   c                 ót   — || _         d | _        d | _        d | _        d | _        d | _        d | _        d| _        y )NF)Ú	transportÚpÚqÚgÚxÚeÚfÚ	old_style)Úselfr   s     úQ/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/paramiko/kex_gex.pyÚ__init__zKexGex.__init__;   s:   € Ø"ˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆ�ó    c                 óB  — | j                   j                  r%| j                   j                  t        t        «       y t        «       }|r8|j                  t        «       |j                  | j                  «       d| _
        nf|j                  t        «       |j                  | j                  «       |j                  | j                  «       |j                  | j                  «       | j                   j                  |«       | j                   j                  t        «       y )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_kexz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                 óT  — |t         k(  r| j                  |«      S |t        k(  r| j                  |«      S |t        k(  r| j                  |«      S |t        k(  r| j                  |«      S |t        k(  r| j                  |«      S d}t        |j                  | j                  |«      «      ‚)Nz*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_nextz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                 ó\  — | j                   dz
  dz  }t        j                  |d«      }t        |d   «      }t	        |«      }d}|dz  s|dz  }|dz  }|dz  sŒ	 t        j                  |«      }t        |d   |«      |dd  z   }t        j                  |d«      }|dkD  r||k  r		 || _	        y ŒT)Né   é   r   éÿ   é€   )
r   r   Údeflate_longr   ÚlenÚosÚurandomr	   Úinflate_longr   )r   r   ÚqnormÚqhbyteÚ
byte_countÚqmaskÚx_bytesr   s           r   Ú_generate_xzKexGex._generate_xl   sÀ   € à�V‰V�a‰Z˜AÑˆÜ×!Ñ! ! QÓ'ˆÜ˜% ™(Ó#ˆÜ˜“Zˆ
ØˆØ˜D’=Ø�q‰LˆFØ�a‰KˆEð ˜D“=ð Ü—j‘j Ó,ˆGÜ ¨¡
¨EÓ2°W¸Q¸R°[Ñ@ˆGÜ×!Ñ! '¨1Ó-ˆAØ�A’˜A šEØØˆ�ð r   c                 ó$  — |j                  «       }|j                  «       }|j                  «       }|| j                  kD  r| j                  }|| j                  k  r| j                  }||kD  r|}||k  r|}|| _        || _        || _        | j                  j                  «       }|€t        d«      ‚| j                  j                  t        dj                  |||«      «       |j                  |||«      \  | _        | _        t        «       }|j                  t        «       |j!                  | j                  «       |j!                  | j                  «       | j                  j#                  |«       | j                  j%                  t&        «       y )Nú-Can't do server-side gex with no modulus packzPicking p ({} <= {} <= {} bits))Úget_intr*   r)   r'   r   Ú_get_modulus_packr   Ú_logr   r8   Úget_modulusr   r   r
   r$   Úc_MSG_KEXDH_GEX_GROUPÚ	add_mpintr+   r!   r3   )r   r.   ÚminbitsÚpreferredbitsÚmaxbitsÚpacks         r   r1   zKexGex._parse_kexdh_gex_request~   sC  € Ø—)‘)“+ˆØŸ	™	›ˆØ—)‘)“+ˆà˜4Ÿ=™=Ò(Ø ŸM™MˆMØ˜4Ÿ=™=Ò(Ø ŸM™MˆMð �]Ò"Ø#ˆGØ�]Ò"Ø#ˆGàˆŒØ+ˆÔØˆŒà�~‰~×/Ñ/Ó1ˆØˆ<ÜÐNÓOÐOØ�‰×ÑÜØ-×4Ñ4Ø˜¨óô	
ð ×)Ñ)¨'°=À'ÓJ‰ˆŒ�”Ü‹IˆØ	�
‰
Ô(Ô)Ø	�‰�D—F‘FÔØ	�‰�D—F‘FÔØ�‰×$Ñ$ QÔ'Ø�‰×%Ñ%Ô&9Õ:r   c                 ó>  — |j                  «       | _        | j                  | j                  kD  r| j                  | _        | j                  | j                  k  r| j                  | _        | j                  j                  «       }|€t        d«      ‚| j                  j                  t        dj                  | j                  «      «       |j                  | j                  | j                  | j                  «      \  | _        | _        t        «       }|j                  t        «       |j!                  | j                  «       |j!                  | j                  «       | j                  j#                  |«       | j                  j%                  t&        «       d| _        y )NrN   zPicking p (~ {} bits)T)rO   r'   r*   r)   r   rP   r   rQ   r   r8   rR   r   r   r
   r$   rS   rT   r+   r!   r3   r   )r   r.   rX   s      r   r7   z#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                 ó¤  — |j                  «       | _        |j                  «       | _        t        j                  | j                  «      }|dk  s|dkD  rt        dj                  |«      «      ‚| j                  j                  t        dj                  |«      «       | j                  «        t        | j                  | j                  | j                  «      | _        t        «       }|j                  t         «       |j#                  | j                  «       | j                  j%                  |«       | j                  j'                  t(        «       y )Nr   r   z<Server-generated gex p (don't ask) is out of range ({} bits)zGot server p ({} bits))Ú	get_mpintr   r   r   Ú
bit_lengthr   r8   r   rQ   r   rL   Úpowr   r   r
   r$   Úc_MSG_KEXDH_GEX_INITrT   r+   r!   r5   )r   r.   Úbitlens      r   r2   z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                 óš  — |j                  «       | _        | j                  dk  s| j                  | j                  dz
  kD  rt        d«      ‚| j	                  «        t        | j                  | j                  | j                  «      | _        t        | j                  | j                  | j                  «      }| j                  j                  «       j                  «       }t        «       }|j                  | j                  j                  | j                  j                  | j                  j                   | j                  j"                  |«       | j$                  s|j'                  | j(                  «       |j'                  | j*                  «       | j$                  s|j'                  | j,                  «       |j/                  | j                  «       |j/                  | j                  «       |j/                  | j                  «       |j/                  | j                  «       |j/                  |«       | j1                  |j                  «       «      j3                  «       }| j                  j5                  ||«       | j                  j                  «       j7                  || j                  j8                  «      }t        «       }|j;                  t<        «       |j?                  |«       |j/                  | j                  «       |j?                  |«       | j                  jA                  |«       | j                  jC                  «        y )Nr>   zClient kex "e" is out of range)"r[   r   r   r   rL   r]   r   r   r   r   Úget_server_keyÚasbytesr
   ÚaddÚremote_versionÚlocal_versionÚremote_kex_initÚlocal_kex_initr   r&   r)   r'   r*   rT   Ú	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   r4   z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ˆØ�‰×Ñ  1Ô%à�n‰n×+Ñ+Ó-×;Ñ;Øˆt�~‰~×+Ñ+ó
ˆô ‹IˆØ	�
‰
Ô(Ô)Ø	�‰�SÔØ	�‰�D—F‘FÔØ	�‰�SÔØ�‰×$Ñ$ QÔ'Ø�‰×)Ñ)Õ+r   c                 óÔ  — |j                  «       }|j                  «       | _        |j                  «       }| j                  dk  s| j                  | j                  dz
  kD  rt	        d«      ‚t        | j                  | j                  | j                  «      }t        «       }|j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  |«       | j                  s|j                  | j                   «       |j                  | j"                  «       | j                  s|j                  | j$                  «       |j'                  | j                  «       |j'                  | j(                  «       |j'                  | j*                  «       |j'                  | j                  «       |j'                  |«       | j                  j-                  || j/                  |j1                  «       «      j3                  «       «       | j                  j5                  ||«       | j                  j7                  «        y )Nr>   zServer kex "f" is out of range)Ú
get_stringr[   r   r   r   r]   r   r
   rc   r   re   rd   rg   rf   r   r&   r)   r'   r*   rT   r   r   rj   rh   rb   ri   Ú_verify_keyro   )r   r.   Úhost_keyrt   rp   rr   s         r   r6   z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ŒØ�‰×Ñ  4§>¡>°"·*±*³,Ó#?×#FÑ#FÓ#HÔIØ�‰×"Ñ" 8¨SÔ1Ø�‰×)Ñ)Õ+r   N)F)Ú__name__Ú
__module__Ú__qualname__r9   r)   r*   r'   r   rh   r   r/   r<   rL   r1   r7   r2   r4   r6   © r   r   r   r   3   sJ   „ à/€DØ€HØ€HØ€NØ€Iòó<ò.9ò ò$$;òLò6<ò(),óV,r   r   c                   ó   — e Zd ZdZeZy)ÚKexGexSHA256z$diffie-hellman-group-exchange-sha256N)ry   rz   r{   r9   r   rh   r|   r   r   r~   r~     s   „ Ø1€DØ�Ir   r~   )Ú__doc__rD   Úhashlibr   r   Úparamikor   Úparamiko.commonr   r   r   r	   Úparamiko.messager
   Úparamiko.ssh_exceptionr   Úranger#   r,   r3   r5   r"   r%   rS   r^   rm   r(   r   r~   )Úcs   0r   ú<module>r‡      s�   ðñ&ó 
ß  å ß @Ó @Ý $Ý /ñ 
ˆ"ˆbƒMñØØØØØñ    B›-Ö(�Q�Xˆa…[Ò(ñØØØØØ÷h,ñ h,ôV�6õ ùò] )s   ÁA5