HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib/python3.10/site-packages/asyncssh/__pycache__/kex_dh.cpython-310.pyc
o

�h��@sBdZddlmZmZmZmZmZddlmZm	Z	m
Z
mZmZddl
mZddlmZddlmZmZmZmZmZddlmZmZdd	lmZmZdd
lmZddlmZmZm Z ddl!m"Z"m#Z#m$Z$dd
l!m%Z%m&Z&ddl'm(Z(m)Z)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/er�ddl0m1Z1m2Z2ddl0m3Z3Gdd�de�Z4e	de4fZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHdZId ZJdZKd!ZLdZMd"ZNdZOd#ZPdZQd$ZRdZSd%ZTdeIeJfdeKeLfd&eMeNfd'eOePfd(eQeRfdeSeTffZUGd)d*�d*e�ZVGd+d,�d,eV�ZWGd-d.�d.eV�ZXGd/d0�d0eV�ZYGd1d2�d2eY�ZZGd3d4�d4eV�Z[Gd5d6�d6e[eW�Z\Gd7d8�d8e[eX�Z]Gd9d:�d:e[eY�Z^e�rge�rQed;eZed<efd=�ed>eZed<ed?fd=�ed@eZedAedBfd=�e�r�e�r�edCeZedDefd=�edEeZedDefd=�edFeYeefd=�edGeYeefd=�e dHe^eefd=�e�r�edIeYeefd=�e dJe^eefd=�dKdLed=fdBdMed=fd?dNed=fdOdNed=ffD]#\Z_Z`ZaZbedPe_eYeaee_feb�e dQe_dRe`e^eaee_feb��q�dNed=fdSedTfdUedTfdVedTfdWedTffD] \Z`ZaZbedXe`eXeadYeb�e`�cdZ��s e d[e`e]eadYeb��qd\eeKeLd=fd]eeMeNd=fd^eeOePd=fd_eeQeRd=fd`eeSeTd=fdaeeKeLd=fdbeeKeLdTfdceeMeNdTfddeeMeNdTfdeeeOePdTfdfeeOePdTfdgeeSeTdTfdheeKeLd=fdieeIeJdTffD]&\ZdZaZeZfZbedjedeWeaeeeffeb�ed�cdZ��s�e dQede\eaeeeffeb��qxdkS)lz>SSH Diffie-Hellman, ECDH, and Edwards DH key exchange handlers�)�sha1�sha224�sha256�sha384�sha512)�
TYPE_CHECKING�Callable�Mapping�Optional�cast)�Protocol�)�DEFAULT_LANG)�Curve25519DH�
Curve448DH�DH�ECDH�PQDH)�curve25519_available�curve448_available)�mlkem_available�sntrup_available)�GSSError)�Kex�register_kex_alg�register_gss_kex_alg)�HashType�KeyExchangeFailed�
ProtocolError)�get_symbol_names�run_in_executor)�Boolean�MPInt�String�UInt32�	SSHPacket)�
SigningKey�VerifyingKey)�
SSHConnection�SSHClientConnection)�SSHServerConnectionc@sBeZdZdZdefdd�Zdedefdd�Zdedefdd	�Zd
S)�DHKeyz3Protocol for performing Diffie-Hellman key exchange�returncC�dS)z)Return the public key to send to the peerN���selfr.r.�E/usr/local/CyberPanel/lib/python3.10/site-packages/asyncssh/kex_dh.py�
get_public0�zDHKey.get_public�peer_publiccCr-)z9Return the shared key from the peer's public key in bytesNr.�r0r4r.r.r1�get_shared_bytes3r3zDHKey.get_shared_bytescCr-)z0Return the shared key from the peer's public keyNr.r5r.r.r1�
get_shared6r3zDHKey.get_sharedN)	�__name__�
__module__�__qualname__�__doc__�bytesr2r6�intr7r.r.r.r1r+-s
r+.��� �!�"�(�)iii �lE����8�{3If?�E y�Z�3�V�58n�oP�e�?a-�
�tBL�
�y3W[�<�p�6m5��P��&a�F!�33*�w& �AR�M;L}.�c|&A�@�h\�&&#-D�v�d����l������&�U�G9
tcb0]Q\-�:�$�90.`U�_�b;YS7x]Ek�`:xds�!,w<G�8�qbdR_��h��d�d��Y6K�pRT{�U�j�K�#�Gt|�L���4�S�8� �FYpw,(.>�=�H�G2C�d�c_�.K?&j�_�c�}�z[\V�_1M.D�^�/1v5I	�j�V&|�
�/�mV�lR�<6#�{n4�(EY91�T�:�g8	H	�Ap�cb4B�B�j~H�����l������,Z'*HhAK!z�s�Z=f59�'��
ekF�p�-W�+aw�l�@�rC
�ds�0�!PLm �%�wi&�G;w+���G�	[]�/=&n�p�e�>�.�)WT�>Aa}vd:9>��B:#
AC��-�U*jrW�@>&��UU*�KTcVJ{�+�K1z�U�v�hv�O6t@�r�s�g.F� �pA��
]<L�J�j0k3i	� J5�]RA,��0�:�{HW�A_OIz�~�H�9�
�
$m�~G�b� \g9{(3(I�?,q� �i�tg"�}k8�[��7�uaZ{S�B�h{�fW�y�(mmjB?]�x%_Ma
L�!:Mg3T>�&@c1�R(�vL�. �|L����.
3&L#-�(������l������MrzM�MBr�}o�{c#Lu�S5�V>	i�\;�p_^w��#�y�(�!wF���dR6f�5NG�x�Uv�A�_�K|G���nFgD-E9�`mli�Q�`#N^
�I�L&[t{Bh�Cxm�p�9B���d"?8�-�CbV�S}$A\Q6]`�	�Xu�;u|H�+>$�)Cv3'�6E��_�/s�aDz�s�0%J�)2z��0�Qk}�c�aM>\�m�`�kUuE
o�1�gN&�c�j�*�3� 4��Z�X�"-Gr 
�c�0"]�\Z%u>Is0\`�4�<�;��7�]�k>
=`.:�d�C,�<�oq6�b���JX�E'@�+�)
C�6���T�\+UD�<1�-G9�t*�u�$?ji�+qXAR�Y�wX(\>B{6�3�2��|��$]K~&�Z��=�-z�\��5�1�.�	�1?/bvj��V�&�S
_r��@��Sy6Fe�n4s!(��9bG�otL�"8HM��"1c�4�Q��~�|����l�����O�9�G|J�V�h-ljy+a��G>��8�F�GF�<v�V�9UO
�c�oE=*�j�i.>�X:TJ�M�n+.��� �3�pH?�Z=2V%4Evu�bZX�ouxp�H�F�^��h�}�%>O�Icd T�0=�sUm���k�t:�E�P.�]����~J3�	@�M�k�QQ@f,a6~D�o�F]j�:�5�X�<}[�6�DZaO\^�A}�}�XW0�^�l.w0e�Ue|�7t{�y�K�m��,nj�&�xIS�l#�PM��M�B�>�o08�cFL�4'SjA�>i�v]7p�^w%lG{�-QCw�	z�Rlf.`kN�2�!1U�{��#�|�^	6o�F�DZErz��*l� �T�#�^F�a�&�t�B��x�|�)	r�$	-8�D?p~[[�b���$A�Ql]�n�u
Swu"|.�=V>HSC�3N@62�Y
t�D_s.-�D�8�Na%�@S2�8=a�k�U�d�M>��G� �U8u�
�7c(\�NL�w�U(gtAh81S��*E-�r* h�Da"�"�ZJu|I*s`\�*i?yEw2)&op�
�>=�.tp�fCXny�qlc�H$>!��Q�'�IWIS
�3m-a$�v�+��Uy1[Gr�*6x�I?�i4'Wq�A�
�`�XP\|�{lge%I�G%>$>]�~LT�?
G{{[�6�~/,k?c]=c?^b�j/U�-Mx�_�[),�Y1$�ylF�w�h�!P
%2sb�)�t�O)"p��7`E1�Di�U������l#�����=�f7�d`q�r"�z�|�R�q(0US�Y:"�U�H�~S
�W�8�v q5$�CI~<\No2
�gC�f�Ok:�W"ulP?�]2�f�(h��<�`]%@3�_,2�6��C�o-x�~�OPif
Otl=�:�7��A���h�%�z�>1D�<i
�:62�sh��@z5}b_R.DDd+$d��xK�N�K-�`K�B�v
�z�Z8G�j1#B:mR�]�vG|�~�0]�Q���1rgA�E�x[&�-�;8d�}K<�J+Bo�|�f�i�-�j�+�R3�>Ppq;�~G�%y�I�4sU�K9c:|��=T!�[�.|;�:��q�r�+\?xAZ3
l�H~}�=dVJhE��%�Z�~��x��Y��T#s��~K>�e�cd �5`z�U�^?7g��tH�.�.�d%cJ3�Jf<@w�P�k+Q�@�,*al~�b�v�]�NuY9j'�yy}�m�Za�\��}2�5X�`�`�.�0�3���=ot�X�(�l�H	Yn�AM`�I�U?lF��d5t��d}{�0pw�F�ji'�j�-}�4$8!v�7�>��.%�G�s[QC�	�I�l�.�k�eqC1�l�?G��	l�]�N�Z�r�A%Z*�RA#�AG���M6�v�P�Z�aS	<r4 I-pI#D~p�[��,-'zI�8�l�@�1�
�w�"�.{0V|H"S�lgN�l2
�
�?�_�.ZC�tqg�aJ�Sdtq=&a6#�z�G�C�|89[�AAW�8�
^oc"(�O�L.G�U!UPg�A"hp1�51UEZ�*@�G�aD:E9�J�|�*�`�@Ui~y�wd)Lo�;W}z@]t�I��0X�y_�l�E�H|!0#0�O�W�Sgm,-�H)�9W*!�yb,[�riU6�k3I~T?�4NW�0�$3�o�P�|�l"ge%�y�%|H>��L�5
�{�[tm9�/Xk~c4]zc~^�l�$/$�-[M�'7�d�)X�1H'�l�J�]	h8fCP%ds�S_��)Dp$%7�EbF�i#�}!y����iiicsheZdZUdZdZeed<dZeed<deddde	f�fd	d
�Z
deded
dfdd�Zdeded
efdd�Zde
d
dfdd�Zde
d
dfdd�Zd
efdd�Zd
efdd�Zd7dd�Zd ed!ed
dfd"d#�Zd7d$d%�Zd
efd&d'�Zd
efd(d)�Zd*ed ed
dfd+d,�Zd*ed ed!ed
dfd-d.�Zd/ed0ede
d
dfd1d2�Zd/ed0ede
d
dfd3d4�Zd7d5d6�Z�ZS)8�
_KexDHBasez3Abstract base class for Diffie-Hellman key exchanger�
_init_type�_reply_type�alg�connr(�hash_algcs8t��|||�d|_d|_d|_d|_d|_d|_dS)Nr�)�super�__init__�_dh�_g�_p�_e�_f�	_gex_data)r0rIrJrK��	__class__r.r1rN�s
z_KexDHBase.__init__�g�pr,NcCs||_||_dS)zInitialize DH group parametersN)rPrQ)r0rWrXr.r.r1�_init_group�s
z_KexDHBase._init_group�
host_key_data�kcCs`|��}|�|j���|�t|��|�|j�|�|���|�|���|�|�|��S)z@Compute a hash of key information associated with the connection)	�	_hash_alg�update�_conn�get_hash_prefixr#rT�_format_client_key�_format_server_key�digest)r0rZr[�hash_objr.r.r1�
_compute_hash�s
z_KexDHBase._compute_hash�packetcC�|jstd��|��|_dS)zParse a DH client key�Kex DH p not specifiedN)rQr�	get_mpintrR�r0rer.r.r1�_parse_client_key��z_KexDHBase._parse_client_keycCrf)zParse a DH server keyrgN)rQrrhrSrir.r.r1�_parse_server_key�rkz_KexDHBase._parse_server_keycC�
t|j�S)zFormat a DH client key)r"rRr/r.r.r1r`��
z_KexDHBase._format_client_keycCrm)zFormat a DH server key)r"rSr/r.r.r1ra�rnz_KexDHBase._format_server_keycCs|�|j|���dS)zSend a DH init messageN)�send_packetrGr`r/r.r.r1�
_send_init�sz_KexDHBase._send_init�key_data�sigcCs"|�|jt|�|��t|��dS)zSend a DH reply messageN)rorHr#ra)r0rqrrr.r.r1�_send_reply�s�z_KexDHBase._send_replycCs(t|j|j�|_|j��|_|��dS)zCompute e and send init messageN)rrPrQrOr2rRrpr/r.r.r1�
_perform_init�sz_KexDHBase._perform_initcCsHd|jkr|jkstd��td��|jdusJ�t|j�|j��S)�Compute client shared keyr
zKex DH f out of rangeN)rSrQrrOr"r7r/r.r.r1�_compute_client_shared�s�z!_KexDHBase._compute_client_sharedcCsVd|jkr|jkstd��td��t|j|j�|_|j��|_t|j�	|j��S)�Compute server shared keyr
zKex DH e out of range)
rRrQrrrPrOr2rSr"r7r/r.r.r1�_compute_server_shared�s�z!_KexDHBase._compute_server_shared�keycCs8|��}|�||�}|�||�|��|j�||�dS)z0Compute server shared key and send reply messageN)rxrdrs�signr^�send_newkeys)r0ryrqr[�hr.r.r1�_perform_reply�sz_KexDHBase._perform_replycCs:|��}|�||�}|�||�std��|j�||�dS)zVerify a DH reply messagezKey exchange hash mismatchN)rvrd�verifyrr^r{)r0ryrqrrr[r|r.r.r1�
_verify_reply�s
z_KexDHBase._verify_reply�_pkttype�_pktidcCsV|j��r	td��|�|�|��td|j�}|��}|dus"J�|�||j�dS)zProcess a DH init messagezUnexpected kex init msgr*N)	r^�	is_clientrrj�	check_endr�get_server_host_keyr}�public_data)r0r�r�re�server_conn�host_keyr.r.r1�
_process_init�s

