Ë
    zñ�jò_  ã                   ó‚  — d Z ddlZddlmZ ddlmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ  edd	«      \  ZZZZZ ed
d«      \  ZZ edd	«      D � cg c]
  }  e| «      ‘Œ c} \  ZZZZZ ed
d«      D � cg c]
  }  e| «      ‘Œ c} \  ZZ G d„ d«      Z  G d„ de «      Z! G d„ d«      Z" G d„ d«      Z#yc c} w c c} w )aõ  
This module provides GSS-API / SSPI Key Exchange as defined in :rfc:`4462`.

.. note:: Credential delegation is not supported in server mode.

.. note::
    `RFC 4462 Section 2.2
    <https://tools.ietf.org/html/rfc4462.html#section-2.2>`_ says we are not
    required to implement GSS-API error messages. Thus, in many methods within
    this module, if an error occurs an exception will be thrown and the
    connection will be terminated.

.. seealso:: :doc:`/api/ssh_gss`

.. versionadded:: 1.15
é    N)Úsha1)ÚDEBUGÚmax_byteÚ	zero_byteÚbyte_chrÚ	byte_maskÚbyte_ord)Úutil)ÚMessage)ÚSSHExceptioné   é#   é(   é*   c                   óx   — e Zd ZdZdZdZ ed«      edz  z   Ze	dz  Z
dZd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚKexGSSGroup1zŸ
    GSS-API / SSPI Authenticated Diffie-Hellman Key Exchange as defined in `RFC
    4462 Section 2 <https://tools.ietf.org/html/rfc4462.html#section-2>`_
    lE   ÿÿÿÿ8Ê{3If?ñE yéZô3¢Vý58nÛoP·eõ?a-ûÓtBLèûy3W[�<‘p¨6m5ÂÝPøß&aÌF!Í33*¾w& ãAR‘M;L}. c|&A“@”h\Š&&#-D¨v‡dÿÿÿÿ é   é   é   é   z(gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==c                 ó€   — || _         | j                   j                  | _        d | _        d| _        d| _        d| _        y )Nr   )Ú	transportÚkexgss_ctxtÚkexgssÚgss_hostÚxÚeÚf©Úselfr   s     úQ/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/paramiko/kex_gss.pyÚ__init__zKexGSSGroup1.__init__Y   s6   € Ø"ˆŒØ—n‘n×0Ñ0ˆŒØˆŒØˆŒØˆŒØˆ�ó    c                 óö  — | j                  «        | j                  j                  rPt        | j                  | j
                  | j                  «      | _        | j                  j                  t        «       yt        | j                  | j
                  | j                  «      | _
        | j                  j                  | _        t        «       }|j                  t        «       |j                  | j                   j#                  | j                  ¬«      «       |j%                  | j                  «       | j                  j'                  |«       | j                  j                  t(        t*        t,        t.        «       y)zU
        Start the GSS-API / SSPI Authenticated Diffie-Hellman Key Exchange.
        N©Útarget)Ú_generate_xr   Úserver_modeÚpowÚGr   ÚPr   Ú_expect_packetÚMSG_KEXGSS_INITr   r   r   Úadd_byteÚc_MSG_KEXGSS_INITÚ
