§
    3xÅj€s  ã                   ó  — d 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 ddlm Z  ddl!m"Z" ddl#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z*  G d„ d	¦  «        Z+ G d
„ de+¦  «        Z,dS )z
`.AuthHandler`
é    N)ÚAUTH_FAILEDÚAUTH_PARTIALLY_SUCCESSFULÚAUTH_SUCCESSFULÚDEBUGÚ)DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLEÚ DISCONNECT_SERVICE_NOT_AVAILABLEÚINFOÚMSG_SERVICE_ACCEPTÚMSG_SERVICE_REQUESTÚMSG_USERAUTH_BANNERÚMSG_USERAUTH_FAILUREÚMSG_USERAUTH_INFO_REQUESTÚMSG_USERAUTH_INFO_RESPONSEÚMSG_USERAUTH_REQUESTÚMSG_USERAUTH_SUCCESSÚWARNINGÚcMSG_DISCONNECTÚcMSG_SERVICE_ACCEPTÚcMSG_SERVICE_REQUESTÚcMSG_USERAUTH_BANNERÚcMSG_USERAUTH_FAILUREÚcMSG_USERAUTH_INFO_REQUESTÚcMSG_USERAUTH_INFO_RESPONSEÚcMSG_USERAUTH_PK_OKÚcMSG_USERAUTH_REQUESTÚcMSG_USERAUTH_SUCCESS)ÚMessage)ÚInteractiveQuery)ÚAuthenticationExceptionÚBadAuthenticationTypeÚPartialAuthenticationÚSSHException)ÚbÚuc                   óø   — 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ed„ ¦   «         Z ed„ ¦   «         Z!ed „ ¦   «         Z"d!S )#ÚAuthHandlerzC
    Internal class to handle the mechanics of authentication.
    c                 óÒ   — t          j        |¦  «        | _        d | _        d| _        d | _        d| _        d | _        d | _        d | _	        d | _
        d | _        d | _        d| _        d S )NFÚ r   )ÚweakrefÚproxyÚ	transportÚusernameÚauthenticatedÚ
auth_eventÚauth_methodÚbannerÚpasswordÚprivate_keyÚinteractive_handlerÚ
submethodsÚauth_usernameÚauth_fail_count)Úselfr+   s     úFC:\Projects\Historical\venv\Lib\site-packages\paramiko/auth_handler.pyÚ__init__zAuthHandler.__init__G   sl   € Ý œ yÑ1Ô1ˆŒØˆŒØ"ˆÔØˆŒØˆÔØˆŒØˆŒØˆÔØ#'ˆÔ ØˆŒà!ˆÔØ ˆÔÐÐó    c                 ó    —  | j         j        |Ž S ©N)r+   Ú_log)r7   Úargss     r8   r=   zAuthHandler._logV   s   € Ø"ˆtŒ~Ô" DÐ)Ð)r:   c                 ó   — | j         S r<   )r-   ©r7   s    r8   Úis_authenticatedzAuthHandler.is_authenticatedY   s   € ØÔ!Ð!r:   c                 ó6   — | j         j        r| j        S | j        S r<   )r+   Úserver_moder5   r,   r@   s    r8   Úget_usernamezAuthHandler.get_username\   s    € ØŒ>Ô%ð 	!ØÔ%Ð%à”=Ð r:   c                 ó  — | j         j                             ¦   «          	 || _        d| _        || _        |                      ¦   «          | j         j                             ¦   «          d S # | j         j                             ¦   «          w xY w©NÚnone)r+   ÚlockÚacquirer.   r/   r,   Ú_request_authÚrelease)r7   r,   Úevents      r8   Ú	auth_nonezAuthHandler.auth_noneb   s€   € ØŒÔ×#Ò#Ñ%Ô%Ð%ð	*Ø#ˆDŒOØ%ˆDÔØ$ˆDŒMØ×ÒÑ Ô Ð àŒNÔ×'Ò'Ñ)Ô)Ð)Ð)Ð)øˆDŒNÔ×'Ò'Ñ)Ô)Ð)Ð)øøøs    )A) Á) B	c                 ó&  — | j         j                             ¦   «          	 || _        d| _        || _        || _        |                      ¦   «          | j         j                             ¦   «          d S # | j         j                             ¦   «          w xY w)NÚ	publickey)	r+   rH   rI   r.   r/   r,   r2   rJ   rK   )r7   r,   ÚkeyrL   s       r8   Úauth_publickeyzAuthHandler.auth_publickeyl   sˆ   € ØŒÔ×#Ò#Ñ%Ô%Ð%ð	*Ø#ˆDŒOØ*ˆDÔØ$ˆDŒMØ"ˆDÔØ×ÒÑ Ô Ð àŒNÔ×'Ò'Ñ)Ô)Ð)Ð)Ð)øˆDŒNÔ×'Ò'Ñ)Ô)Ð)Ð)øøøó    0A0 Á0 Bc                 ó&  — | j         j                             ¦   «          	 || _        d| _        || _        || _        |                      ¦   «          | j         j                             ¦   «          d S # | j         j                             ¦   «          w xY w)Nr1   )	r+   rH   rI   r.   r/   r,   r1   rJ   rK   )r7   r,   r1   rL   s       r8   Úauth_passwordzAuthHandler.auth_passwordw   s‡   € ØŒÔ×#Ò#Ñ%Ô%Ð%ð	*Ø#ˆDŒOØ)ˆDÔØ$ˆDŒMØ$ˆDŒMØ×ÒÑ Ô Ð àŒNÔ×'Ò'Ñ)Ô)Ð)Ð)Ð)øˆDŒNÔ×'Ò'Ñ)Ô)Ð)Ð)øøørR   r(   c                 ó4  — | j         j                             ¦   «          	 || _        d| _        || _        || _        || _        |                      ¦   «          | j         j         	                    ¦   «          dS # | j         j         	                    ¦   «          w xY w)úK
        response_list = handler(title, instructions, prompt_list)
        úkeyboard-interactiveN)