z_KexDHBase._process_initcCs\|j��r	td��|��}|�|�|��}|��td|j�}|�|�}|�|||�dS)zProcess a DH reply messagezUnexpected kex reply msgr)N)	r^�	is_serverr�
get_stringrlr�r�validate_server_host_keyr)r0r�r�rerZrr�client_connr�r.r.r1�_process_replys


z_KexDHBase._process_replyc���|j��r|��dSdS)zStart DH key exchangeN)r^r�rtr/r.r.r1�start��
�z_KexDHBase.start�r,N)r8r9r:r;rGr=�__annotations__rHr<rrNrYrdr%rjrlr`rarprsrtrvrxr&r}r'rr�r�r��
__classcell__r.r.rUr1rF~sB



	
	�
�
�
�
�
�rFc
sleZdZUdZee�d�ZeZe	Z
dedddede
de
f
�fd	d
�Zeeje	ejiZee
efed<�ZS)�_KexDHz'Handler for Diffie-Hellman key exchange�
MSG_KEXDH_rIrJr(rKrWrXcs t��|||�|�||�dS�N)rMrNrY)r0rIrJrKrWrXrUr.r1rN%sz_KexDH.__init__�_packet_handlers)r8r9r:r;r�globals�_handler_names�MSG_KEXDH_INITrG�MSG_KEXDH_REPLYrHr<rr=rNrFr�r�r�r	rr�r�r.r.rUr1r�s

����r�cs�eZdZUdZee�d�ZeZe	Z
eZe
Z		ddedddedeed	eef
�fd
d�
Zdd
d�Zdedededdfdd�Zdedededdfdd�Zddd�Zeee
eeeje	ejeeiZeeefe d<�Z!S)�	_KexDHGexz)Handler for Diffie-Hellman group exchange�MSG_KEX_DH_GEX_NrIrJr(rK�preferred_size�max_sizecs t��|||�||_||_dSr�)rMrN�
_pref_size�	_max_size)r0rIrJrKr�r�rUr.r1rN;s
z_KexDHGex.__init__r,cCs\|jr|jst}t|j�}n|j}tt�t|jpt�t|jp t�}||_|�	||�dS)zSend a DH gex request messageN)
r�r��MSG_KEX_DH_GEX_REQUEST_OLDr$�
_request_type�KEX_DH_GEX_MIN_SIZE�KEX_DH_GEX_PREFERRED_SIZE�KEX_DH_GEX_MAX_SIZErTro)r0�pkttype�argsr.r.r1�
_send_requestCs��z_KexDHGex._send_requestr�r�recCs�|j��r	td��|jrtd��|��|_|tkr |��}t}n|��}|��}|��}|�	�t
t}}tD]\}	}
}|	|krBn|
|}}|	|krMnq7|�
||�|jt|�t|�7_|�|jt|�t|��dS)z Process a DH gex request messagezUnexpected kex request msgzKex DH group already requestedN)r^r�rrQ�get_remaining_payloadrTr��
get_uint32r�r��	_group1_g�	_group1_p�_dh_gex_groupsrYr"ro�_group_type)r0r�r�rer�r��_rWrX�gex_size�gex_g�gex_pr.r.r1�_process_requestSs.



�z_KexDHGex._process_requestr�cCsj|j��r	td��|jrtd��|��}|��}|��|�||�|jt|�t|�7_|�	�dS)zProcess a DH gex group messagezUnexpected kex group msgzKex DH group already sentN)
r^r�rrQrhr�rYrTr"rt)r0r�r�rerXrWr.r.r1�_process_groupxs
z_KexDHGex._process_groupc�r�)zStart DH group exchangeN)r^r�r�r/r.r.r1r��r�z_KexDHGex.startr�)NNr�)"r8r9r:r;rr�r��MSG_KEX_DH_GEX_INITrG�MSG_KEX_DH_GEX_REPLYrH�MSG_KEX_DH_GEX_REQUESTr��MSG_KEX_DH_GEX_GROUPr�r<rr
r=rNr�r%r�r�r�r�rFr�r�r�r	rr�r�r.r.rUr1r�1s@
���

�
�
%�
�
�r�c
s�eZdZUdZee�d�ZeZe	Z
dedddede
def
�fd	d
�Zdedd
fdd�Zdedd
fdd�Zdefdd�Zdefdd�Zdefdd�Zdefdd�Zddd�Zeeje	ejiZeeefed<�Z S)�_KexECDHz6Handler for elliptic curve Diffie-Hellman key exchange�
MSG_KEX_ECDH_rIrJr(rK�
ecdh_classr�cs@t��|||�||�|_|j��}|��r||_dS||_dSr�)rMrN�_privr2r��_client_pub�_server_pub)r0rIrJrKr�r��pubrUr.r1rN�s



z_KexECDH.__init__rer,NcC�|��|_dS)zParse an ECDH client keyN)r�r�rir.r.r1rj��z_KexECDH._parse_client_keycCr�)zParse an ECDH server keyN)r�r�rir.r.r1rl�r�z_KexECDH._parse_server_keycCrm)zFormat an ECDH client key)r#r�r/r.r.r1r`�rnz_KexECDH._format_client_keycCrm)zFormat an ECDH server key)r#r�r/r.r.r1ra�rnz_KexECDH._format_server_keycC�.z
t|j�|j��WStytd�d�w)ru�Invalid ECDH server public keyN)r"r�r7r��
ValueErrorrr/r.r.r1rv��

�z_KexECDH._compute_client_sharedcCr�)rw�Invalid ECDH client public keyN)r"r�r7r�r�rr/r.r.r1rx�r�z_KexECDH._compute_server_sharedc�r�)zStart ECDH key exchangeN)r^r�rpr/r.r.r1r��r�z_KexECDH.startr�r�)!r8r9r:r;rr�r��MSG_KEX_ECDH_INITrG�MSG_KEX_ECDH_REPLYrHr<r�
_ECDHClass�objectrNr%rjrlr`rarvrxr�rFr�r�r�r	r=rr�r�r.r.rUr1r��s(
��
�r�csVeZdZdZdedddedededef�fd	d
�Zdefdd
�Z	defdd�Z
�ZS)�_KexHybridECDHz%Handler for post-quantum key exchangerIrJr(rK�pq_alg_namer�r�csPt�j||||g|�R�t|�|_|��r&|j��\}|_||j|_dSdSr�)rMrNr�_pqr��keypair�_pq_privr�)r0rIrJrKr�r�r��pq_pubrUr.r1rN�s
�z_KexHybridECDH.__init__r,cCs�|jd|jj�}|j|jjd�}z
|j�||j�}Wnty(td�d�wz|j�|�}Wnty=td�d�wt	|�
||����S)ruNzInvalid PQ server ciphertextr�)r�r��ciphertext_bytes�decapsr�r�rr�r6r#r\rb)r0�
pq_ciphertext�ec_pub�	pq_secret�	ec_sharedr.r.r1rv�s
�
�z%_KexHybridECDH._compute_client_sharedcCs�|jd|jj�}|j|jjd�}z
|j�|�\}}Wnty(td�d�wz|j�|�}Wnty=td�d�w||j|_t	|�
||����S)rwNzInvalid PQ client public keyr�)r�r��pubkey_bytes�encapsr�rr�r6r�r#r\rb)r0r�r�r�r�r�r.r.r1rx�s
�
�z%_KexHybridECDH._compute_server_shared)r8r9r:r;r<rr�r�rNrvrxr�r.r.rUr1r��s���
r�cseZdZdZdedddedef�fdd�Zd'dd�Zd'd
d�Z	deded	d
fdd�Z
d'dd�Zd(deed	d
fdd�Z
dededed	d
fdd�Zdededed	d
fdd�Zdededed	d
fdd �Zdededed	d
fd!d"�Zdededed	d
fd#d$�Zd'�fd%d&�Z�ZS))�_KexGSSBase�Handler for GSS key exchangerIrJr(rKr�cs8t�j|||g|�R�|��|_d|_d|_d|_dS)NFrL)rMrN�get_gss_context�_gss�_token�_host_key_msg_ok�_host_key_data)r0rIrJrKr�rUr.r1rNs


z_KexGSSBase.__init__r,NcCs|jjr|jjstd��dS)z8Check that GSS context is secure enough for key exchangezGSS context not secureN)r��provides_mutual_auth�provides_integrityrr/r.r.r1�
_check_secures
��z_KexGSSBase._check_securecCs*|jstd��|�tt|j�|���dS)zSend a GSS init messagezEmpty GSS token in initN)r�rro�MSG_KEXGSS_INITr#r`r/r.r.r1rp$s
�z_KexGSSBase._send_initrqrrcCs>|jr
td�t|j�}ntd�}|�t|��t|�|�dS)zSend a GSS reply messageTFN)r�r!r#ro�MSG_KEXGSS_COMPLETEra)r0rqrr�
token_datar.r.r1rs-s�z_KexGSSBase._send_replycCs$|jstd��|�tt|j��dS)zSend a GSS continue messagezEmpty GSS token in continueN)r�rro�MSG_KEXGSS_CONTINUEr#r/r.r.r1�_send_continue8sz_KexGSSBase._send_continue�tokenc�s��zt|jj|�IdH|_WdStyH}z-|j��r1|�tt	|j
�t	|j�tt
|��tt��|jr=|�tt|j��tt
|��d�d}~ww)zProcess a GSS tokenN)r r��stepr�rr^r�ro�MSG_KEXGSS_ERRORr$�maj_code�min_coder#�strrr�r�r)r0r��excr.r.r1�_process_token@s�
���z_KexGSSBase._process_tokenr�r�rec�s��|j��r
td��|��}|�|�|��td|j�}|��}|r1|j|_	|�
tt|j	��nd|_	|�
|�IdH|jjrS|��|�|j|j	�|j��dS|��dS)zProcess a GSS init messagezUnexpected kexgss init msgr*rLN)r^r�rr�rjr�rr�r�r�ro�MSG_KEXGSS_HOSTKEYr#r�r��completer�r}�enable_gss_kex_authr�)r0r�r�rer�r�r�r.r.r1�_process_gss_initPs$�

z_KexGSSBase._process_gss_initc�s|�|��}|��|j��r|jjrtd��d|_|�|�IdH|j�	�r8|jjr8|�
�|�|j|j�dS|�
�dS)zProcess a GSS continue messagezUnexpected kexgss continue msgFN)r�r�r^r�r�r�rr�r�r�r�r}r�r�)r0r�r�rer�r.r.r1�_process_continuems�z_KexGSSBase._process_continuec�s��|j��r
td��d|_|�|�|��}|��}|r |��nd}|��|r?|jj	r0td��|�
|�IdH|jr?td��|jj	sGtd��|��|�
|j|j|�|j��dS)zProcess a GSS complete messagezUnexpected kexgss complete msgFNzNon-empty token after completezGSS exchange failed to complete)r^r�rr�rlr��get_booleanr�r�r�r�r�r�rr�r�)r0r�r�re�mic�
token_presentr�r.r.r1�_process_complete�s(�

z_KexGSSBase._process_completecCs*|jstd��d|_|��|_|��dS)zProcess a GSS hostkey messagezUnexpected kexgss hostkey msgFN)r�rr�r�r�)r0r�r�rer.r.r1�_process_hostkey�s

z_KexGSSBase._process_hostkeycCsX|j��r	td��|��}|��}|��}|��}|��|jj�d|jddd��dS)zProcess a GSS error messagezUnexpected kexgss error msgz
GSS error: %szutf-8�ignore)�errorsN)	r^r�rr�r�r��logger�debug1�decode)r0r�r�rer��msgr.r.r1�_process_error�s