add_stringr   Ússh_init_sec_contextÚ	add_mpintÚ_send_messageÚMSG_KEXGSS_HOSTKEYÚMSG_KEXGSS_CONTINUEÚMSG_KEXGSS_COMPLETEÚMSG_KEXGSS_ERROR©r    Úms     r!   Ú	start_kexzKexGSSGroup1.start_kexa   sñ   € ð 	×ÑÔØ�>‰>×%Ò%ä˜Ÿ™ §¡¨¯©Ó0ˆDŒFØ�N‰N×)Ñ)¬/Ô:Øä�T—V‘V˜TŸV™V T§V¡VÓ,ˆŒàŸ™×/Ñ/ˆŒÜ‹IˆØ	�
‰
Ô$Ô%Ø	�‰�T—[‘[×5Ñ5¸T¿]¹]Ð5ÓKÔLØ	�‰�D—F‘FÔØ�‰×$Ñ$ QÔ'Ø�‰×%Ñ%ÜÜÜÜõ		
r#   c                 óî  — | j                   j                  r|t        k(  r| j                  |«      S | j                   j                  s|t        k(  r| j                  |«      S | j                   j                  r|t        k(  r| j                  |«      S | j                   j                  s|t        k(  r| j                  |«      S |t        k(  r| j                  |«      S d}t        |j                  |«      «      ‚)ú˜
        Parse the next packet.

        :param ptype: The (string) type of the incoming packet
        :param `.Message` m: The packet content
        z.GSS KexGroup1 asked to handle packet type {:d})r   r(   r-   Ú_parse_kexgss_initr4   Ú_parse_kexgss_hostkeyr5   Ú_parse_kexgss_continuer6   Ú_parse_kexgss_completer7   Ú_parse_kexgss_errorr   Úformat©r    Úptyper9   Úmsgs       r!   Ú
parse_nextzKexGSSGroup1.parse_next{   sÎ   € ð �>‰>×%Ò%¨5´OÒ+CØ×*Ñ*¨1Ó-Ð-Ø—‘×+Ò+°Ô:LÒ1LØ×-Ñ-¨aÓ0Ð0Ø�^‰^×'Ò'¨UÔ6IÒ-IØ×.Ñ.¨qÓ1Ð1Ø—‘×+Ò+°Ô:MÒ1MØ×.Ñ.¨qÓ1Ð1ØÔ&Ò&Ø×+Ñ+¨AÓ.Ð.Ø>ˆÜ˜3Ÿ:™: eÓ,Ó-Ð-r#   c                 óÐ   — 	 t        j                  d«      }t        |d   d«      |dd z   }|dd }|| j                  | j                  fvrnŒKt        j                  |«      | _        y)ap  
        generate an "x" (1 < x < q), where q is (p-1)/2.
        p is a 128-byte (1024-bit) number, where the first 64 bits are 1.
        therefore q can be approximated as a 2^1023.  we drop the subset of
        potential x where the first 63 bits are 1, because some of those will
        be larger than q (but this is a tiny tiny subset of potential x).
        é   é€   r   r   Nr   )ÚosÚurandomr   Úb7fffffffffffffffÚb0000000000000000r
   Úinflate_longr   )r    Úx_bytesÚfirsts      r!   r'   zKexGSSGroup1._generate_x‘   so   € ð Ü—j‘j “oˆGÜ ¨¡
¨DÓ1°G¸A¸B°KÑ?ˆGØ˜B˜Q�KˆEØ˜T×3Ñ3°T×5KÑ5KÐLÑLØð ô ×"Ñ" 7Ó+ˆ�r#   c                 óæ   — |j                  «       }|| j                  _        |j                  «       }| j                  j                  ||«       | j                  j	                  t
        t        «       y)z›
        Parse the SSH2_MSG_KEXGSS_HOSTKEY message (client mode).

        :param `.Message` m: The content of the SSH2_MSG_KEXGSS_HOSTKEY message
        N©Ú
get_stringr   Úhost_keyÚ_verify_keyr,   r5   r6   ©r    r9   rT   Úsigs       r!   r>   z"KexGSSGroup1._parse_kexgss_hostkey¡   óP   € ð —<‘<“>ˆØ"*ˆ�‰ÔØ�l‰l‹nˆØ�‰×"Ñ" 8¨SÔ1Ø�‰×%Ñ%Ô&9Ô;NÕOr#   c                 ó„  — | j                   j                  sª|j                  «       }t        «       }|j	                  t
        «       |j                  | j                  j                  | j                  |¬«      «       | j                   j                  |«       | j                   j                  t        t        t        «       yy)z›
        Parse the SSH2_MSG_KEXGSS_CONTINUE message.

        :param `.Message` m: The content of the SSH2_MSG_KEXGSS_CONTINUE
            message
        ©r&   Ú
