Ë
    zñ�jþ§  ã                   óJ  — d Z ddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( ddl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7  G d	„ d
«      Z8 G d„ d«      Z9 G d„ de8«      Z:y)z
`.AuthHandler`
é    N)#ÚcMSG_SERVICE_REQUESTÚcMSG_DISCONNECTÚ DISCONNECT_SERVICE_NOT_AVAILABLEÚ)DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLEÚcMSG_USERAUTH_REQUESTÚcMSG_SERVICE_ACCEPTÚDEBUGÚAUTH_SUCCESSFULÚINFOÚcMSG_USERAUTH_SUCCESSÚcMSG_USERAUTH_FAILUREÚAUTH_PARTIALLY_SUCCESSFULÚcMSG_USERAUTH_INFO_REQUESTÚWARNINGÚAUTH_FAILEDÚcMSG_USERAUTH_PK_OKÚcMSG_USERAUTH_INFO_RESPONSEÚMSG_SERVICE_REQUESTÚMSG_SERVICE_ACCEPTÚMSG_USERAUTH_REQUESTÚMSG_USERAUTH_SUCCESSÚMSG_USERAUTH_FAILUREÚMSG_USERAUTH_BANNERÚMSG_USERAUTH_INFO_REQUESTÚMSG_USERAUTH_INFO_RESPONSEÚcMSG_USERAUTH_GSSAPI_RESPONSEÚcMSG_USERAUTH_GSSAPI_TOKENÚcMSG_USERAUTH_GSSAPI_MICÚMSG_USERAUTH_GSSAPI_RESPONSEÚMSG_USERAUTH_GSSAPI_TOKENÚMSG_USERAUTH_GSSAPI_ERRORÚMSG_USERAUTH_GSSAPI_ERRTOKÚMSG_USERAUTH_GSSAPI_MICÚ	MSG_NAMESÚcMSG_USERAUTH_BANNER)ÚMessage)ÚbÚu)ÚSSHExceptionÚAuthenticationExceptionÚBadAuthenticationTypeÚPartialAuthentication)ÚInteractiveQuery)ÚGSSAuthÚGSS_EXCEPTIONSc                   óü   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d%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d„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"e#d!„ «       Z$e#d"„ «       Z%e#d#„ «       Z&y$)&ÚAuthHandlerzC
    Internal class to handle the mechanics of authentication.
    c                 óî   — t        j                  |«      | _        d | _        d| _        d | _        d| _        d | _        d | _        d | _	        d | _
        d | _        d | _        d| _        d | _        d| _        y )NFÚ r   T)ÚweakrefÚproxyÚ	transportÚusernameÚauthenticatedÚ
auth_eventÚauth_methodÚbannerÚpasswordÚprivate_keyÚinteractive_handlerÚ
submethodsÚauth_usernameÚauth_fail_countÚgss_hostÚgss_deleg_creds)Úselfr6   s     úV/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/paramiko/auth_handler.pyÚ__init__zAuthHandler.__init__R   st   € Ü Ÿ™ yÓ1ˆŒØˆŒØ"ˆÔØˆŒØˆÔØˆŒØˆŒØˆÔØ#'ˆÔ ØˆŒà!ˆÔØ ˆÔàˆŒØ#ˆÕó    c                 ó4   —  | j                   j                  |Ž S ©N)r6   Ú_log)rD   Úargss     rE   rJ   zAuthHandler._logd   s   € Ø"ˆt�~‰~×"Ñ" DÐ)Ð)rG   c                 ó   — | j                   S rI   )r8   ©rD   s    rE   Úis_authenticatedzAuthHandler.is_authenticatedg   s   € Ø×!Ñ!Ð!rG   c                 ó^   — | j                   j                  r| j                  S | j                  S rI   )r6   Úserver_moder@   r7   rM   s    rE   Úget_usernamezAuthHandler.get_usernamej   s%   € Ø�>‰>×%Ò%Ø×%Ñ%Ð%à—=‘=Ð rG   c                 ó2  — | j                   j                  j                  «        	 || _        d| _        || _        | j                  «        | j                   j                  j                  «        y # | j                   j                  j                  «        w xY w©NÚnone©r6   ÚlockÚacquirer9   r:   r7   Ú_request_authÚrelease©rD   r7   Úevents      rE   Ú	auth_nonezAuthHandler.auth_nonep   sl   € Ø�‰×Ñ×#Ñ#Ô%ð	*Ø#ˆDŒOØ%ˆDÔØ$ˆDŒMØ×ÑÔ à�N‰N×Ñ×'Ñ'Õ)øˆD�N‰N×Ñ×'Ñ'Õ)úó   ¦%A0 Á0&Bc                 ó@  — | j                   j                  j                  «        	 || _        d| _        || _        || _        | j                  «        | j                   j                  j                  «        y # | j                   j                  j                  «        w xY w)NÚ	publickey)	r6   rV   rW   r9   r:   r7   r=   rX   rY   )rD   r7   Úkeyr[   s       rE   Úauth_publickeyzAuthHandler.auth_publickeyz   st   € Ø�‰×Ñ×#Ñ#Ô%ð	*Ø#ˆDŒOØ*ˆDÔØ$ˆDŒMØ"ˆDÔØ×ÑÔ à�N‰N×Ñ×'Ñ'Õ)øˆD�N‰N×Ñ×'Ñ'Õ)úó   ¦,A7 Á7&Bc                 ó@  — | j                   j                  j                  «        	 || _        d| _        || _        || _        | j                  «        | j                   j                  j                  «        y # | j                   j                  j                  «        w xY w)Nr<   )	r6   rV   rW   r9   r:   r7   r<   rX   rY   )rD   r7   r<   r[   s       rE   Úauth_passwordzAuthHandler.auth_password…   ss   € Ø�‰×Ñ×#Ñ#Ô%ð	*Ø#ˆDŒOØ)ˆDÔØ$ˆDŒMØ$ˆDŒMØ×ÑÔ à�N‰N×Ñ×'Ñ'Õ)øˆD�N‰N×Ñ×'Ñ'Õ)úrb   c                 óN  — | j                   j                  j                  «        	 || _        d| _        || _        || _        || _        | j                  «        | j                   j                  j                  «        y# | j                   j                  j                  «        w xY w)úK
        response_list = handler(title, instructions, prompt_list)
        úkeyboard-interactiveN)