�z_KexGSSBase._process_errorc�s8�|j��rd|_|��IdHt���IdHdSdS)zStart GSS key exchangeTN)r^r�r�r�rMr�r/rUr.r1r��s�
�z_KexGSSBase.startr�r�)r8r9r:r;r<rr�rNr�rprsr�r
r�r=r%r�r�r�r�rr�r�r.r.rUr1r�sL
��
	
	

�
�
�
�
�
�
�
�
�
�r�c
@�>eZdZdZee�d�Zeej	e
ejeej
eejeejiZdS)�_KexGSSr��MSG_KEXGSS_N�r8r9r:r;rr�r�r�r�r�r�r�r�r�r�r�r�rr�r.r.r.r1r���rc@sReZdZdZee�d�ZeZe	Z
eej
eejeejeejeejeeje	ejiZdS)�
_KexGSSGexzHandler for GSS group exchangerN)r8r9r:r;rr�r��MSG_KEXGSS_GROUPREQr��MSG_KEXGSS_GROUPr�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r.r.r.r1r�s�rc
@r)�_KexGSSECDHz!Handler for GSS ECDH key exchangerNrr.r.r.r1r
�rr
smlkem768x25519-sha256smlkem768Tsmlkem768nistp256-sha256snistp256smlkem1024nistp384-sha384s	mlkem1024snistp384ssntrup761x25519-sha512s	sntrup761s"sntrup761x25519-sha512@openssh.comscurve25519-sha256scurve25519-sha256@libssh.orgsgss-curve25519-sha256scurve448-sha512sgss-curve448-sha512snistp521ssha512ssha384ssha256s1.3.132.0.10s
ecdh-sha2-sgss-�-ssha224@ssh.comFssha384@ssh.comssha512@ssh.comssha1sdiffie-hellman-group-exchange-r.s@ssh.comsgss-gex-sgroup14-sha256sgroup15-sha512sgroup16-sha512sgroup17-sha512sgroup18-sha512sgroup14-sha256@ssh.comsgroup14-sha224@ssh.comsgroup15-sha256@ssh.comsgroup15-sha384@ssh.comsgroup16-sha384@ssh.comsgroup16-sha512@ssh.comsgroup18-sha512@ssh.comsgroup14-sha1sgroup1-sha1sdiffie-hellman-N)gr;�hashlibrrrrr�typingrrr	r
r�typing_extensionsr�	constantsr�cryptorrrrrrrrr�gssr�kexrrr�miscrrrrr rer!r"r#r$r%�
public_keyr&r'�
connectionr(r)r*r+r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr	r�r�r�r�r��
_group14_g�
_group14_p�
_group15_g�
_group15_p�
_group16_g�
_group16_p�
_group17_g�
_group17_p�
_group18_g�
_group18_pr�rFr�r�r�r�r�rrr
�	_curve_id�
_hash_namer\�_default�endswith�_namerPrQr.r.r.r1�<module>s0
�
 hD44
���
�
������



��
����������