recv_tokenN©r   r(   rS   r   r.   Úc_MSG_KEXGSS_CONTINUEr0   r   r1   r   Úsend_messager,   r5   r6   r7   ©r    r9   Ú	srv_tokens      r!   r?   z#KexGSSGroup1._parse_kexgss_continue®   s�   € ð �~‰~×)Ò)ØŸ™›ˆIÜ“	ˆAØ�J‰JÔ,Ô-Ø�L‰LØ—‘×0Ñ0ØŸ=™=°Yð 1ó ôð
 �N‰N×'Ñ'¨Ô*Ø�N‰N×)Ñ)Ü#Ô%8Ô:Jõð r#   c                 ó  — | j                   j                  €t        «       | j                   _        |j                  «       | _        | j                  dk  s| j                  | j
                  dz
  kD  rt        d«      ‚|j                  «       }|j                  «       }d}|r|j                  «       }t        | j                  | j                  | j
                  «      }t        «       }|j                  | j                   j                  | j                   j                  | j                   j                  | j                   j                   «       |j#                  | j                   j                  j%                  «       «       |j'                  | j(                  «       |j'                  | j                  «       |j'                  |«       t+        t-        |«      «      j/                  «       }| j                   j1                  ||«       |�D| j2                  j5                  | j6                  |¬«       | j2                  j9                  ||«       n| j2                  j9                  ||«       d| j                   _        | j                   j=                  «        y)z©
        Parse the SSH2_MSG_KEXGSS_COMPLETE message (client mode).

        :param `.Message` m: The content of the
            SSH2_MSG_KEXGSS_COMPLETE message
        NrH   úServer kex "f" is out of rangerZ   T)r   rT   ÚNullHostKeyÚ	get_mpintr   r+   r   rS   Úget_booleanr)   r   r   ÚaddÚlocal_versionÚremote_versionÚlocal_kex_initÚremote_kex_initr0   Ú__str__r2   r   r   ÚstrÚdigestÚ_set_K_Hr   r1   r   Ússh_check_micÚgss_kex_usedÚ_activate_outbound©r    r9   Ú	mic_tokenÚboolr`   ÚKÚhmÚHs           r!   r@   z#KexGSSGroup1._parse_kexgss_completeÅ   sÇ  € ð �>‰>×"Ñ"Ð*Ü&1£mˆD�N‰NÔ#Ø—‘“ˆŒØ�F‰F�QŠJ˜DŸF™F T§V¡V¨a¡ZÒ/ÜÐ?Ó@Ð@Ø—L‘L“Nˆ	à�}‰}‹ˆØˆ	ÙØŸ™›ˆIÜ�—‘˜Ÿ™ §¡Ó'ˆô ‹YˆØ
�‰Ø�N‰N×(Ñ(Ø�N‰N×)Ñ)Ø�N‰N×)Ñ)Ø�N‰N×*Ñ*ô		
ð 	�‰�d—n‘n×-Ñ-×5Ñ5Ó7Ô8Ø
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�QŒÜ”�R“‹M× Ñ Ó"ˆØ�‰×Ñ  1Ô%ØÐ Ø�K‰K×,Ñ,Ø—}‘}°ð -ô ð �K‰K×%Ñ% i°Õ3à�K‰K×%Ñ% i°Ô3Ø&*ˆ�‰Ô#Ø�‰×)Ñ)Õ+r#   c                 óÚ  — |j                  «       }|j                  «       | _        | j                  dk  s| j                  | j                  dz
  kD  rt	        d«      ‚t        | j                  | j                  | j                  «      }t        «       | j                  _	        | j                  j                  j                  «       }t        «       }|j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                   «       |j#                  |«       |j%                  | j                  «       |j%                  | j&                  «       |j%                  |«       t)        |j+                  «       «      j-                  «       }| j                  j/                  ||«       | j0                  j3                  | j4                  |«      }t        «       }| j0                  j6                  rï| j0                  j9                  | j                  j:                  d¬«      }|j=                  t>        «       |j%                  | j&                  «       |j#                  |«       |�#|jA                  d«       |j#                  |«       n|jA                  d«       | j                  jC                  |«       d| j                  _"        | j                  jG                  «        y|j=                  tH        «       |j#                  |«       | j                  jC                  |«       | j                  jK                  tL        tN        tP        «       y)z•
        Parse the SSH2_MSG_KEXGSS_INIT message (server mode).

        :param `.Message` m: The content of the SSH2_MSG_KEXGSS_INIT message
        rH   úClient kex "e" is out of rangeT©Úgss_kexNF))rS   rd   r   r+   r   r)   r   rc   r   rT   rk   r   rf   rh   rg   rj   ri   r0   r2   r   r   Úasbytesrm   rn   r   Ússh_accept_sec_contextr   Ú_gss_srv_ctxt_statusÚssh_get_micÚ
session_idr.   Úc_MSG_KEXGSS_COMPLETEÚadd_booleanr3   rp   rq   r]   r,   r5   r6   r7   ©	r    r9   Úclient_tokenru   Úkeyrv   rw   r`   rs   s	            r!   r=   zKexGSSGroup1._parse_kexgss_initò   sY  € ð —|‘|“~ˆØ—‘“ˆŒØ�F‰F�QŠJ˜DŸF™F T§V¡V¨a¡ZÒ/ÜÐ?Ó@Ð@Ü�—‘˜Ÿ™ §¡Ó'ˆÜ"-£-ˆ�‰ÔØ�n‰n×%Ñ%×-Ñ-Ó/ˆô ‹YˆØ
�‰Ø�N‰N×)Ñ)Ø�N‰N×(Ñ(Ø�N‰N×*Ñ*Ø�N‰N×)Ñ)ô		
ð 	�‰�cÔØ
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�QŒÜ�—‘“Ó×%Ñ%Ó'ˆØ�‰×Ñ  1Ô%Ø—K‘K×6Ñ6Ø�M‰M˜<ó
ˆ	ô ‹IˆØ�;‰;×+Ò+ØŸ™×/Ñ/Ø—‘×)Ñ)°4ð 0ó ˆIð �J‰JÔ,Ô-Ø�K‰K˜Ÿ™ÔØ�L‰L˜Ô#ØÐ$Ø—‘˜dÔ#Ø—‘˜YÕ'à—‘˜eÔ$Ø�N‰N×(Ñ(¨Ô+Ø*.ˆD�N‰NÔ'Ø�N‰N×-Ñ-Õ/à�J‰JÔ,Ô-Ø�L‰L˜Ô#Ø�N‰N×(Ñ(¨Ô+Ø�N‰N×)Ñ)Ü#Ô%8Ô:Jõr#   c                 óº   — |j                  «       }|j                  «       }|j                  «       }|j                  «        t        dj                  |||«      «      ‚)aÝ  
        Parse the SSH2_MSG_KEXGSS_ERROR message (client mode).
        The server may send a GSS-API error message. if it does, we display
        the error by throwing an exception (client mode).

        :param `.Message` m: The content of the SSH2_MSG_KEXGSS_ERROR message
        :raise SSHException: Contains GSS-API major and minor status as well as
                             the error message and the language tag of the
                             message
        úCGSS-API Error:
Major Status: {}
Minor Status: {}
Error Message: {}
©Úget_intrS   r   rB   ©r    r9   Ú
maj_statusÚ
min_statusÚerr_msgs        r!   rA   z KexGSSGroup1._parse_kexgss_error*  óS   € ð —Y‘Y“[ˆ
Ø—Y‘Y“[ˆ
Ø—,‘,“.ˆØ	�‰ŒÜð÷ �FØ˜J¨óó
ð 	
r#   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   r*   r   r   rL   r   rM   ÚNAMEr"   r:   rF   r'   r>   r?   r@   r=   rA   © r#   r!   r   r   L   sf   „ ñð 	K€AØ	€AÙ  ›¨°A©Ñ5ÐØ! A™ÐØ5€Dòò
ò4.ò,,ò Pòò.+,òZ6óp
r#   r   c                   ó   — e Zd ZdZdZdZdZy)ÚKexGSSGroup14z«
    GSS-API / SSPI Authenticated Diffie-Hellman Group14 Key Exchange as defined
    in `RFC 4462 Section 2
    <https://tools.ietf.org/html/rfc4462.html#section-2>`_
    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üÿÿÿÿ r   z)gss-group14-sha1-toWM5Slw5Ew8Mqkay+al2g==N)r�   r�   r‘   r’   r+   r*   r“   r”   r#   r!   r–   r–   D  s   „ ñð 	K€AØ	€AØ6�Dr#   r–   c                   ób   — e Zd ZdZdZdZdZdZd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	KexGSSGexz¡
    GSS-API / SSPI Authenticated Diffie-Hellman Group Exchange as defined in
    `RFC 4462 Section 2 <https://tools.ietf.org/html/rfc4462.html#section-2>`_
    z%gss-gex-sha1-toWM5Slw5Ew8Mqkay+al2g==é   é    i   c                 ó¸   — || _         | j                   j                  | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        d| _
        y )NF)r   r   r   r   ÚpÚqÚgr   r   r   Ú	old_styler   s     r!   r"   zKexGSSGex.__init__[  sR   € Ø"ˆŒØ—n‘n×0Ñ0ˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆ�r#   c                 óú  — | j                   j                  r | j                   j                  t        «       y| j                   j                  | _        t        «       }|j                  t        «       |j                  | j                  «       |j                  | j                  «       |j                  | j                  «       | j                   j                  |«       | j                   j                  t        «       y)zV
        Start the GSS-API / SSPI Authenticated Diffie-Hellman Group Exchange
        N)r   r(   r,   ÚMSG_KEXGSS_GROUPREQr   r   r.   Úc_MSG_KEXGSS_GROUPREQÚadd_intÚmin_bitsÚpreferred_bitsÚmax_bitsr3   ÚMSG_KEXGSS_GROUPr8   s     r!   r:   zKexGSSGex.start_kexg  s¥   € ð �>‰>×%Ò%Ø�N‰N×)Ñ)Ô*=Ô>Øð Ÿ™×/Ñ/ˆŒÜ‹IˆØ	�
‰
Ô(Ô)Ø	�	‰	�$—-‘-Ô Ø	�	‰	�$×%Ñ%Ô&Ø	�	‰	�$—-‘-Ô Ø�‰×$Ñ$ QÔ'Ø�‰×%Ñ%Ô&6Õ7r#   c                 ó¦  — |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 |t        k(  r| j                  |«      S |t        k(  r| j                  |«      S d}t        |j                  |«      «      ‚)r<   z'KexGex asked to handle packet type {:d})r¡   Ú_parse_kexgss_groupreqr§   Ú_parse_kexgss_groupr-   Ú_parse_kexgss_gex_initr4   r>   r5   r?   r6   r@   r7   rA   r   rB   rC   s       r!   rF   zKexGSSGex.parse_nextz  sÒ   € ð Ô'Ò'Ø×.Ñ.¨qÓ1Ð1ØÔ&Ò&Ø×+Ñ+¨AÓ.Ð.Ø”oÒ%Ø×.Ñ.¨qÓ1Ð1ØÔ(Ò(Ø×-Ñ-¨aÓ0Ð0ØÔ)Ò)Ø×.Ñ.¨qÓ1Ð1ØÔ)Ò)Ø×.Ñ.¨qÓ1Ð1ØÔ&Ò&Ø×+Ñ+¨AÓ.Ð.Ø7ˆÜ˜3Ÿ:™: eÓ,Ó-Ð-r#   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)NrH   r   r   éÿ   rI   )
rœ   r
   Údeflate_longr	   ÚlenrJ   rK   r   rN   r   )r    r�   ÚqnormÚqhbyteÚ