r6   rV   rW   r9   r:   r7   r>   r?   rX   rY   )rD   r7   Úhandlerr[   r?   s        rE   Úauth_interactivezAuthHandler.auth_interactive�   s}   € ð 	�‰×Ñ×#Ñ#Ô%ð	*Ø#ˆDŒOØ5ˆDÔØ$ˆDŒMØ'.ˆDÔ$Ø(ˆDŒOØ×ÑÔ à�N‰N×Ñ×'Ñ'Õ)øˆD�N‰N×Ñ×'Ñ'Õ)úó   ¦3A> Á>&B$c                 óN  — | j                   j                  j                  «        	 || _        d| _        || _        || _        || _        | j                  «        | j                   j                  j                  «        y # | j                   j                  j                  «        w xY w)Núgssapi-with-mic)
r6   rV   rW   r9   r:   r7   rB   rC   rX   rY   )rD   r7   rB   rC   r[   s        rE   Úauth_gssapi_with_micz AuthHandler.auth_gssapi_with_micŸ   s{   € Ø�‰×Ñ×#Ñ#Ô%ð	*Ø#ˆDŒOØ0ˆDÔØ$ˆDŒMØ$ˆDŒMØ#2ˆDÔ Ø×ÑÔ à�N‰N×Ñ×'Ñ'Õ)øˆD�N‰N×Ñ×'Ñ'Õ)úrj   c                 ó2  — | j                   j                  j                  «        	 || _        d| _        || _        | j                  «        | j                   j                  j                  «        y # | j                   j                  j                  «        w xY w)Núgssapi-keyexrU   rZ   s      rE   Úauth_gssapi_keyexzAuthHandler.auth_gssapi_keyex«   sl   € Ø�‰×Ñ×#Ñ#Ô%ð	*Ø#ˆDŒOØ-ˆDÔØ$ˆDŒMØ×ÑÔ à�N‰N×Ñ×'Ñ'Õ)øˆD�N‰N×Ñ×'Ñ'Õ)úr]   c                 óR   — | j                   �| j                   j                  «        y y rI   )r9   ÚsetrM   s    rE   ÚabortzAuthHandler.abortµ   s!   € Ø�?‰?Ð&Ø�O‰O×ÑÕ!ð 'rG   c                 óš   — t        «       }|j                  t        «       |j                  d«       | j                  j                  |«       y ©Nússh-userauth)r&   Úadd_byter   Ú
add_stringr6   Ú_send_message©rD   Úms     rE   rX   zAuthHandler._request_auth»   s4   € Ü‹IˆØ	�
‰
Ô'Ô(Ø	�‰�^Ô$Ø�‰×$Ñ$ QÕ'rG   c                 ó  — t        «       }|j                  t        «       |j                  t        «       |j                  d«       |j                  d«       | j                  j                  |«       | j                  j                  «        y )NzService not availableÚen)	r&   rw   r   Úadd_intr   rx   r6   ry   Úcloserz   s     rE   Ú!_disconnect_service_not_availablez-AuthHandler._disconnect_service_not_availableÁ   s]   € Ü‹IˆØ	�
‰
”?Ô#Ø	�	‰	Ô2Ô3Ø	�‰Ð,Ô-Ø	�‰�TÔØ�‰×$Ñ$ QÔ'Ø�‰×ÑÕrG   c                 ó  — t        «       }|j                  t        «       |j                  t        «       |j                  d«       |j                  d«       | j                  j                  |«       | j                  j                  «        y )NzNo more auth methods availabler}   )	r&   rw   r   r~   r   rx   r6   ry   r   rz   s     rE   Ú_disconnect_no_more_authz$AuthHandler._disconnect_no_more_authÊ   s]   € Ü‹IˆØ	�
‰
”?Ô#Ø	�	‰	Ô;Ô<Ø	�‰Ð5Ô6Ø	�‰�TÔØ�‰×$Ñ$ QÔ'Ø�‰×ÑÕrG   c                 ó–   — |j                   r,|j                   j                  |j                   j                  fS |j                  «       |fS )z�
        Given any key, return its type/algorithm & bits-to-sign.

        Intended for input to or verification of, key signatures.
        )Úpublic_blobÚkey_typeÚkey_blobÚget_name)rD   r`   s     rE   Ú_get_key_type_and_bitsz"AuthHandler._get_key_type_and_bitsÓ   s;   € ð �?Š?Ø—?‘?×+Ñ+¨S¯_©_×-EÑ-EÐEÐEà—<‘<“> 3Ð&Ð&rG   c                 óž  — t        «       }|j                  | j                  j                  «       |j	                  t
        «       |j                  |«       |j                  |«       |j                  d«       |j                  d«       | j                  |«      \  }}|j                  |«       |j                  |«       |j                  «       S )Nr_   T)	r&   rx   r6   Ú
session_idrw   r   Úadd_booleanrˆ   Úasbytes)rD   r`   Úservicer7   Ú	algorithmr{   Ú_Úbitss           rE   Ú_get_session_blobzAuthHandler._get_session_blobß   s”   € Ü‹IˆØ	�‰�T—^‘^×.Ñ.Ô/Ø	�
‰
Ô(Ô)Ø	�‰�XÔØ	�‰�WÔØ	�‰�[Ô!Ø	�‰�dÔØ×-Ñ-¨cÓ2‰ˆˆ4Ø	�‰�YÔØ	�‰�TÔØ�y‰y‹{ÐrG   c                 ó”  — d }| j                   j                  �+t        j                  «       | j                   j                  z   }	 |j                  d«       | j                   j	                  «       sC| j                   j                  «       }|�t        |j                  t        «      rt        d«      }|‚|j                  «       rn%|�"|t        j                  «       k  rt        d«      ‚Œ¤| j                  «       sO| j                   j                  «       }|€t        d«      }t        |j                  t        «      r|j                  S |‚g S )Ngš™™™™™¹?z5Authentication failed: transport shut down or saw EOFzAuthentication timeout.zAuthentication failed.)r6   Úauth_timeoutÚtimeÚwaitÚ	is_activeÚget_exceptionÚ
issubclassÚ	__class__ÚEOFErrorr*   Úis_setrN   r,   Úallowed_types)rD   r[   Úmax_tsÚes       rE   Úwait_for_responsezAuthHandler.wait_for_responseì   s  € ØˆØ�>‰>×&Ñ&Ð2Ü—Y‘Y“[ 4§>¡>×#>Ñ#>Ñ>ˆFØØ�J‰J�sŒOØ—>‘>×+Ñ+Ô-Ø—N‘N×0Ñ0Ó2�Ø�I¤*¨Q¯[©[¼(Ô"CÜ/ØOó�Að �Ø�|‰|Œ~ØØÐ! f´·	±	³Ò&;Ü-Ð.GÓHÐHð ð ×$Ñ$Ô&Ø—‘×,Ñ,Ó.ˆAØˆyÜ+Ð,DÓE�ô ˜!Ÿ+™+Ô'<Ô=Ø—‘Ð&ØˆGØˆ	rG   c                 ó  — |j                  «       }| j                  j                  rÖ|dk(  rÑt        «       }|j	                  t
        «       |j                  |«       | j                  j                  |«       | j                  j                  j                  «       \  }}|r\t        «       }|j	                  t        «       |j                  |«       |j                  |«       | j                  j                  |«       y | j                  «        y ru   )Úget_textr6   rP   r&   rw   r   rx   ry   Úserver_objectÚ