r+   rH   rI   r.   r/   r,   r3   r4   rJ   rK   )r7   r,   ÚhandlerrL   r4   s        r8   Úauth_interactivezAuthHandler.auth_interactive‚   s‘   € ð 	ŒÔ×#Ò#Ñ%Ô%Ð%ð	*Ø#ˆDŒOØ5ˆDÔØ$ˆDŒMØ'.ˆDÔ$Ø(ˆDŒOØ×ÒÑ Ô Ð àŒNÔ×'Ò'Ñ)Ô)Ð)Ð)Ð)øˆDŒNÔ×'Ò'Ñ)Ô)Ð)Ð)øøøs    7A7 Á7 Bc                 óJ   — | j         �| j                              ¦   «          d S d S r<   )r.   Úsetr@   s    r8   ÚabortzAuthHandler.abort‘   s,   € ØŒ?Ð&ØŒO×ÒÑ!Ô!Ð!Ð!Ð!ð 'Ð&r:   c                 ó´   — t          ¦   «         }|                     t          ¦  «         |                     d¦  «         | j                             |¦  «         d S ©Nússh-userauth)r   Úadd_byter   Ú
add_stringr+   Ú_send_message©r7   Úms     r8   rJ   zAuthHandler._request_auth—   sL   € Ý‰IŒIˆØ	�
Š
Õ'Ñ(Ô(Ð(Ø	�Š�^Ñ$Ô$Ð$ØŒ×$Ò$ QÑ'Ô'Ð'Ð'Ð'r:   c                 óD  — t          ¦   «         }|                     t          ¦  «         |                     t          ¦  «         |                     d¦  «         |                     d¦  «         | j                             |¦  «         | j                             ¦   «          d S )NzService not availableÚen)	r   r`   r   Úadd_intr   ra   r+   rb   Úcloserc   s     r8   Ú!_disconnect_service_not_availablez-AuthHandler._disconnect_service_not_available�   s…   € Ý‰IŒIˆØ	�
Š
•?Ñ#Ô#Ð#Ø	�	Š	Õ2Ñ3Ô3Ð3Ø	�ŠÐ,Ñ-Ô-Ð-Ø	�Š�TÑÔÐØŒ×$Ò$ QÑ'Ô'Ð'ØŒ×ÒÑÔÐÐÐr:   c                 óD  — t          ¦   «         }|                     t          ¦  «         |                     t          ¦  «         |                     d¦  «         |                     d¦  «         | j                             |¦  «         | j                             ¦   «          d S )NzNo more auth methods availablerf   )	r   r`   r   rg   r   ra   r+   rb   rh   rc   s     r8   Ú_disconnect_no_more_authz$AuthHandler._disconnect_no_more_auth¦   s…   € Ý‰IŒIˆØ	�
Š
•?Ñ#Ô#Ð#Ø	�	Š	Õ;Ñ<Ô<Ð<Ø	�ŠÐ5Ñ6Ô6Ð6Ø	�Š�TÑÔÐØŒ×$Ò$ QÑ'Ô'Ð'ØŒ×ÒÑÔÐÐÐr:   c                 ól   — |j         r|j         j        |j         j        fS |                     ¦   «         |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)r7   rP   s     r8   Ú_get_key_type_and_bitsz"AuthHandler._get_key_type_and_bits¯   s6   € ð Œ?ð 	'Ø”?Ô+¨S¬_Ô-EÐEÐEà—<’<‘>”> 3Ð&Ð&r:   c                 óä  — t          ¦   «         }|                     | j        j        ¦  «         |                     t
          ¦  «         |                     |¦  «         |                     |¦  «         |                     d¦  «         |                     d¦  «         |                      |¦  «        \  }}|                     |¦  «         |                     |¦  «         |                     ¦   «         S )NrO   T)	r   ra   r+   Ú