byte_countÚqmaskrO   r   s           r!   r'   zKexGSSGex._generate_x”  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)z©
        Parse the SSH2_MSG_KEXGSS_GROUPREQ message (server mode).

        :param `.Message` m: The content of the
            SSH2_MSG_KEXGSS_GROUPREQ message
        Nz-Can't do server-side gex with no modulus packzPicking p ({} <= {} <= {} bits))r‰   r¦   r¤   r¥   r   Ú_get_modulus_packr   Ú_logr   rB   Úget_modulusrž   rœ   r   r.   Úc_MSG_KEXGSS_GROUPr2   r3   r,   r-   )r    r9   ÚminbitsÚpreferredbitsÚmaxbitsÚpacks         r!   r©   z KexGSSGex._parse_kexgss_groupreq¦  sD  € ð —)‘)“+ˆØŸ	™	›ˆØ—)‘)“+ˆà˜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Ô'Ø�‰×%Ñ%¤oÕ6r#   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                  «       | j                  j-                  |«       | j                  j/                  t0        t2        t4        t6        «       y)z–
        Parse the SSH2_MSG_KEXGSS_GROUP message (client mode).

        :param `Message` m: The content of the SSH2_MSG_KEXGSS_GROUP message
        r™   rš   z<Server-generated gex p (don't ask) is out of range ({} bits)zGot server p ({} bits)r%   N)rd   rœ   rž   r
   Ú
bit_lengthr   rB   r   r¶   r   r'   r)   r   r   r   r.   r/   r0   r   r1   r   r2   r3   r,   r4   r5   r6   r7   )r    r9   Úbitlens      r!   rª   zKexGSSGex._parse_kexgss_groupÒ  s  € ð —‘“ˆŒØ—‘“ˆŒä—‘ §¡Ó(ˆØ�TŠM˜v¨š}Üðß"™F 6›Nóð ð 	�‰×ÑÜÐ+×2Ñ2°6Ó:ô	
ð 	×ÑÔä�T—V‘V˜TŸV™V T§V¡VÓ,ˆŒÜ‹IˆØ	�
‰
Ô$Ô%Ø	�‰�T—[‘[×5Ñ5¸T¿]¹]Ð5ÓKÔLØ	�‰�D—F‘FÔØ�‰×$Ñ$ QÔ'Ø�‰×%Ñ%ÜÜÜÜõ		
r#   c                 óH  — |j                  «       }|j                  «       | _        | j                  dk  s| j                  | j                  dz
  kD  rt	        d«      ‚| j                  «        t        | j                  | j                  | j                  «      | _	        t        | j                  | j                  | j                  «      }t        «       | j                  _        | j                  j                  j                  «       }t        «       }|j                  | j                  j                   | j                  j"                  | j                  j$                  | j                  j&                  |«       |j)                  | j*                  «       |j)                  | j,                  «       |j)                  | j.                  «       |j1                  | j                  «       |j1                  | j                  «       |j1                  | j                  «       |j1                  | j                  «       |j1                  |«       t3        |j5                  «       «      j7                  «       }| j                  j9                  ||«       | j:                  j=                  | j>                  |«      }t        «       }| j:                  j@                  rï| j:                  jC                  | j                  jD                  d¬«      }|jG                  tH        «       |j1                  | j                  «       |jK                  |«       |�#|jM                  d«       |jK                  |«       n|jM                  d«       | j                  jO                  |«       d| j                  _(        | j                  jS                  «        y|jG                  tT        «       |jK                  |«       | j                  jO                  |«       | j                  jW                  tX        tZ        t\        «       y)z”
        Parse the SSH2_MSG_KEXGSS_INIT message (server mode).

        :param `Message` m: The content of the SSH2_MSG_KEXGSS_INIT message
        rH   ry   Trz   NF)/rS   rd   r   rœ   r   r'   r)   rž   r   r   rc   r   rT   rk   r   rf   rh   rg   rj   ri   r£   r¤   r¥   r¦   r2   r   r|   rm   rn   r   r}   r   r~   r   r€   r.   r�   r0   r‚   r3   rp   rq   r]   r,   r5   r6   r7   rƒ   s	            r!   r«   z KexGSSGex._parse_kexgss_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×%Ñ%×-Ñ-Ó/ˆô ‹YˆØ