get_bannerr%   r€   )rD   r{   r�   r;   Úlanguages        rE   Ú_parse_service_requestz"AuthHandler._parse_service_request
  sÀ   € Ø—*‘*“,ˆØ�>‰>×%Ò%¨7°nÒ+Dä“	ˆAØ�J‰JÔ*Ô+Ø�L‰L˜Ô!Ø�N‰N×(Ñ(¨Ô+Ø#Ÿ~™~×;Ñ;×FÑFÓHÑˆF�HÙÜ“I�Ø—
‘
Ô/Ô0Ø—‘˜VÔ$Ø—‘˜XÔ&Ø—‘×,Ñ,¨QÔ/Øà×.Ñ.Õ0rG   c                 óö   — | j                   j                  }|j                  dd«      |vr(d}| j                  t        |j                  |«      «       y  | j                   j                  |   t        |«      «      S )Nú-cert-v01@openssh.comr3   z<Auth rejected: pubkey algorithm '{}' unsupported or disabled)r6   Úpreferred_pubkeysÚreplacerJ   r   ÚformatÚ	_key_infor&   )rD   rŽ   ÚkeyblobÚoptionsÚerrs        rE   Ú_generate_key_from_requestz&AuthHandler._generate_key_from_request  sl   € à—.‘.×2Ñ2ˆØ×ÑÐ4°bÓ9ÀÑHàNð ð �I‰I”d˜CŸJ™J yÓ1Ô2ØØ2ˆt�~‰~×'Ñ'¨	Ñ2´7¸7Ó3CÓDÐDrG   c                 óŠ   — |d   }d}| j                  t        |j                  |«      «       | j                  t        d«       |S )Nr   zYServer did not send a server-sig-algs list; defaulting to our first preferred algo ({!r})z”NOTE: you may use the 'disabled_algorithms' SSHClient/Transport init kwarg to disable that or other algorithms if your server does not support them!)rJ   r	   rª   )rD   r…   Úmy_algosÚpubkey_algoÚmsgs        rE   Ú!_choose_fallback_pubkey_algorithmz-AuthHandler._choose_fallback_pubkey_algorithm(  sD   € à˜q‘kˆØiˆØ�	‰	”%˜Ÿ™ KÓ0Ô1Ø�	‰	Üð cô	
ð ÐrG   c                 ó‚  — d|vr|S | j                  t        dj                  |«      «       |j                  d«      rzt	        j
                  d| j                  j                  «      rPd}|| j                  _        | j                  t        d«       | j                  t        dj                  |«      «       |S | j                  j                  D �cg c]	  }d|v sŒ|‘Œ }}| j                  t        dj                  |«      «       |st        d	«      ‚t        | j                  j                  j                  d