session_idr`   r   Úadd_booleanrq   Úasbytes)r7   rP   Úservicer,   Ú	algorithmrd   Ú_Úbitss           r8   Ú_get_session_blobzAuthHandler._get_session_blob»   sÆ   € Ý‰IŒIˆØ	�Š�T”^Ô.Ñ/Ô/Ð/Ø	�
Š
Õ(Ñ)Ô)Ð)Ø	�Š�XÑÔÐØ	�Š�WÑÔÐØ	�Š�[Ñ!Ô!Ð!Ø	�Š�dÑÔÐØ×-Ò-¨cÑ2Ô2‰ˆˆ4Ø	�Š�YÑÔÐØ	�Š�TÑÔÐØ�yŠy‰{Œ{Ðr:   c                 óŠ  — d }| j         j        � t          j        ¦   «         | j         j        z   }	 |                     d¦  «         | j                              ¦   «         sF| j                              ¦   «         }|�t          |j        t          ¦  «        rt          d¦  «        }|‚| 
                    ¦   «         rn)|�&|t          j        ¦   «         k    rt          d¦  «        ‚Œ²|                      ¦   «         sM| j                              ¦   «         }|€t          d¦  «        }t          |j        t          ¦  «        r|j        S |‚g S )NTgš™™™™™¹?z5Authentication failed: transport shut down or saw EOFzAuthentication timeout.zAuthentication failed.)r+   Úauth_timeoutÚtimeÚwaitÚ	is_activeÚget_exceptionÚ
issubclassÚ	__class__ÚEOFErrorr   Úis_setrA   r!   Úallowed_types)r7   rL   Úmax_tsÚes       r8   Úwait_for_responsezAuthHandler.wait_for_responseÈ   s6  € ØˆØŒ>Ô&Ð2Ý”Y‘[”[ 4¤>Ô#>Ñ>ˆFð	IØ�JŠJ�s‰OŒOˆOØ”>×+Ò+Ñ-Ô-ð Ø”N×0Ò0Ñ2Ô2�Ø�I¥*¨Q¬[½(Ñ"CÔ"C�IÝ/ØOñô �Að �Ø�|Š|‰~Œ~ð ØØÐ! fµ´	±´Ò&;Ð&;Ý-Ð.GÑHÔHÐHð	Ið ×$Ò$Ñ&Ô&ð 		Ø”×,Ò,Ñ.Ô.ˆAØˆyÝ+Ð,DÑEÔE�õ ˜!œ+Õ'<Ñ=Ô=ð 'Ø”Ð&ØˆGØˆ	r:   c                 óJ  — |                      ¦   «         }| j        j        rî|dk    rèt          ¦   «         }|                     t
          ¦  «         |                     |¦  «         | j                             |¦  «         | j        j         	                    ¦   «         \  }}|rlt          ¦   «         }|                     t          ¦  «         |                     |¦  «         |                     |¦  «         | j                             |¦  «         d S |                      ¦   «          d S r^   )Úget_textr+   rC   r   r`   r   ra   rb   Úserver_objectÚ
get_bannerr   ri   )r7   rd   rv   r0   Úlanguages        r8   Ú_parse_service_requestz"AuthHandler._parse_service_requestæ   s   € Ø—*’*‘,”,ˆØŒ>Ô%ð 	¨7°nÒ+DÐ+Då‘	”	ˆAØ�JŠJÕ*Ñ+Ô+Ð+Ø�LŠL˜Ñ!Ô!Ð!ØŒN×(Ò(¨Ñ+Ô+Ð+Ø#œ~Ô;×FÒFÑHÔHÑˆF�HØð 0Ý‘I”I�Ø—
’
Õ/Ñ0Ô0Ð0Ø—’˜VÑ$Ô$Ð$Ø—’˜XÑ&Ô&Ð&Ø”×,Ò,¨QÑ/Ô/Ð/ØˆFà×.Ò.Ñ0Ô0Ð0Ð0Ð0r:   c                 óþ   — | j         j        }|                     dd¦  «        |vr2d}|                      t          |                     |¦  «        ¦  «         d S  | j         j        |         t          |¦  «        ¦  «        S )Nú-cert-v01@openssh.comr(   z<Auth rejected: pubkey algorithm '{}' unsupported or disabled)r+   Úpreferred_pubkeysÚreplacer=   r	   ÚformatÚ	_key_infor   )r7   rw   ÚkeyblobÚoptionsÚerrs        r8   Ú_generate_key_from_requestz&AuthHandler._generate_key_from_requestù   sy   € à”.Ô2ˆØ×ÒÐ4°bÑ9Ô9ÀÐHÐHàNð ð �IŠI•d˜CŸJšJ yÑ1Ô1Ñ2Ô2Ð2Ø�4Ø2ˆtŒ~Ô'¨	Ô2µ7¸7Ñ3CÔ3CÑDÔDÐDr:   c                 óê  — d|vr|S |                       t          d                     |¦  «        ¦  «         d„ | j        j        D ¦   «         }|                       t          d                     |¦  «        ¦  «         |st          d¦  «        ‚t          | j        j                             dt          d¦  «        ¦  «        ¦  «        }d}|rÝ| 
                    d	¦  «        }|                       t          d
                     |¦  «        ¦  «         t          t          |j        |¦  «        ¦  «        }|r7|d         }|                       t          d                     |¦  «        ¦  «         ng|                       t          d¦  «         d}t          |                     |¦  «        ¦  «        ‚|d         }d|› �}|                       t          |¦  «         |                     d¦  «        r|dz  }|| j        _        |S )a  
        Given a key type, decide which pubkey algorithm to use with it.

        In most cases this is simply "that key type, again".

        For RSA, this will be one of the SHA2 algorithms, depending on our
        (transport's) configured pubkey algorithms list.
        Úrsaz0Finalizing pubkey algorithm for key of type {!r}c                 ó   — g | ]}d |v ¯|‘Œ	S )rš   © )Ú.0Úxs     r8   ú