�‰Ø�N‰N×)Ñ)Ø�N‰N×(Ñ(Ø�N‰N×*Ñ*Ø�N‰N×)Ñ)Øô	
ð 	�
‰
�4—=‘=Ô!Ø
�
‰
�4×&Ñ&Ô'Ø
�
‰
�4—=‘=Ô!Ø
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�T—V‘VÔØ
�‰�QŒÜ�—‘“Ó×%Ñ%Ó'ˆØ�‰×Ñ  1Ô%Ø—K‘K×6Ñ6Ø�M‰M˜<ó
ˆ	ô ‹IˆØ�;‰;×+Ò+ØŸ™×/Ñ/Ø—‘×)Ñ)°4ð 0ó ˆIð �J‰JÔ,Ô-Ø�K‰K˜Ÿ™ÔØ�L‰L˜Ô#ØÐ$Ø—‘˜dÔ#Ø—‘˜YÕ'à—‘˜eÔ$Ø�N‰N×(Ñ(¨Ô+Ø*.ˆD�N‰NÔ'Ø�N‰N×-Ñ-Õ/à�J‰JÔ,Ô-Ø�L‰L˜Ô#Ø�N‰N×(Ñ(¨Ô+Ø�N‰N×)Ñ)Ü#Ô%8Ô:Jõr#   c                 óæ   — |j                  «       }|| j                  _        |j                  «       }| j                  j                  ||«       | j                  j	                  t
        t        «       y)zš
        Parse the SSH2_MSG_KEXGSS_HOSTKEY message (client mode).

        :param `Message` m: The content of the SSH2_MSG_KEXGSS_HOSTKEY message
        NrR   rV   s       r!   r>   zKexGSSGex._parse_kexgss_hostkey1  rX   r#   c                 ó„  — | j                   j                  sª|j                  «       }t        «       }|j	                  t
        «       |j                  | j                  j                  | j                  |¬«      «       | j                   j                  |«       | j                   j                  t        t        t        «       yy)zŽ
        Parse the SSH2_MSG_KEXGSS_CONTINUE message.

        :param `Message` m: The content of the SSH2_MSG_KEXGSS_CONTINUE message
        rZ   Nr\   r_   s      r!   r?   z KexGSSGex._parse_kexgss_continue>  s�   € ð �~‰~×)Ò)ØŸ™›ˆIÜ“	ˆAØ�J‰JÔ,Ô-Ø�L‰LØ—‘×0Ñ0ØŸ=™=°Yð 1ó ôð
 �N‰N×'Ñ'¨Ô*Ø�N‰N×)Ñ)Ü#Ô%8Ô:Jõð r#   c                 óD  — | j                   j                  €t        «       | j                   _        |j                  «       | _        |j                  «       }|j                  «       }d}|r|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                   j                  j#                  «       «       | j$                  s|j'                  | j(                  «       |j'                  | j*                  «       | j$                  s|j'                  | j,                  «       |j/                  | j                  «       |j/                  | j0                  «       |j/                  | j2                  «       |j/                  | j                  «       |j/                  |«       t5        |j7                  «       «      j9                  «       }| j                   j;                  ||«       |�D| j<                  j?                  | j@                  |¬«       | j<                  jC                  ||«       n| j<                  jC                  ||«       d| j                   _"        | j                   jG                  «        y)zœ
        Parse the SSH2_MSG_KEXGSS_COMPLETE message (client mode).

        :param `Message` m: The content of the SSH2_MSG_KEXGSS_COMPLETE message
        NrH   rb   rZ   T)$r   rT   rc   rd   r   rS   re   rœ   r   r)   r   r   rf   rg   rh   ri   rj   rk   rŸ   r£   r¤   r¥   r¦   r2   rž   r   r   r|   rm   rn   r   r1   r   ro   rp   rq   rr   s           r!   r@   z KexGSSGex._parse_kexgss_completeT  s!  € ð �>‰>×"Ñ"Ð*Ü&1£mˆD�N‰NÔ#Ø—‘“ˆŒØ—L‘L“Nˆ	à�}‰}‹ˆØˆ	ÙØŸ™›ˆIØ�F‰F�QŠJ˜DŸF™F T§V¡V¨a¡ZÒ/ÜÐ?Ó@Ð@Ü�—‘˜Ÿ™ §¡Ó'ˆô ‹YˆØ