t        d«      «      «      }d }|r´|j                  d«      }| j                  t        dj                  |«      «       t!        t#        |j$                  |«      «      }|r+|d   }| j                  t        dj                  |«      «       nD| j                  t        d«       d}t'        |j                  |«      «      ‚| j)                  ||«      }|j                  d«      r|dz  }|| j                  _        |S c c}w )NÚrsaz0Finalizing pubkey algorithm for key of type {!r}r§   z-OpenSSH_(?:[1-6]|7\.[0-7])zssh-rsa-cert-v01@openssh.comz)OpenSSH<7.8 + RSA cert = forcing ssh-rsa!z!Agreed upon {!r} pubkey algorithmzOur pubkey algorithm list: {}zFAn RSA key was specified, but no RSA pubkey algorithms are configured!zserver-sig-algsr3   ú,zServer-side algorithm list: {}r   z)No common pubkey algorithms exist! Dying.z=Unable to agree on a pubkey algorithm for signing a {!r} key!)rJ   r	   rª   ÚendswithÚreÚsearchr6   Úremote_versionÚ_agreed_pubkey_algorithmr¨   r)   r(   Úserver_extensionsÚgetr'   ÚsplitÚlistÚfilterÚ__contains__r*   r´   )	rD   r…   r²   Úxr±   Úserver_algo_strÚserver_algosÚ	agreementr®   s	            rE   Ú_finalize_pubkey_algorithmz&AuthHandler._finalize_pubkey_algorithm3  s  € à˜Ñ ØˆOØ�	‰	ÜØ>×EÑEØóô	
ð ×ÑÐ4Ô5¼"¿)¹)Ø*¨D¯N©N×,IÑ,Iô;
ð 9ˆKØ6AˆD�N‰NÔ3Ø�I‰I”eÐHÔIØ�I‰IÜÐ:×AÑAÀ+ÓNôð Ðð  $Ÿ~™~×?Ñ?ÖN˜!À5ÈAÂ:’AÐNˆÐNØ�	‰	”%Ð8×?Ñ?ÀÓIÔJáÜØXóð ô Ø�N‰N×,Ñ,×0Ñ0Ð1BÄAÀbÃEÓJó
ˆð ˆáØ*×0Ñ0°Ó5ˆLØ�I‰IÜÐ7×>Ñ>¸|ÓLôô œV L×$=Ñ$=¸xÓHÓIˆIÙØ'¨™l�Ø—	‘	ÜØ7×>Ñ>¸{ÓKõð
 —	‘	œ%Ð!LÔMð V�Ü-¨c¯j©j¸Ó.BÓCÐCð ×@Ñ@Ø˜(óˆKð ×ÑÐ4Ô5ØÐ2Ñ2ˆKØ2=ˆ�‰Ô/ØÐùòU Os   Ã	H<ÃH<c                 ó¢  — |j                  «       }|dk(  �rÆ| j                  t        d«       t        «       }|j	                  t
        «       |j                  | j                  «       |j                  d«       |j                  | j                  «       | j                  dk(  r9|j                  d«       t        | j                  «      }|j                  |«       �næ| j                  dk(  r¹|j                  d«       | j                  | j                  «      \  }}| j                  |«      }|j                  |«       |j                  |«       | j                  | j                  d| j                  |«      }| j                  j!                  ||«      }|j                  |«       �n| j                  dk(  r.|j                  d	«       |j                  | j"                  «       �ná| j                  d
k(  �rt%        | j                  | j&                  «      }	|j)                  |	j+                  «       «       | j,                  j/                  |«       | j,                  j0                  j3                  «       \  }
}|
t4        k(  r8| j7                  |«       | j,                  j0                  j3                  «       \  }
}|
t8        k(  �r�|j;                  «       }t        «       }|j	                  t<        «       	 |j                  |	j?                  | j@                  || j                  «      «       | j,                  j/                  |«       	 | j,                  j0                  j3                  «       \  }
}|
tF        k(  r‡|j;                  «       }	 |	j?                  | j@                  || j                  |«      }|€nLt        «       }|j	                  t<        «       |j                  |«       | j,                  jI                  |«       Œ¸t        «       }|j	                  tP        «       |j                  |	jS                  | j,                  jT                  «      «       �nv|
tV        k(  rtK        d«      ‚|
tX        k(  r\|j[                  «       }|j[                  «       }|j;                  «       }|j;                  «        tK        djM                  |||«      «      ‚|
t\        k(  r| j_                  |«       y tK        djM                  tN        |
   «      «      ‚| j                  dk(  r~| j,                  j`                  rh| j,                  jb                  }|je                  | j                  «       |jS                  | j,                  jT                  «      }|j                  |«       n4| j                  dk(  rn$tK        djM                  | j                  «      «      ‚| j,                  j/                  |«       y | j                  t        djM                  |«      «       y # tB        $ r}| jE                  |«      cY d }~S d }~ww xY w# tB        $ r}| jE                  |«      cY d }~S d }~ww xY w)Nrv   zuserauth is OKússh-connectionr<   Fr_   Trg   r3   rl   zReceived Package: {}zServer returned an error tokenzCGSS-API Error:
Major Status: {}
Minor Status: {}
Error Message: {}
ro   rT   zUnknown auth method "{}"z!Service request "{}" accepted (?))3r¡   rJ   r	   r&   rw   r   rx   r7   r:   r‹   r'   r<   rˆ   r=   rÇ   r‘   Úsign_ssh_datar?   r.   rC   Ú	add_bytesÚssh_gss_oidsr6   ry   Ú
packetizerÚread_messager   Ú_parse_userauth_bannerr   Ú
get_stringr   Ússh_init_sec_contextrB   r/   Ú_handle_local_gss_failurer    Úsend_messager)   rª   r$   r   Ússh_get_micrŠ   r"   r!   Úget_intr   Ú_parse_userauth_failureÚgss_kex_usedÚkexgss_ctxtÚset_username)rD   r{   r�   r<   r…   r�   rŽ   ÚblobÚsigÚsshgssÚptypeÚmechrž   Ú	srv_tokenÚ
next_tokenÚ
maj_statusÚ
min_statusÚerr_msgÚkexgssÚ	mic_tokens                       rE   Ú_parse_service_acceptz!AuthHandler._parse_service_accept{  s
  € Ø—*‘*“,ˆØ�nÓ$Ø�I‰I”eÐ-Ô.Ü“	ˆAØ�J‰JÔ,Ô-Ø�L‰L˜Ÿ™Ô'Ø�L‰LÐ)Ô*Ø�L‰L˜×)Ñ)Ô*Ø×Ñ :Ò-Ø—‘˜eÔ$Ü˜TŸ]™]Ó+�Ø—‘˜XÖ&Ø×!Ñ! [Ò0Ø—‘˜dÔ#Ø!%×!<Ñ!<¸T×=MÑ=MÓ!N‘�˜$Ø ×;Ñ;¸HÓE�	Ø—‘˜YÔ'Ø—‘˜TÔ"Ø×-Ñ-Ø×$Ñ$Ø$Ø—M‘MØó	�ð ×&Ñ&×4Ñ4°T¸9ÓE�Ø—‘˜SÖ!Ø×!Ñ!Ð%;Ò;Ø—‘˜RÔ Ø—‘˜TŸ_™_Ö-Ø×!Ñ!Ð%6Ó6Ü  ×!1Ñ!1°4×3GÑ3GÓH�Ø—‘˜F×/Ñ/Ó1Ô2à—‘×,Ñ,¨QÔ/ØŸ>™>×4Ñ4×AÑAÓC‘��qØÔ/Ò/Ø×/Ñ/°Ô2Ø#Ÿ~™~×8Ñ8×EÑEÓG‘H�E˜1ØÔ8Ó8ð Ÿ<™<›>�DÜ›	�AØ—J‘JÔ9Ô:ðAØŸ™Ø"×7Ñ7Ø $§¡¨t°T·]±]óôð —N‘N×0Ñ0°Ô3ØØ#'§>¡>×#<Ñ#<×#IÑ#IÓ#K™˜˜qØ Ô$=Ò=Ø()¯©«˜IðIØ-3×-HÑ-HØ$(§M¡MØ$(Ø$(§M¡MØ$-ó	." 
ð  *Ð1Ø %ä$+£I Ø !§
¡
Ô+EÔ FØ !§¡¨ZÔ 8Ø $§¡× ;Ñ ;¸AÔ >ð- ô6  ›	�AØ—J‘JÔ7Ô8à—L‘L ×!3Ñ!3°D·N±N×4MÑ4MÓ!NÖOØÔ8Ò8ô
 'Ð'GÓHÐHØÔ7Ò7Ø!"§¡£�JØ!"§¡£�JØŸl™l›n�GØ—L‘L”NÜ&ð÷ �FØ&¨
°Góóð ð Ô2Ò2Ø×0Ñ0°Ô3Øä&Ø.×5Ñ5´iÀÑ6FÓGóð ð × Ñ  NÒ2Ø—N‘N×/Ò/àŸ™×3Ñ3�Ø×#Ñ# D§M¡MÔ2Ø"×.Ñ.¨t¯~©~×/HÑ/HÓI�	Ø—‘˜YÕ'Ø×!Ñ! VÒ+Øä"Ø.×5Ñ5°d×6FÑ6FÓGóð ð �N‰N×(Ñ(¨Õ+à�I‰IÜÐ:×AÑAÀ'ÓJõøô[ *ò AØ#×=Ñ=¸aÓ@Õ@ûðAûô $2ò IØ'+×'EÑ'EÀaÓ'HÕ HûðIús<   Ë,6X Í?(X* Ø	X'ØX"ØX'Ø"X'Ø*	YØ3Y	ÙYÙ	Yc                 óÈ  — t        «       }|t        k(  rB| j                  t        dj	                  |«      «       |j                  t        «       d| _        n¯| j                  t        dj	                  |«      «       |j                  t        «       |j                  | j                  j                  j                  |«      «       |t        k(  r|j                  d«       n&|j                  d«       | xj                  dz  c_        | j                  j!                  |«       | j                  dk\  r| j#                  «        |t        k(  r| j                  j%                  «        y y )NzAuth granted ({}).TzAuth rejected ({}).Fé   é
   )r&   r
   rJ   r   rª   rw   r   r8   r   rx   r6   r¢   Úget_allowed_authsr   r‹   rA   ry   r‚   Ú_auth_trigger)rD   r7   ÚmethodÚresultr{   s        rE   Ú_send_auth_resultzAuthHandler._send_auth_result   s  € ä‹IˆØ”_Ò$Ø�I‰I”dÐ0×7Ñ7¸Ó?Ô@Ø�J‰JÔ,Ô-Ø!%ˆDÕà�I‰I”dÐ1×8Ñ8¸Ó@ÔAØ�J‰JÔ,Ô-Ø�L‰LØ—‘×,Ñ,×>Ñ>¸xÓHôð Ô2Ò2Ø—‘˜dÕ#à—‘˜eÔ$Ø×$Ò$¨Ñ)Õ$Ø�‰×$Ñ$ QÔ'Ø×Ñ 2Ò%Ø×)Ñ)Ô+Ø”_Ò$Ø�N‰N×(Ñ(Õ*ð %rG   c                 óÐ  — t        «       }|j                  t        «       |j                  |j                  «       |j                  |j
                  «       |j                  t        «       «       |j                  t        |j                  «      «       |j                  D ]*  }|j                  |d   «       |j                  |d   «       Œ, | j                  j                  |«       y )Nr   rè   )r&   rw   r   rx   ÚnameÚinstructionsÚbytesr~   ÚlenÚpromptsr‹   r6   ry   )rD   Úqr{   Úps       rE   Ú_interactive_queryzAuthHandler._interactive_query  sŸ   € ä‹IˆØ	�
‰
Ô-Ô.Ø	�‰�Q—V‘VÔØ	�‰�Q—^‘^Ô$Ø	�‰”U“WÔØ	�	‰	”#�a—i‘i“.Ô!Ø—‘ò 	 ˆAØ�L‰L˜˜1™ÔØ�M‰M˜!˜A™$Õð	 ð 	�‰×$Ñ$ QÕ'rG   c           	      ó|  — | j                   j                  s]t        «       }|j                  t        «       |j                  d«       |j                  d«       | j                   j                  |«       y | j                  ry |j                  «       }|j                  «       }|j                  «       }| j                  t        dj                  |||«      «       |dk7  r| j                  «        y | j                  �6| j                  |k7  r'| j                  t        d«       | j!                  «        y || _        | j                   j"                  j%                  «       }|dk(  r'| j                   j"                  j'                  |«      }�nE|dk(  r�|j)                  «       }|j+                  «       }	 |j-                  d«      }|rA| j                  t        d«       |j+                  «       }		 |	j-                  dd	«      }	t0        }�nË| j                   j"                  j3                  ||«      }�n£|d
k(  �rC|j)                  «       }
|j                  «       }|j+                  «       }	 | j5                  ||«      }|€| j!                  «        y | j                   j"                  jC                  ||«      }|t0        k7  �r|
s]t        «       }|j                  tD        «       |j                  |«       |j                  |«       | j                   j                  |«       y t        |j+                  «       «      }| jG                  ||||«      }|jI                  ||«      �sx| j                  t8        d«       t0        }�nZ|dk(  rY|jK                  «       }| j                   j"                  jM                  ||«      }tO        |tP        «      �r| jS                  |«       y |dk(  �r*|�r'tU        |«      }|jW                  «       }|dkD  r&| j                  t8        d«       | j!                  «        |jK                  «       }|jY                  |«      }|s&| j                  t8        d«       | j!                  «        |j[                  d«      }t        «       }|j                  t\        «       |j_                  |«       ta        | |«      | j                   _1        td        tf        th        f| j                   _5        | j                   j                  |«       y |dk(  r¢|r |jK                  «       }| j                   jl                  }|€t0        }| jo                  |||«       	 |jq                  || j                   jr                  | j                  «       tt        }| j                   j"                  jw                  ||«       n%| j                   j"                  j'                  |«      }| jo                  |||«       y # t.        $ r Y �Œ.w xY w# t.        $ r Y �Œw xY w# t6        $ r;}| j                  t8        dj                  t;        |«      «      «       d }Y d }~�ŒÍd }~wt<        $ rI}d}| j                  t8        |j                  |j>                  j@                  |«      «       d }Y d }~�Œd }~ww xY w# t<        $ r t0        }| jo                  |||«       ‚ w xY w)NrT   Fz.Auth request (type={}) service={}, username={}rÉ   zKAuth rejected because the client attempted to change username in mid-flightr<   zUTF-8z+Auth request to change passwords (rejected)r©   r_   zAuth rejected: public key: {}z9Auth rejected: unsupported or mangled public key ({}: {})z Auth rejected: invalid signaturerg   rl   rè   z8Disconnect: Received more than one GSS-API OID mechanismz5Disconnect: Received an invalid GSS-API OID mechanismÚserverro   )<r6   rP   r&   rw   r   rx   r‹   ry   r8   r¡   rJ   r	   rª   r€   r@   r   r‚   r¢   Úenable_auth_gssapiÚcheck_auth_noneÚget_booleanÚ
get_binaryÚdecodeÚUnicodeErrorr   Úcheck_auth_passwordr¯   r)   r   ÚstrÚ	Exceptionr™   Ú__name__Úcheck_auth_publickeyr   r‘   Úverify_ssh_sigrÐ   Úcheck_auth_interactiveÚ
isinstancer-   r÷   r.   rÕ   Ússh_check_mechrÌ   r   rË   ÚGssapiWithMicAuthHandlerÚauth_handlerr    r   r   Ú_expected_packetrØ   rî   Ússh_check_micrŠ   r
   Úcheck_auth_gssapi_keyex)rD   r{   r7   r�   rì   Úgss_authrí   Ú	changereqr<   ÚnewpasswordÚsig_attachedrŽ   r¬   r`   rž   r³   rÛ   rÚ   r?   rÜ   ÚmechsÚdesired_mechÚmech_okÚsupported_mechrå   s                            rE   Ú_parse_userauth_requestz#AuthHandler._parse_userauth_request%  s­  € Ø�~‰~×)Ò)ä“	ˆAØ�J‰JÔ,Ô-Ø�L‰L˜Ô Ø�M‰M˜%Ô Ø�N‰N×(Ñ(¨Ô+ØØ×ÒàØ—:‘:“<ˆØ—*‘*“,ˆØ—‘“ˆØ�	‰	ÜØ<×CÑCØ˜ óô	
ð Ð&Ò&Ø×2Ñ2Ô4ØØ×ÑÐ*Ø×Ñ (Ò*à�I‰IÜØ]ôð ×)Ñ)Ô+ØØ%ˆÔà—>‘>×/Ñ/×BÑBÓDˆà�VÒØ—^‘^×1Ñ1×AÑAÀ(ÓKŠFØ�zÒ!ØŸ™›ˆIØ—|‘|“~ˆHðØ#Ÿ?™?¨7Ó3�ñ
 ð —	‘	œ%Ð!NÔOØŸl™l›n�ðØ"-×"4Ñ"4°W¸iÓ"H�Kô %’àŸ™×5Ñ5×IÑIØ˜hó’ð �{Ó"ØŸ=™=›?ˆLð Ÿ
™
›ˆIØ—l‘l“nˆGðØ×5Ñ5°iÀÓI�ð ˆ{Ø×-Ñ-Ô/Øà—^‘^×1Ñ1×FÑFØ˜#óˆFð œÓ$á#ô  ›	�AØ—J‘JÔ2Ô3Ø—L‘L Ô+Ø—L‘L Ô)Ø—N‘N×0Ñ0°Ô3ØÜ˜aŸl™l›nÓ-�Ø×-Ñ-Ø˜ (¨Ió�ð ×)Ñ)¨$°Õ4Ø—I‘IœdÐ$FÔGÜ(’FØÐ-Ò-ØŸ™›ˆJØ—^‘^×1Ñ1×HÑHØ˜*óˆFô ˜&Ô"2Õ3à×'Ñ'¨Ô/ØØÐ(Ó(ªXÜ˜V“_ˆFð —I‘I“KˆEð �qŠyØ—	‘	ÜØNôð ×-Ñ-Ô/ØŸ<™<›>ˆLØ×+Ñ+¨LÓ9ˆGáØ—	‘	ÜØKôð ×-Ñ-Ô/à#×0Ñ0°Ó:ˆNô “	ˆAØ�J‰JÔ4Ô5Ø�K‰K˜Ô'Ü*BØ�fó+ˆD�N‰NÔ'ô *Ü$Ü#ð/ˆD�N‰NÔ+ð
 �N‰N×(Ñ(¨Ô+ØØ�~Ò%©(ØŸ™›ˆIØ—^‘^×/Ñ/ˆFØˆ~ä$�Ø×&Ñ& x°¸Ô@ðØ×$Ñ$Ø˜tŸ~™~×8Ñ8¸$×:LÑ:Lôô %ˆFØ�N‰N×(Ñ(×@Ñ@Ø˜&õð —^‘^×1Ñ1×AÑAÀ(ÓKˆFà×Ñ˜x¨°Õ8øôG  ò ò ðûô $ò Úðûô   ò Ø—	‘	œ$Ð ?× FÑ FÄsÈ1ÃvÓ NÔOØ–ûÜò ØQ�Ø—	‘	œ$ §
¡
¨1¯;©;×+?Ñ+?ÀÓ CÔDØ–ûðûôr ò Ü$�Ø×&Ñ& x°¸Ô@ØðúsT   Æ-W  Ç'W0 É X  Õ	1Z × 	W-×,W-×0	W=×<W=Ø 	ZØ	0X?Ø?ZÙ>ZÚZÚ$Z;c                 óò   — | j                  t        dj                  | j                  «      «       d| _        | j
                  j                  «        | j                  �| j                  j                  «        y y )NzAuthentication ({}) successful!T)	rJ   r   rª   r:   r8   r6   rë   r9   rr   rz   s     rE   Ú_parse_userauth_successz#AuthHandler._parse_userauth_successÖ  s^   € Ø�	‰	ÜÐ3×:Ñ:¸4×;KÑ;KÓLô	
ð "ˆÔØ�‰×$Ñ$Ô&Ø�?‰?Ð&Ø�O‰O×ÑÕ!ð 'rG   c                 ó˜  — |j                  «       }|j                  «       }|rS| j                  t        d«       | j                  t        dt        |«      z   «       t        |«      | j                  _        n | j                  |vrcdj                  | j                  «      dj                  |«      fD ]  }| j                  t        |«       Œ t        d|«      | j                  _        n/| j                  t        dj                  | j                  «      «       d| _        d | _        | j                  �| j                  j                  «        y y )NzAuthentication continues...z	Methods: z'Authentication type ({}) not permitted.zAllowed methods: {}zBad authentication typeúAuthentication ({}) failed.F)Úget_listrü   rJ   r   r	   r  r,   r6   Úsaved_exceptionr:   rª   r+   r8   r7   r9   rr   )rD   r{   ÚauthlistÚpartialr³   s        rE   rÖ   z#AuthHandler._parse_userauth_failureß  s  € Ø—:‘:“<ˆð —-‘-“/ˆÙØ�I‰I”dÐ9Ô:Ø�I‰I”e˜[¬3¨x«=Ñ8Ô9Ü-BÀ8Ó-LˆD�N‰NÕ*Ø×Ñ XÑ-à9×@Ñ@Ø×$Ñ$óð &×,Ñ,¨XÓ6ð	ò &�ð —	‘	œ% Õ%ð&ô .CØ)¨8ó.ˆD�N‰NÕ*ð �I‰IÜÐ3×:Ñ:¸4×;KÑ;KÓLôð #ˆÔØˆŒØ�?‰?Ð&Ø�O‰O×ÑÕ!ð 'rG   c                 ó|   — |j                  «       }|| _        | j                  t        dj	                  |«      «       y )NzAuth banner: {})rÐ   r;   rJ   r   rª   )rD   r{   r;   s      rE   rÏ   z"AuthHandler._parse_userauth_bannerý  s.   € Ø—‘“ˆØˆŒØ�	‰	”$Ð)×0Ñ0°Ó8Õ9rG   c                 ó8  — | j                   dk7  rt        d«      ‚|j                  «       }|j                  «       }|j                  «        |j	                  «       }g }t        |«      D ]1  }|j                  |j                  «       |j                  «       f«       Œ3 | j                  |||«      }t        «       }|j                  t        «       |j                  t        |«      «       |D ]  }|j                  |«       Œ | j                  j!                  |«       y )Nrg   z Illegal info request from server)r:   r)   r¡   rý   rÕ   ÚrangeÚappendrü   r>   r&   rw   r   r~   ró   rx   r6   ry   )	rD   r{   Útitlerñ   rô   Úprompt_listÚiÚresponse_listÚrs	            rE   Ú_parse_userauth_info_requestz(AuthHandler._parse_userauth_info_request  sê   € Ø×ÑÐ5Ò5ÜÐAÓBÐBØ—
‘
“ˆØ—z‘z“|ˆØ	�‰ŒØ—)‘)“+ˆØˆÜ�w“ò 	@ˆAØ×Ñ §
¡
£¨a¯m©m«oÐ>Õ?ð	@à×0Ñ0Ø�< ó
ˆô ‹IˆØ	�
‰
Ô.Ô/Ø	�	‰	”#�mÓ$Ô%Øò 	ˆAØ�L‰L˜�Oð	à�‰×$Ñ$ QÕ'rG   c                 ó�  — | j                   j                  st        d«      ‚|j                  «       }g }t	        |«      D ]!  }|j                  |j                  «       «       Œ# | j                   j                  j                  |«      }t        |t        «      r| j                  |«       y | j                  | j                  d|«       y )Nz!Illegal info response from serverrg   )r6   rP   r)   rÕ   r!  r"  r¡   r¢   Úcheck_auth_interactive_responser  r-   r÷   rî   r@   )rD   r{   ÚnÚ	responsesr%  rí   s         rE   Ú_parse_userauth_info_responsez)AuthHandler._parse_userauth_info_response  s©   € Ø�~‰~×)Ò)ÜÐBÓCÐCØ�I‰I‹KˆØˆ	Ü�q“ò 	+ˆAØ×Ñ˜QŸZ™Z›\Õ*ð	+à—‘×-Ñ-×MÑMØó
ˆô �fÔ.Ô/à×#Ñ# FÔ+ØØ×ÑØ×ÑÐ 6¸õ	
rG   c                 ó6  — || j                   _        | j                  t        dj	                  |«      «       | j                  t
        dj	                  | j                  «      «       d| _        d | _        | j                  �| j                  j                  «        y )NzGSSAPI failure: {}r  F)r6   r  rJ   r	   rª   r   r:   r8   r7   r9   rr   )rD   rž   s     rE   rÒ   z%AuthHandler._handle_local_gss_failure*  st   € Ø)*ˆ�‰Ô&Ø�	‰	”%Ð-×4Ñ4°QÓ7Ô8Ø�	‰	”$Ð5×<Ñ<¸T×=MÑ=MÓNÔOØ"ˆÔØˆŒØ�?‰?Ð&Ø�O‰O×ÑÔ!ØrG   c                 óf   — t         | j                  t        | j                  t        | j
                  iS rI   )r   r¥   r   r  r   r-  rM   s    rE   Ú_server_handler_tablez!AuthHandler._server_handler_table<  s/   € ô   ×!<Ñ!<Ü  $×">Ñ">Ü&¨×(JÑ(Jð
ð 	
rG   c           
      ó¦   — t         | j                  t        | j                  t        | j
                  t        | j                  t        | j                  iS rI   )
r   ræ   r   r  r   rÖ   r   rÏ   r   r(  rM   s    rE   Ú_client_handler_tablez!AuthHandler._client_handler_tableH  sE   € ô  × :Ñ :Ü  $×">Ñ">Ü  $×">Ñ">Ü ×!<Ñ!<Ü% t×'HÑ'Hð
ð 	
rG   c                 ó^   — | j                   j                  r| j                  S | j                  S rI   )r6   rP   r0  r2  rM   s    rE   Ú_handler_tablezAuthHandler._handler_tableT  s'   € à�>‰>×%Ò%Ø×-Ñ-Ð-à×-Ñ-Ð-rG   N©r3   )'r  Ú
__module__Ú__qualname__Ú__doc__rF   rJ   rN   rQ   r\   ra   rd   ri   rm   rp   rs   rX   r€   r‚   rˆ   r‘   rŸ   r¥   r¯   r´   rÇ   ræ   rî   r÷   r  r  rÖ   rÏ   r(  r-  rÒ   Úpropertyr0  r2  r4  © rG   rE   r1   r1   M   så   „ ñò$ò$*ò"ò!ò*ò	*ò	*ó*ò
*ò*ò"ò(òòò
'òòò<1ò&	Eò	òFòPCòJ+ò0(òo9òb"ò"ò<:ò(ò*
ò$ð$ ñ
ó ð
ð ñ
ó ð
ð ñ.ó ñ.rG   r1   c                   ó¢   — e Zd ZdZdZd„ Zd„ Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zd	„ Zd
„ Zd„ Zd„ Zd„ ZeeeeeeeeiZed„ «       Zy)r	  z°A specialized Auth handler for gssapi-with-mic

    During the GSSAPI token exchange we need a modified dispatch table,
    because the packet type numbers are not unique.
    rl   c                 ó    — || _         || _        y rI   )Ú	_delegaterÜ   )rD   ÚdelegaterÜ   s      rE   rF   z!GssapiWithMicAuthHandler.__init__e  s   € Ø!ˆŒØˆ�rG   c                 óV   — | j                  «        | j                  j                  «       S rI   )Ú_restore_delegate_auth_handlerr=  rs   rM   s    rE   rs   zGssapiWithMicAuthHandler.aborti  s!   € Ø×+Ñ+Ô-Ø�~‰~×#Ñ#Ó%Ð%rG   c                 ó.   — | j                   j                  S rI   )r=  r6   rM   s    rE   r6   z"GssapiWithMicAuthHandler.transportm  s   € à�~‰~×'Ñ'Ð'rG   c                 ó.   — | j                   j                  S rI   )r=  rî   rM   s    rE   rî   z*GssapiWithMicAuthHandler._send_auth_resultq  s   € à�~‰~×/Ñ/Ð/rG   c                 ó.   — | j                   j                  S rI   )r=  r@   rM   s    rE   r@   z&GssapiWithMicAuthHandler.auth_usernameu  s   € à�~‰~×+Ñ+Ð+rG   c                 ó.   — | j                   j                  S rI   )r=  rB   rM   s    rE   rB   z!GssapiWithMicAuthHandler.gss_hosty  s   € à�~‰~×&Ñ&Ð&rG   c                 ó:   — | j                   | j                  _        y rI   )r=  r6   r
  rM   s    rE   r@  z7GssapiWithMicAuthHandler._restore_delegate_auth_handler}  s   € Ø&*§n¡nˆ�‰Õ#rG   c                 ó(  — |j                  «       }| j                  }	 |j                  | j                  || j                  «      }|�lt        «       }|j                  t        «       |j                  |«       t         t"        t$        f| j                  _        | j                  j)                  |«       y y # t
        $ rT}|| j                  _        t        }| j                  «        | j                  | j                  | j                  |«       ‚ d }~ww xY wrI   )rÐ   rÜ   Ússh_accept_sec_contextrB   r@   r  r6   r  r   r@  rî   rì   r&   rw   r   rx   r    r#   r   r  ry   )rD   r{   Úclient_tokenrÜ   Útokenrž   rí   s          rE   Ú_parse_userauth_gssapi_tokenz5GssapiWithMicAuthHandler._parse_userauth_gssapi_token€  sä   € Ø—|‘|“~ˆð —‘ˆð		Ø×1Ñ1Ø—‘˜|¨T×-?Ñ-?óˆEð ÐÜ“	ˆAØ�J‰JÔ1Ô2Ø�L‰L˜Ôä)Ü'Ü$ð/ˆD�N‰NÔ+ð
 �N‰N×(Ñ(¨Õ+ð øô ò 	Ø-.ˆD�N‰NÔ*Ü ˆFØ×/Ñ/Ô1Ø×"Ñ" 4×#5Ñ#5°t·{±{ÀFÔKØûð	ús   ž'B4 Â4	DÂ=ADÄDc                 óâ  — |j                  «       }| j                  }| j                  }| j                  «        	 |j	                  || j
                  j                  |«       t        }| j
                  j                  j                  ||«       | j                  || j                  |«       y # t        $ r:}|| j
                  _        t        }| j                  || j                  |«       ‚ d }~ww xY wrI   )rÐ   rÜ   r@   r@  r  r6   rŠ   r  r  r   rî   rì   r
   r¢   Úcheck_auth_gssapi_with_mic)rD   r{   rå   rÜ   r7   rž   rí   s          rE   Ú_parse_userauth_gssapi_micz3GssapiWithMicAuthHandler._parse_userauth_gssapi_micš  sÉ   € Ø—L‘L“Nˆ	Ø—‘ˆØ×%Ñ%ˆØ×+Ñ+Ô-ð	Ø× Ñ Ø˜4Ÿ>™>×4Ñ4°hôô !ˆØ�‰×$Ñ$×?Ñ?Ø�fô	
ð 	×Ñ˜x¨¯©°fÕ=øô ò 	Ø-.ˆD�N‰NÔ*Ü ˆFØ×"Ñ" 8¨T¯[©[¸&ÔAØûð		ús   º'B+ Â+	C.Â45C)Ã)C.c                 óX   — | j                  «        | j                  j                  |«      S rI   )r@  r=  r¥   rz   s     rE   r¥   z/GssapiWithMicAuthHandler._parse_service_request²  s#   € Ø×+Ñ+Ô-Ø�~‰~×4Ñ4°QÓ7Ð7rG   c                 óX   — | j                  «        | j                  j                  |«      S rI   )r@  r=  r  rz   s     rE   r  z0GssapiWithMicAuthHandler._parse_userauth_request¶  s#   € Ø×+Ñ+Ô-Ø�~‰~×5Ñ5°aÓ8Ð8rG   c                 ó   — | j                   S rI   )Ú(_GssapiWithMicAuthHandler__handler_tablerM   s    rE   r4  z'GssapiWithMicAuthHandler._handler_tableÁ  s   € ð ×#Ñ#Ð#rG   N)r  r6  r7  r8  rì   rF   rs   r9  r6   rî   r@   rB   r@  rJ  rM  r¥   r  r   r   r    r#   rQ  r4  r:  rG   rE   r	  r	  \  s¶   „ ñð €Fòò&ð ñ(ó ð(ð ñ0ó ð0ð ñ,ó ð,ð ñ'ó ð'ò5ò,ò4>ò08ò9ð
 	Ð3ØÐ5Ø!Ð#?ØÐ!;ð	€Oð ñ$ó ñ$rG   r	  c                   óT   ‡ — e Zd ZdZeˆ fd„«       Zd	d„Zd„ Zd„ Zd„ Z	d
d„Z
d„ Zˆ xZS )ÚAuthOnlyHandlerzU
    AuthHandler, and just auth, no service requests!

    .. versionadded:: 3.2
    c                 óF   •— t         ‰| �  j                  «       }|t        = |S rI   )Úsuperr2  Úcopyr   )rD   Úmy_tabler™   s     €rE   r2  z%AuthOnlyHandler._client_handler_tableÓ  s$   ø€ ä‘7Ñ0×5Ñ5Ó7ˆØÔ'Ð(ØˆrG   c                 óÆ  — || _         || _        t        «       }|j                  t        «       |j                  |«       |j                  d«       |j                  |«        ||«       | j                  j                  5  | j                  j                  |«       ddd«       t        j                  «       | _        | j                  | j                  «      S # 1 sw Y   Œ=xY w)a³  
        Submit a userauth request message & wait for response.

        Performs the transport message send call, sets self.auth_event, and
        will lock-n-block as necessary to both send, and wait for response to,
        the USERAUTH_REQUEST.

        Most callers will want to supply a callback to ``finish_message``,
        which accepts a Message ``m`` and may call mutator methods on it to add
        more fields.
        rÉ   N)r:   r7   r&   rw   r   rx   r6   rV   ry   Ú	threadingÚEventr9   rŸ   )rD   r7   rì   Úfinish_messager{   s        rE   Úsend_auth_requestz!AuthOnlyHandler.send_auth_requestÙ  s¯   € ð "ˆÔØ ˆŒä‹IˆØ	�
‰
Ô(Ô)Ø	�‰�XÔØ	�‰Ð%Ô&Ø	�‰�VÔá�qÔð �^‰^× Ñ ñ 	,Ø�N‰N×(Ñ(¨Ô+÷	,ô $Ÿ/™/Ó+ˆŒØ×%Ñ% d§o¡oÓ6Ð6÷	,ð 	,ús   Á?CÃC c                 ó&   — | j                  |d«      S rS   ©r\  )rD   r7   s     rE   r\   zAuthOnlyHandler.auth_none  s   € Ø×%Ñ% h°Ó7Ð7rG   c                 ó²   ‡‡‡‡— | j                  ‰«      \  }Š| j                  |«      Š| j                  ‰d|‰«      Šˆˆˆˆfd„}| j                  |d|«      S )NrÉ   c                 ó®   •— | j                  d«       | j                  ‰«       | j                  ‰«       | j                  ‰j                  ‰‰«      «       y )NT)r‹   rx   rÊ   )r{   rŽ   r�   rÚ   r`   s    €€€€rE   Úfinishz.AuthOnlyHandler.auth_publickey.<locals>.finish  sB   ø€ ð
 �M‰M˜$ÔØ�L‰L˜Ô#Ø�L‰L˜ÔØ�L‰L˜×*Ñ*¨4°Ó;Õ<rG   r_   )rˆ   rÇ   r‘   r\  )rD   r7   r`   r…   ra  rŽ   r�   rÚ   s     `  @@@rE   ra   zAuthOnlyHandler.auth_publickey  s_   û€ Ø×4Ñ4°SÓ9‰ˆ�$Ø×3Ñ3°HÓ=ˆ	Ø×%Ñ%ØØØØó	
ˆ÷	=ð ×%Ñ% h°¸VÓDÐDrG   c                 ó4   ‡— ˆfd„}| j                  |d|«      S )Nc                 ó\   •— | j                  d«       | j                  t        ‰«      «       y )NF)r‹   rx   r'   )r{   r<   s    €rE   ra  z-AuthOnlyHandler.auth_password.<locals>.finish  s!   ø€ ð �M‰M˜%Ô Ø�L‰Lœ˜8›Õ%rG   r<   r^  )rD   r7   r<   ra  s     ` rE   rd   zAuthOnlyHandler.auth_password  s   ø€ ô	&ð ×%Ñ% h°
¸FÓCÐCrG   c                 óP   ‡— d| _         || _        ˆfd„}| j                  |d|«      S )rf   Úkeyboard_interactivec                 óJ   •— | j                  d«       | j                  ‰«       y )Nr3   )rx   )r{   r?   s    €rE   ra  z0AuthOnlyHandler.auth_interactive.<locals>.finish/  s   ø€ ð �L‰L˜ÔØ�L‰L˜Õ$rG   rg   )r:   r>   r\  )rD   r7   rh   r?   ra  s      ` rE   ri   z AuthOnlyHandler.auth_interactive%  s2   ø€ ð 2ˆÔØ#*ˆÔ ô	%ð ×%Ñ% hÐ0FÈÓOÐOrG   c                 óÐ   — d}| j                  t        |«       |j                  dd«      }||v s||v r||v r|n|}d|›d�}|}n|d   }|›d|›�}| j                  t        |«       |S )NzdServer did not send a server-sig-algs list; defaulting to something in our preferred algorithms listr§   r3   zCurrent key type, z&, is in our preferred list; using thatr   z3 not in our list - trying first list item instead, )rJ   r	   r©   )rD   r…   r±   r³   Únoncert_key_typeÚactualÚalgos          rE   r´   z1AuthOnlyHandler._choose_fallback_pubkey_algorithm8  s‹   € ØtˆØ�	‰	”%˜ÔØ#×+Ñ+Ð,CÀRÓHÐØ�xÑÐ#3°xÑ#?Ø!)¨XÑ!5‘XÐ;KˆFØ& v jÐ0VÐWˆCØ‰Dà˜A‘;ˆDØ�LÐ SÐTXÐS[Ð\ˆCØ�	‰	”%˜ÔØˆrG   rI   r5  )r  r6  r7  r8  r9  r2  r\  r\   ra   rd   ri   r´   Ú__classcell__)r™   s   @rE   rS  rS  È  s>   ø„ ñð óó ðó
'7òR8òEò,DóPö&rG   rS  );r8  r4   rY  r”   r¹   Úparamiko.commonr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   Úparamiko.messager&   Úparamiko.utilr'   r(   Úparamiko.ssh_exceptionr)   r*   r+   r,   Úparamiko.serverr-   Úparamiko.ssh_gssr.   r/   r1   r	  rS  r:  rG   rE   ú<module>rr     s�   ðñ&ó Û Û Û 	÷$÷ $÷ $÷ $÷ $÷ $÷ $÷ $÷ $ñ $õJ %ß ÷ó õ -ß 4÷L.ñ L.÷^i$ñ i$ôX|�kõ |rG   