<listcomp>z:AuthHandler._finalize_pubkey_algorithm.<locals>.<listcomp>  s   € ÐNÐNÐN˜!À5ÈAÀ:À:�AÀ:À:À:r:   zOur pubkey algorithm list: {}zFAn RSA key was specified, but no RSA pubkey algorithms are configured!zserver-sig-algsr(   Nú,zServer-side algorithm list: {}r   z!Agreed upon {!r} pubkey algorithmz)No common pubkey algorithms exist! Dying.z=Unable to agree on a pubkey algorithm for signing a {!r} key!z[Server did not send a server-sig-algs list; defaulting to first RSA algorithm in our list: r�   )r=   r   r“   r+   r‘   r"   r$   Úserver_extensionsÚgetr#   ÚsplitÚlistÚfilterÚ__contains__r   ÚendswithÚ_agreed_pubkey_algorithm)	r7   rn   Úmy_algosÚserver_algo_strÚpubkey_algoÚserver_algosÚ	agreementr—   Úmsgs	            r8   Ú_finalize_pubkey_algorithmz&AuthHandler._finalize_pubkey_algorithm  s  € ð ˜Ð Ð ØˆOØ�	Š	ÝØ>×EÒEØñô ñ	
ô 	
ð 	
ð OÐN˜tœ~Ô?ÐNÑNÔNˆØ�	Š	•%Ð8×?Ò?ÀÑIÔIÑJÔJÐJàð 	ÝØXñô ð õ ØŒNÔ,×0Ò0Ð1BÅAÀbÁEÄEÑJÔJñ
ô 
ˆð ˆàð 	"Ø*×0Ò0°Ñ5Ô5ˆLØ�IŠIÝÐ7×>Ò>¸|ÑLÔLñô ð õ �V LÔ$=¸xÑHÔHÑIÔIˆIØð DØ'¨œl�Ø—	’	ÝØ7×>Ò>¸{ÑKÔKñô ð ð ð
 —	’	�%Ð!LÑMÔMÐMð V�Ý-¨c¯jªj¸Ñ.BÔ.BÑCÔCÐCð # 1œ+ˆKØ}Ðp{Ð}Ð}ˆCØ�IŠI•e˜SÑ!Ô!Ð!ð ×ÒÐ4Ñ5Ô5ð 	3ØÐ2Ñ2ˆKØ2=ˆŒÔ/ØÐr:   c                 óø  — |                      ¦   «         }|dk    �r0|                      t          d¦  «         t          ¦   «         }|                     t
          ¦  «         |                     | j        ¦  «         |                     d¦  «         |                     | j        ¦  «         | j        dk    r@| 	                    d¦  «         t          | j        ¦  «        }|                     |¦  «         �n=| j        dk    rÄ| 	                    d¦  «         |                      | j        ¦  «        \  }}|                      |¦  «        }|                     |¦  «         |                     |¦  «         |                      | j        d| j        |¦  «        }| j                             ||¦  «        }|                     |¦  «         nn| j        dk    r0|                     d	¦  «         |                     | j        ¦  «         n3| j        d
k    rn't%          d                     | j        ¦  «        ¦  «        ‚| j                             |¦  «         d S |                      t          d                     |¦  «        ¦  «         d S )Nr_   zuserauth is OKússh-connectionr1   FrO   TrW   r(   rG   zUnknown auth method "{}"z!Service request "{}" accepted (?))rŠ   r=   r   r   r`   r   ra   r,   r/   rt   r#   r1   rq   r2   r¯   rz   Úsign_ssh_datar4   r"   r“   r+   rb   )	r7   rd   rv   r1   rn   ry   rw   ÚblobÚsigs	            r8   Ú_parse_service_acceptz!AuthHandler._parse_service_acceptG  sR  € Ø—*’*‘,”,ˆØ�nÒ$Ñ$Ø�IŠI•eÐ-Ñ.Ô.Ð.Ý‘	”	ˆAØ�JŠJÕ,Ñ-Ô-Ð-Ø�LŠL˜œÑ'Ô'Ð'Ø�LŠLÐ)Ñ*Ô*Ð*Ø�LŠL˜Ô)Ñ*Ô*Ð*ØÔ :Ò-Ð-Ø—’˜eÑ$Ô$Ð$Ý˜Tœ]Ñ+Ô+�Ø—’˜XÑ&Ô&Ð&Ñ&ØÔ! [Ò0Ð0Ø—’˜dÑ#Ô#Ð#Ø!%×!<Ò!<¸TÔ=MÑ!NÔ!N‘�˜$Ø ×;Ò;¸HÑEÔE�	Ø—’˜YÑ'Ô'Ð'Ø—’˜TÑ"Ô"Ð"Ø×-Ò-ØÔ$Ø$Ø”MØñ	ô �ð Ô&×4Ò4°T¸9ÑEÔE�Ø—’˜SÑ!Ô!Ð!Ð!ØÔ!Ð%;Ò;Ð;Ø—’˜RÑ Ô Ð Ø—’˜Tœ_Ñ-Ô-Ð-Ð-ØÔ! VÒ+Ð+Øå"Ø.×5Ò5°dÔ6FÑGÔGñô ð ð ŒN×(Ò(¨Ñ+Ô+Ð+Ð+Ð+à�IŠIÝÐ:×AÒAÀ'ÑJÔJñô ð ð ð r:   c                 ó  — t          ¦   «         }|t          k    rP|                      t          d                     |¦  «        ¦  «         |                     t          ¦  «         d| _        nÀ|                      t          d                     |¦  «        ¦  «         |                     t          ¦  «         | 	                    | j
        j                             |¦  «        ¦  «         |t          k    r|                     d¦  «         n%|                     d¦  «         | xj        dz  c_        | j
                             |¦  «         | j        dk    r|                      ¦   «          |t          k    r| j
                             ¦   «          d S d S )NzAuth granted ({}).TzAuth rejected ({}).Fé   é
   )r   r   r=   r	   r“   r`   r   r-   r   ra   r+   r‹   Úget_allowed_authsr   rt   r6   rb   rk   Ú_auth_trigger)r7   r,   ÚmethodÚresultrd   s        r8   Ú_send_auth_resultzAuthHandler._send_auth_resultq  se  € å‰IŒIˆØ•_Ò$Ð$Ø�IŠI•dÐ0×7Ò7¸Ñ?Ô?Ñ@Ô@Ð@Ø�JŠJÕ,Ñ-Ô-Ð-Ø!%ˆDÔÐà�IŠI•dÐ1×8Ò8¸Ñ@Ô@ÑAÔAÐAØ�JŠJÕ,Ñ-Ô-Ð-Ø�LŠLØ”Ô,×>Ò>¸xÑHÔHñô ð ð Õ2Ò2Ð2Ø—’˜dÑ#Ô#Ð#Ð#à—’˜eÑ$Ô$Ð$ØÐ$Ô$¨Ñ)Ð$Ô$ØŒ×$Ò$ QÑ'Ô'Ð'ØÔ 2Ò%Ð%Ø×)Ò)Ñ+Ô+Ð+Ø•_Ò$Ð$ØŒN×(Ò(Ñ*Ô*Ð*Ð*Ð*ð %Ð$r:   c                 ó  — t          ¦   «         }|                     t          ¦  «         |                     |j        ¦  «         |                     |j        ¦  «         |                     t          ¦   «         ¦  «         |                     t          |j	        ¦  «        ¦  «         |j	        D ]8}|                     |d         ¦  «         | 
                    |d         ¦  «         Œ9| j                             |¦  «         d S )Nr   r·   )r   r`   r   ra   ÚnameÚinstructionsÚbytesrg   ÚlenÚpromptsrt   r+   rb   )r7   Úqrd   Úps       r8   Ú_interactive_queryzAuthHandler._interactive_query‰  sÒ   € å‰IŒIˆØ	�
Š
Õ-Ñ.Ô.Ð.Ø	�Š�Q”VÑÔÐØ	�Š�Q”^Ñ$Ô$Ð$Ø	�Š•U‘W”WÑÔÐØ	�	Š	•#�a”i‘.”.Ñ!Ô!Ð!Ø”ð 	 ð 	 ˆAØ�LŠL˜˜1œÑÔÐØ�MŠM˜!˜Aœ$ÑÔÐÐØŒ×$Ò$ QÑ'Ô'Ð'Ð'Ð'r:   c           	      ó0
  — | j         j        snt          ¦   «         }|                     t          ¦  «         |                     d¦  «         |                     d¦  «         | j                              |¦  «         d S | j        rd S | 	                    ¦   «         }| 	                    ¦   «         }| 	                    ¦   «         }|  
                    t          d                     |||¦  «        ¦  «         |dk    r|                      ¦   «          d S | j        �<| j        |k    r1|  
                    t          d¦  «         |                      ¦   «          d S || _        |dk    r!| j         j                             |¦  «        }�n‚|dk    rÓ|                     ¦   «         }|                     ¦   «         }	 |                     d¦  «        }n# t,          $ r Y nw xY w|r`|  
                    t          d¦  «         |                     ¦   «         }	 |                     dd	¦  «        }n# t,          $ r Y nw xY wt.          }�nË| j         j                             ||¦  «        }�n©|d
k    �r|                     ¦   «         }	| 	                    ¦   «         }
|                     ¦   «         }	 |                      |
|¦  «        }n£# t4          $ rG}|  
                    t6          d                     t9          |¦  «        ¦  «        ¦  «         d }Y d }~nWd }~wt:          $ rG}d}|  
                    t6          |                     |j        j        |¦  «        ¦  «         d }Y d }~nd }~ww xY w|€|                      ¦   «          d S | j         j                              ||¦  «        }|t.          k    rá|	snt          ¦   «         }|                     tB          ¦  «         |                     |