�‰Ø�N‰N×(Ñ(Ø�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ŒÜ�—‘“Ó×%Ñ%Ó'ˆØ�‰×Ñ  1Ô%ØÐ Ø�K‰K×,Ñ,Ø—}‘}°ð -ô ð �K‰K×%Ñ% i°Õ3à�K‰K×%Ñ% i°Ô3Ø&*ˆ�‰Ô#Ø�‰×)Ñ)Õ+r#   c                 óº   — |j                  «       }|j                  «       }|j                  «       }|j                  «        t        dj                  |||«      «      ‚)aÝ  
        Parse the SSH2_MSG_KEXGSS_ERROR message (client mode).
        The server may send a GSS-API error message. if it does, we display
        the error by throwing an exception (client mode).

        :param `Message` m:  The content of the SSH2_MSG_KEXGSS_ERROR message
        :raise SSHException: Contains GSS-API major and minor status as well as
                             the error message and the language tag of the
                             message
        r‡   rˆ   rŠ   s        r!   rA   zKexGSSGex._parse_kexgss_error†  rŽ   r#   N)r�   r�   r‘   r’   r“   r¤   r¦   r¥   r"   r:   rF   r'   r©   rª   r«   r>   r?   r@   rA   r”   r#   r!   r˜   r˜   P  sY   „ ñð
 3€DØ€HØ€HØ€Nò
ò8ò&.ò4ò$*7òX
òB<ò|Pòò,0,ód
r#   r˜   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)rc   z«
    This class represents the Null Host Key for GSS-API Key Exchange as defined
    in `RFC 4462 Section 5
    <https://tools.ietf.org/html/rfc4462.html#section-5>`_
    c                 ó   — d| _         y )NÚ ©r…   ©r    s    r!   r"   zNullHostKey.__init__§  s	   € Øˆ�r#   c                 ó   — | j                   S ©NrÈ   rÉ   s    r!   rk   zNullHostKey.__str__ª  ó   € Ø�x‰xˆr#   c                 ó   — | j                   S rË   rÈ   rÉ   s    r!   Úget_namezNullHostKey.get_name­  rÌ   r#   N)r�   r�   r‘   r’   r"   rk   rÎ   r”   r#   r!   rc   rc      s   „ ñòòór#   rc   )$r’   rJ   Úhashlibr   Úparamiko.commonr   r   r   r   r   r	   Úparamikor
   Úparamiko.messager   Úparamiko.ssh_exceptionr   Úranger-   r5   r6   r4   r7   r¡   r§   r/   r]   r�   Úc_MSG_KEXGSS_HOSTKEYÚc_MSG_KEXGSS_ERRORr¢   r¸   r   r–   r˜   rc   )Úcs   0r!   ú<module>rØ      sé   ðñ.ó" 
Ý ÷÷ õ Ý $Ý /ñ 
ˆ"ˆbƒMñØØØØØá*/°°B«-Ñ 'ÐÐ&ñ    B›-Ö(�Q�Xˆa…[Ò(ñØØØØØñ ˜r 2›ö/Ø�HˆQ…Kò/Ñ +ÐÐ*÷
u
ñ u
ôp	7�Lô 	7÷M
ñ M
÷`
ò ùòu )ùò/s   ÁB7Á8B<