¦  «         |                     |¦  «         | j                              |¦  «         d S t          |                     ¦   «         ¦  «        }|  "                    ||||
¦  «        }| #                    ||¦  «        s"|  
                    t6          d¦  «         t.          }n†|dk    ra| $                    ¦   «         }| j         j         %                    ||¦  «        }tM          |tN          ¦  «        r|  (                    |¦  «         d S n| j         j                             |¦  «        }|  )                    |||¦  «         d S )NrG   Fz.Auth request (type={}) service={}, username={}r±   zKAuth rejected because the client attempted to change username in mid-flightr1   zUTF-8z+Auth request to change passwords (rejected)r’   rO   zAuth rejected: public key: {}z9Auth rejected: unsupported or mangled public key ({}: {})z Auth rejected: invalid signaturerW   )*r+   rC   r   r`   r   ra   rt   rb   r-   rŠ   r=   r   r“   ri   r5   r   rk   r‹   Úcheck_auth_noneÚget_booleanÚ
get_binaryÚdecodeÚUnicodeErrorr   Úcheck_auth_passwordr˜   r"   r	   ÚstrÚ	Exceptionr‚   Ú__name__Úcheck_auth_publickeyr   rz   Úverify_ssh_sigÚ
get_stringÚcheck_auth_interactiveÚ
isinstancer   rÆ   r½   )r7   rd   r,   rv   r»   r¼   Ú	changereqr1   ÚnewpasswordÚsig_attachedrw   r•   rP   r‡   r®   r´   r³   r4   s                     r8   Ú_parse_userauth_requestz#AuthHandler._parse_userauth_request–  s  € ØŒ~Ô)ð 	å‘	”	ˆAØ�JŠJÕ,Ñ-Ô-Ð-Ø�LŠL˜Ñ Ô Ð Ø�MŠM˜%Ñ Ô Ð ØŒN×(Ò(¨Ñ+Ô+Ð+ØˆFØÔð 	àˆFØ—:’:‘<”<ˆØ—*’*‘,”,ˆØ—’‘”ˆØ�	Š	ÝØ<×CÒCØ˜ ñô ñ	
ô 	
ð 	
ð Ð&Ò&Ð&Ø×2Ò2Ñ4Ô4Ð4ØˆFØÔÐ*ØÔ (Ò*Ð*à�IŠIÝØ]ñô ð ð ×)Ò)Ñ+Ô+Ð+ØˆFØ%ˆÔà�VÒÐØ”^Ô1×AÒAÀ(ÑKÔKˆF‰FØ�zÒ!Ð!ØŸš™œˆIØ—|’|‘~”~ˆHðØ#Ÿ?š?¨7Ñ3Ô3��øÝð ð ð ð �ðøøøð ð ð —	’	�%Ð!NÑOÔOÐOØŸlšl™nœn�ðØ"-×"4Ò"4°W¸iÑ"HÔ"H�K�KøÝ#ð ð ð Ø�Dðøøøå$�‘àœÔ5×IÒIØ˜hñô �‘ð �{Ò"Ñ"ØŸ=š=™?œ?ˆLð Ÿ
š
™œˆIð —l’l‘n”nˆGðØ×5Ò5°iÀÑIÔI��øÝð ð ð Ø—	’	�$Ð ?× FÒ FÅsÈ1ÁvÄvÑ NÔ NÑOÔOÐOØ������øøøøÝð ð ð ØQ�Ø—	’	�$ §
¢
¨1¬;Ô+?ÀÑ CÔ CÑDÔDÐDØ������øøøøðøøøð ˆ{Ø×-Ò-Ñ/Ô/Ð/Ø�à”^Ô1×FÒFØ˜#ñô ˆFð �Ò$Ð$à#ð õ  ™	œ	�AØ—J’JÕ2Ñ3Ô3Ð3Ø—L’L Ñ+Ô+Ð+Ø—L’L Ñ)Ô)Ð)Ø”N×0Ò0°Ñ3Ô3Ð3Ø�FÝ˜aŸlšl™nœnÑ-Ô-�Ø×-Ò-Ø˜ (¨Iñô �ð ×)Ò)¨$°Ñ4Ô4ð )Ø—I’I�dÐ$FÑGÔGÐGÝ(�FøØÐ-Ò-Ð-ØŸš™œˆJØ”^Ô1×HÒHØ˜*ñô ˆFõ ˜&Õ"2Ñ3Ô3ð à×'Ò'¨Ñ/Ô/Ð/Ø�ðð
 ”^Ô1×AÒAÀ(ÑKÔKˆFà×Ò˜x¨°Ñ8Ô8Ð8Ð8Ð8sH   Æ,G Ç
GÇGÈH È
H(È'H(ÊJ1 Ê1
MÊ;=K=Ë=MÌ
=MÍMc                 óð   — |                       t          d                     | j        ¦  «        ¦  «         d| _        | j                             ¦   «          | j        �| j                             ¦   «          d S d S )NzAuthentication ({}) successful!T)	r=   r	   r“   r/   r-   r+   rº   r.   r[   rc   s     r8   Ú_parse_userauth_successz#AuthHandler._parse_userauth_success  sw   € Ø�	Š	ÝÐ3×:Ò:¸4Ô;KÑLÔLñ	
ô 	
ð 	
ð "ˆÔØŒ×$Ò$Ñ&Ô&Ð&ØŒ?Ð&ØŒO×ÒÑ!Ô!Ð!Ð!Ð!ð 'Ð&r:   c                 óÂ  — |                      ¦   «         }|                     ¦   «         }|r`|                      t          d¦  «         |                      t          dt          |¦  «        z   ¦  «         t          |¦  «        | j        _        n¤| j	        |vrhd 
                    | j	        ¦  «        d 
                    |¦  «        fD ]}|                      t          |¦  «         Œt          d|¦  «        | j        _        n3|                      t          d 
                    | j	        ¦  «        ¦  «         d| _        d | _        | j        �| j                             ¦   «          d S d S )NzAuthentication continues...z	Methods: z'Authentication type ({}) not permitted.zAllowed methods: {}zBad authentication typezAuthentication ({}) failed.F)Úget_listrÉ   r=   r	   r   rÎ   r!   r+   Úsaved_exceptionr/   r“   r    r-   r,   r.   r[   )r7   rd   ÚauthlistÚpartialr®   s        r8   Ú_parse_userauth_failurez#AuthHandler._parse_userauth_failure  sY  € Ø—:’:‘<”<ˆð —-’-‘/”/ˆØð 	Ø�IŠI•dÐ9Ñ:Ô:Ð:Ø�IŠI•e˜[­3¨x©=¬=Ñ8Ñ9Ô9Ð9Ý-BÀ8Ñ-LÔ-LˆDŒNÔ*Ð*ØÔ XÐ-Ð-à9×@Ò@ØÔ$ñô ð &×,Ò,¨XÑ6Ô6ð	ð &ð &�ð —	’	�% Ñ%Ô%Ð%Ð%Ý-BØ)¨8ñ.ô .ˆDŒNÔ*Ð*ð �IŠIÝÐ3×:Ò:¸4Ô;KÑLÔLñô ð ð #ˆÔØˆŒØŒ?Ð&ØŒO×ÒÑ!Ô!Ð!Ð!Ð!ð 'Ð&r:   c                 ó˜   — |                      ¦   «         }|| _        |                      t          d                     |¦  «        ¦  «         d S )NzAuth banner: {})rÓ   r0   r=   r	   r“   )r7   rd   r0   s      r8   Ú_parse_userauth_bannerz"AuthHandler._parse_userauth_banner7  s?   € Ø—’‘”ˆØˆŒØ�	Š	•$Ð)×0Ò0°Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9r:   c                 ó¢  — | j         dk    rt          d¦  «        ‚|                     ¦   «         }|                     ¦   «         }|                     ¦   «          |                     ¦   «         }g }t          |¦  «        D ]=}|                     |                     ¦   «         |                     ¦   «         f¦  «         Œ>|                      |||¦  «        }t          ¦   «         }| 
                    t          ¦  «         |                     t          |¦  «        ¦  «         |D ]}|                     |¦  «         Œ| j                             |¦  «         d S )NrW   z Illegal info request from server)r/   r"   rŠ   rÊ   Úget_intÚrangeÚappendrÉ   r3   r   r`   r   rg   rÂ   ra   r+   rb   )	r7   rd   ÚtitlerÀ   rÃ   Úprompt_listÚiÚresponse_listÚrs	            r8   Ú_parse_userauth_info_requestz(AuthHandler._parse_userauth_info_request=  s,  € ØÔÐ5Ò5Ð5ÝÐAÑBÔBÐBØ—
’
‘”ˆØ—z’z‘|”|ˆØ	�Š‰ŒˆØ—)’)‘+”+ˆØˆÝ�w‘”ð 	@ð 	@ˆAØ×Ò §
¢
¡¤¨a¯mªm©o¬oÐ>Ñ?Ô?Ð?Ð?Ø×0Ò0Ø�< ñ
ô 
ˆõ ‰IŒIˆØ	�
Š
Õ.Ñ/Ô/Ð/Ø	�	Š	•#�mÑ$Ô$Ñ%Ô%Ð%Øð 	ð 	ˆAØ�LŠL˜‰OŒOˆOˆOØŒ×$Ò$ QÑ'Ô'Ð'Ð'Ð'r:   c                 ó¨  — | j         j        st          d¦  «        ‚|                     ¦   «         }g }t	          |¦  «        D ])}|                     |                     ¦   «         ¦  «         Œ*| j         j                             |¦  «        }t          |t          ¦  «        r|                      |¦  «         d S |                      | j        d|¦  «         d S )Nz!Illegal info response from serverrW   )r+   rC   r"   rå   ræ   rç   rŠ   r‹   Úcheck_auth_interactive_responserÕ   r   rÆ   r½   r5   )r7   rd   ÚnÚ	responsesrê   r¼   s         r8   Ú_parse_userauth_info_responsez)AuthHandler._parse_userauth_info_responseR  sÝ   € ØŒ~Ô)ð 	DÝÐBÑCÔCÐCØ�IŠI‰KŒKˆØˆ	Ý�q‘”ð 	+ð 	+ˆAØ×Ò˜QŸZšZ™\œ\Ñ*Ô*Ð*Ð*Ø”Ô-×MÒMØñ
ô 
ˆõ �fÕ.Ñ/Ô/ð 	à×#Ò# FÑ+Ô+Ð+ØˆFØ×ÒØÔÐ 6¸ñ	
ô 	
ð 	
ð 	
ð 	
r:   c                 óN   — t           | j        t          | j        t          | j        iS r<   )r   rŽ   r   rÙ   r   rò   r@   s    r8   Ú_server_handler_tablez!AuthHandler._server_handler_tablel  s&   € õ   Ô!<Ý  $Ô">Ý&¨Ô(Jð
ð 	
r:   c           
      ó~   — t           | j        t          | j        t          | j        t          | j        t          | j	        iS r<   )
r
   rµ   r   rÛ   r   rá   r   rã   r   rí   r@   s    r8   Ú_client_handler_tablez!AuthHandler._client_handler_tablex  s6   € õ  Ô :Ý  $Ô">Ý  $Ô">Ý Ô!<Ý% tÔ'Hð
ð 	
r:   c                 ó6   — | j         j        r| j        S | j        S r<   )r+   rC   rô   rö   r@   s    r8   Ú_handler_tablezAuthHandler._handler_table„  s!   € àŒ>Ô%ð 	.ØÔ-Ð-àÔ-Ð-r:   N©r(   )#rÐ   Ú
__module__Ú__qualname__Ú__doc__r9   r=   rA   rD   rM   rQ   rT   rY   r\   rJ   ri   rk   rq   rz   rˆ   rŽ   r˜   r¯   rµ   r½   rÆ   rÙ   rÛ   rá   rã   rí   rò   Úpropertyrô   rö   rø   rœ   r:   r8   r&   r&   B   s  € € € € € ðð ð!ð !ð !ð*ð *ð *ð"ð "ð "ð!ð !ð !ð*ð *ð *ð	*ð 	*ð 	*ð	*ð 	*ð 	*ð*ð *ð *ð *ð"ð "ð "ð(ð (ð (ðð ð ðð ð ð
'ð 
'ð 
'ðð ð ðð ð ð<1ð 1ð 1ð&	Eð 	Eð 	EðAð Að AðF(ð (ð (ðT+ð +ð +ð0(ð (ð (ðx9ð x9ð x9ðt"ð "ð "ð"ð "ð "ð<:ð :ð :ð(ð (ð (ð*
ð 
ð 
ð4 ð
ð 
ñ „Xð
ð ð
ð 
ñ „Xð
ð ð.ð .ñ „Xð.ð .ð .r:   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
ˆ xZS )ÚAuthOnlyHandlerzU
    AuthHandler, and just auth, no service requests!

    .. versionadded:: 3.2
    c                 ób   •— t          ¦   «         j                             ¦   «         }|t          = |S r<   )Úsuperrö   Úcopyr
   )r7   Úmy_tabler‚   s     €r8   rö   z%AuthOnlyHandler._client_handler_table—  s)   ø€ å‘7”7Ô0×5Ò5Ñ7Ô7ˆØÕ'Ð(Øˆr:   Nc                 óâ  — || _         || _        t          ¦   «         }|                     t          ¦  «         |                     |¦  «         |                     d¦  «         |                     |¦  «          ||¦  «         | j        j        5  | j                             |¦  «         ddd¦  «         n# 1 swxY w Y   t          j
        ¦   «         | _        |                      | j        ¦  «        S )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/   r,   r   r`   r   ra   r+   rH   rb   Ú	threadingÚEventr.   rˆ   )r7   r,   r»   Úfinish_messagerd   s        r8   Úsend_auth_requestz!AuthOnlyHandler.send_auth_request�  s  € ð "ˆÔØ ˆŒå‰IŒIˆØ	�
Š
Õ(Ñ)Ô)Ð)Ø	�Š�XÑÔÐØ	�ŠÐ%Ñ&Ô&Ð&Ø	�Š�VÑÔÐàˆ�qÑÔÐð Œ^Ô ð 	,ð 	,ØŒN×(Ò(¨Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,õ $œ/Ñ+Ô+ˆŒØ×%Ò% d¤oÑ6Ô6Ð6s   ÂB4Â4B8Â;B8c                 ó.   — |                       |d¦  «        S rF   ©r  )r7   r,   s     r8   rM   zAuthOnlyHandler.auth_noneÆ  s   € Ø×%Ò% h°Ñ7Ô7Ð7r:   c                 óÒ   ‡‡‡‡— |                       ‰¦  «        \  }Š|                      |¦  «        Š|                      ‰d|‰¦  «        Šˆˆˆˆfd„}|                      |d|¦  «        S )Nr±   c                 óØ   •— |                       d¦  «         |                      ‰¦  «         |                      ‰¦  «         |                      ‰                     ‰‰¦  «        ¦  «         d S )NT)rt   ra   r²   )rd   rw   ry   r³   rP   s    €€€€r8   Úfinishz.AuthOnlyHandler.auth_publickey.<locals>.finishÕ  sc   ø€ ð
 �MŠM˜$ÑÔÐØ�LŠL˜Ñ#Ô#Ð#Ø�LŠL˜ÑÔÐØ�LŠL˜×*Ò*¨4°Ñ;Ô;Ñ<Ô<Ð<Ð<Ð<r:   rO   )rq   r¯   rz   r  )r7   r,   rP   rn   r  rw   ry   r³   s     `  @@@r8   rQ   zAuthOnlyHandler.auth_publickeyÉ  s•   øøøø€ ð ×4Ò4°SÑ9Ô9‰ˆ�$Ø×3Ò3°HÑ=Ô=ˆ	Ø×%Ò%ØØØØñ	
ô 
ˆð	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð ×%Ò% h°¸VÑDÔDÐDr:   c                 ó<   ‡— ˆfd„}|                       |d|¦  «        S )Nc                 óv   •— |                       d¦  «         |                      t          ‰¦  «        ¦  «         d S )NF)rt   ra   r#   )rd   r1   s    €r8   r  z-AuthOnlyHandler.auth_password.<locals>.finishâ  s5   ø€ ð �MŠM˜%Ñ Ô Ð Ø�LŠL�˜8™œÑ%Ô%Ð%Ð%Ð%r:   r1   r
  )r7   r,   r1   r  s     ` r8   rT   zAuthOnlyHandler.auth_passwordá  s6   ø€ ð	&ð 	&ð 	&ð 	&ð 	&ð ×%Ò% h°
¸FÑCÔCÐCr:   r(   c                 óX   ‡— d| _         || _        ˆfd„}|                      |d|¦  «        S )rV   Úkeyboard_interactivec                 ó\   •— |                       d¦  «         |                       ‰¦  «         d S )Nr(   )ra   )rd   r4   s    €r8   r  z0AuthOnlyHandler.auth_interactive.<locals>.finishõ  s/   ø€ ð �LŠL˜ÑÔÐØ�LŠL˜Ñ$Ô$Ð$Ð$Ð$r:   rW   )r/   r3   r  )r7   r,   rX   r4   r  s      ` r8   rY   z AuthOnlyHandler.auth_interactiveë  sI   ø€ ð 2ˆÔØ#*ˆÔ ð	%ð 	%ð 	%ð 	%ð 	%ð ×%Ò% hÐ0FÈÑOÔOÐOr:   r<   rù   )rÐ   rú   rû   rü   rý   rö   r  rM   rQ   rT   rY   Ú__classcell__)r‚   s   @r8   rÿ   rÿ   Œ  s²   ø€ € € € € ðð ð ðð ð ð ñ „Xðð
'7ð '7ð '7ð '7ðR8ð 8ð 8ðEð Eð Eð0Dð Dð DðPð Pð Pð Pð Pð Pð Pð Pr:   rÿ   )-rü   r  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   Úparamiko.messager   Úparamiko.serverr   Úparamiko.ssh_exceptionr   r    r!   r"   Úparamiko.utilr#   r$   r&   rÿ   rœ   r:   r8   ú<module>r     s<  ðð&ð ð Ð Ð Ð Ø €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð8 %Ð $Ð $Ð $Ð $Ð $Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ð Ð ðG	.ð G	.ð G	.ð G	.ð G	.ñ G	.ô G	.ð G	.ðToPð oPð oPð oPð oP�kñ oPô oPð oPð oPð oPr:   