Current File : //lib/python2.7/site-packages/paramiko/auth_handler.pyo
�
Z��[c@s|dZddlZddlmZmZmZmZmZmZm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1ddl2m3Z3ddl4m5Z5d	e6fd
��YZ7dS(s
`.AuthHandler`
i����N(&tcMSG_SERVICE_REQUESTtcMSG_DISCONNECTt DISCONNECT_SERVICE_NOT_AVAILABLEt)DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLEtcMSG_USERAUTH_REQUESTtcMSG_SERVICE_ACCEPTtDEBUGtAUTH_SUCCESSFULtINFOtcMSG_USERAUTH_SUCCESStcMSG_USERAUTH_FAILUREtAUTH_PARTIALLY_SUCCESSFULtcMSG_USERAUTH_INFO_REQUESTtWARNINGtAUTH_FAILEDtcMSG_USERAUTH_PK_OKtcMSG_USERAUTH_INFO_RESPONSEtMSG_SERVICE_REQUESTtMSG_SERVICE_ACCEPTtMSG_USERAUTH_REQUESTtMSG_USERAUTH_SUCCESStMSG_USERAUTH_FAILUREtMSG_USERAUTH_BANNERtMSG_USERAUTH_INFO_REQUESTtMSG_USERAUTH_INFO_RESPONSEtcMSG_USERAUTH_GSSAPI_RESPONSEtcMSG_USERAUTH_GSSAPI_TOKENt&cMSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETEtcMSG_USERAUTH_GSSAPI_ERRORtcMSG_USERAUTH_GSSAPI_ERRTOKtcMSG_USERAUTH_GSSAPI_MICtMSG_USERAUTH_GSSAPI_RESPONSEtMSG_USERAUTH_GSSAPI_TOKENt%MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETEtMSG_USERAUTH_GSSAPI_ERRORtMSG_USERAUTH_GSSAPI_ERRTOKtMSG_USERAUTH_GSSAPI_MICt	MSG_NAMES(tMessage(t
bytestring(tSSHExceptiontAuthenticationExceptiontBadAuthenticationTypetPartialAuthentication(tInteractiveQuery(tGSSAuthtAuthHandlercBsEeZdZd�Zd�Zd�Zd�Zd�Zd�Zdd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Ziee6ee6ee6Ziee 6ee!6ee"6ee#6ee$6Z%e&d��Z'RS(sC
    Internal class to handle the mechanics of authentication.
    cCs�tj|�|_d|_t|_d|_d|_d|_	d|_
d|_d|_d|_
d|_d|_d|_t|_dS(Nti(tweakreftproxyt	transporttNonetusernametFalset
authenticatedt
auth_eventtauth_methodtbannertpasswordtprivate_keytinteractive_handlert
submethodst
auth_usernametauth_fail_counttgss_hosttTruetgss_deleg_creds(tselfR2((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt__init__4s												cCs|jS(N(R6(RC((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pytis_authenticatedFscCs|jjr|jS|jSdS(N(R2tserver_modeR>R4(RC((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pytget_usernameIscCsQ|jjj�z)||_d|_||_|j�Wd|jjj�XdS(Ntnone(R2tlocktacquireR7R8R4t
_request_authtrelease(RCR4tevent((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt	auth_noneOs			cCsZ|jjj�z2||_d|_||_||_|j�Wd|jjj�XdS(Nt	publickey(	R2RIRJR7R8R4R;RKRL(RCR4tkeyRM((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pytauth_publickeyYs				cCsZ|jjj�z2||_d|_||_||_|j�Wd|jjj�XdS(NR:(	R2RIRJR7R8R4R:RKRL(RCR4R:RM((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt
auth_passwordds				R/cCsc|jjj�z;||_d|_||_||_||_|j�Wd|jjj	�XdS(sK
        response_list = handler(title, instructions, prompt_list)
        skeyboard-interactiveN(
R2RIRJR7R8R4R<R=RKRL(RCR4thandlerRMR=((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pytauth_interactiveos					cCsc|jjj�z;||_d|_||_||_||_|j�Wd|jjj	�XdS(Nsgssapi-with-mic(
R2RIRJR7R8R4R@RBRKRL(RCR4R@RBRM((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pytauth_gssapi_with_mic~s					cCsQ|jjj�z)||_d|_||_|j�Wd|jjj�XdS(Nsgssapi-keyex(R2RIRJR7R8R4RKRL(RCR4RM((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pytauth_gssapi_keyex�s			cCs#|jdk	r|jj�ndS(N(R7R3tset(RC((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pytabort�scCs7t�}|jt�|jd�|jj|�dS(Nsssh-userauth(R&tadd_byteRt
add_stringR2t
_send_message(RCtm((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyRK�s	

cCs^t�}|jt�|jt�|jd�|jd�|jj|�|jj�dS(NsService not availableten(	R&RYRtadd_intRRZR2R[tclose(RCR\((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt!_disconnect_service_not_available�s	



cCs^t�}|jt�|jt�|jd�|jd�|jj|�|jj�dS(NsNo more auth methods availableR](	R&RYRR^RRZR2R[R_(RCR\((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_disconnect_no_more_auth�s	



cCs�t�}|j|jj�|jt�|j|�|j|�|jd�|jt�|j|j��|j|�|j	�S(NRO(
R&RZR2t
session_idRYRtadd_booleanRAtget_nametasbytes(RCRPtserviceR4R\((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_get_session_blob�s	





cCs�x{tr}|jd�|jj�sj|jj�}|dksRt|jt�rat	d�}n|�n|j
�rPqqW|j�s�|jj�}|dkr�t	d�}nt|jt�r�|j
S|�ngS(Ng�������?sAuthentication failed.(RAtwaitR2t	is_activet
get_exceptionR3t
issubclasst	__class__tEOFErrorR)tis_setRER+t
allowed_types(RCRMte((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pytwait_for_response�s"	
		cCsi|j�}|jjr[|dkr[t�}|jt�|j|�|jj|�dS|j�dS(Nsssh-userauth(	tget_textR2RFR&RYRRZR[R`(RCR\Rf((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_parse_service_request�s	

cCs�|j�}|dkr{|jjtd�t�}|jt�|j|j�|jd�|j|j	�|j	dkr�|j
t�t|j
�}|j|�n�|j	dkr(|j
t�|j|jj��|j|j�|j|jd|j�}|jj|�}|j|�n@|j	dkrW|jd�|j|j�n|j	dkr�t|j	|j�}|j|j��|jj|�|jjj�\}}|tkr�|j|�|jjj�\}}n|tkr4|j�}t�}|jt�|j|j |j!||j��|jj|�x�tr�|jjj�\}}|t"krM|j�}	|j |j!||j|	�}
|
dkr�Pq�t�}|jt�|j|
�|jj$|�qMqMWt%d	t&|��t�}|jt'�|j|j(|jj)��qh|t*krOt%d
��qh|t+kr�|j,�}|j,�}|j�}
|j�}t%d�t-|�t-|�|
f�qh|t.kr�|j/|�dSt%d	t&|��n�|j	dkrC|jj0rC|jj1}|j2|j�|j(|jj)�}|j|�n%|j	d
krUnt%d|j	��|jj|�n|jjtd|�dS(Nsssh-userauthsuserauth is OKsssh-connectionR:ROskeyboard-interactiveR/sgssapi-with-micsReceived Package: %ssServer returned an error tokens�GSS-API Error:
Major Status: %s
                                        Minor Status: %s\ 
Error Message:                                         %s
sgssapi-keyexRHsUnknown auth method "%s"s!Service request "%s" accepted (?)(3RrR2t_logRR&RYRRZR4R8RcR5R'R:RAR;RdRgt
sign_ssh_dataR=R-RBt	add_bytestssh_gss_oidsR[t
packetizertread_messageRt_parse_userauth_bannerRt
get_stringRtssh_init_sec_contextR@R R3tsend_messageR(R%Rtssh_get_micRbR#R"tget_inttstrRt_parse_userauth_failuretgss_kex_usedtkexgss_ctxttset_username(RCR\RfR:tblobtsigtsshgsstptypetmecht	srv_tokent
next_tokent
maj_statust
min_statusterr_msgtlang_tagtkexgsst	mic_token((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_parse_service_accept�s�	





	

			

	
	

cCs	t�}|tkrE|jjtd|�|jt�t|_nx|jjtd|�|jt	�|j
|jjj|��|t
kr�|jt�n|jt�|jd7_|jj|�|jdkr�|j�n|tkr|jj�ndS(NsAuth granted (%s).sAuth rejected (%s).ii
(R&RR2RtRRYR	RAR6R
RZt
server_objecttget_allowed_authsRRcR5R?R[Rat
_auth_trigger(RCR4tmethodtresultR\((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_send_auth_resultEs"	



cCs�t�}|jt�|j|j�|j|j�|jt��|jt|j	��x3|j	D](}|j|d�|j
|d�qfW|jj|�dS(Nii(
R&RYRRZtnametinstructionstbytesR^tlentpromptsRcR2R[(RCtqR\tp((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_interactive_query[s	
cCs2|jjsPt�}|jt�|jd�|jt�|jj|�dS|j	r]dS|j
�}|j
�}|j
�}|jjtd|||f�|dkr�|j
�dS|jdk	r�|j|kr�|jjtd�|j�dS||_|jjj�}|dkr9|jjj|�}n�|dkr�|j�}|j�}y|jd�}Wntk
r�nX|r�|jjtd�|j�}	y|	jdd�}	Wntk
r�nXt}q|jjj||�}n$|d	kr�|j�}
|j
�}|j�}y |jj|t|��}
WnUtk
r}|jjtd
t|��d}
n |jjtd�d}
nX|
dkr�|j�dS|jjj||
�}|tkr|
s't�}|jt �|j|�|j|�|jj|�dSt|j��}|j!|
||�}|
j"||�s|jjtd�t}qqn�|d
kr�|j#�}|j#�}|jjj$||�}t%|t&�r|j'|�dSn:|dkrE|rEt(|�}|j)�}|dkr7|jjtd�|j�n|j#�}|j*|�}|sx|jjtd�|j�n|j+d�}xCt,r�t�}|jt-�|j.|�|jj|�|jj/j0�\}}|t1kr�|j#�}y|j2|j3||�}Wn-t4k
r>t}|j5|||��nX|dk	r�t�}|jt6�|j|�|jj|�q�nt}|j5|||�dS|jj/j0�\}}|t7kr�Pq�q�W|j#�}y|j8||jj9|�Wn-t4k
r%t}|j5|||��nXt:}|jjj;||�n�|dkr|r|j#�}|jj<}|dkr�t}|j5|||�ny |j8||jj9|j�Wn-t4k
r�t}|j5|||��nXt:}|jjj=||�n|jjj|�}|j5|||�dS(NRHs.Auth request (type=%s) service=%s, username=%ssssh-connectionsKAuth rejected because the client attempted to change username in mid-flightR:sUTF-8s+Auth request to change passwords (rejected)treplaceROsAuth rejected: public key: %ss0Auth rejected: unsupported or mangled public keys Auth rejected: invalid signatureskeyboard-interactivesgssapi-with-micis8Disconnect: Received more than one GSS-API OID mechanisms5Disconnect: Received an invalid GSS-API OID mechanismtserversgssapi-keyex(>R2RFR&RYR
RZRcR5R[R6RrRtRR`R>R3R
RaR�tenable_auth_gssapitcheck_auth_nonetget_booleant
get_binarytdecodetUnicodeErrorRtcheck_auth_passwordt	_key_infoR(RR�tcheck_auth_publickeyRRgtverify_ssh_sigR{tcheck_auth_interactivet
isinstanceR,R�R-Rtssh_check_mechRwRARRvRxRyR tssh_accept_sec_contextR@t	ExceptionR�RR$t
ssh_check_micRbRtcheck_auth_gssapi_with_micR�tcheck_auth_gssapi_keyex(RCR\R4RfR�tgss_authR�t	changereqR:tnewpasswordtsig_attachedtkeytypetkeyblobRPRpR�R�tlangR=R�tmechstdesired_mechtmech_oktsupported_mechR�tclient_tokenttokenR�((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_parse_userauth_requesths$	


	 

	

	 	

	





		



	

		
		
cCsS|jjtd|j�t|_|jj�|jdk	rO|jj	�ndS(NsAuthentication (%s) successful!(
R2RtRR8RAR6R�R7R3RW(RCR\((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_parse_userauth_successs
	
cCs|j�}|j�}|rc|jjtd�|jjtdt|��t|�|j_nx|j	|kr�|jjtd|j	�|jjtdt|��t
d|�|j_n|jjtd|j	�t|_d|_|jdk	r|jj�ndS(NsAuthentication continues...s	Methods: s'Authentication type (%s) not permitted.sAllowed methods: sBad authentication typesAuthentication (%s) failed.(tget_listR�R2RtRRR�R+tsaved_exceptionR8R*R5R6R3R4R7RW(RCR\tauthlisttpartial((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyR�$s		cCs<|j�}||_|j�}|jjtd|�dS(NsAuth banner: %s(R{R9R2RtR(RCR\R9R�((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyRz6s	c	Cs�|jdkrtd��n|j�}|j�}|j�|j�}g}x3t|�D]%}|j|j�|j�f�q_W|j|||�}t	�}|j
t�|jt
|��x|D]}|j|�q�W|jj|�dS(Nskeyboard-interactives Illegal info request from server(R8R(RrR�RtrangetappendR�R<R&RYRR^R�RZR2R[(	RCR\ttitleR�R�tprompt_listtit
response_listtr((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_parse_userauth_info_request=s 
#	

cCs�|jjstd��n|j�}g}x't|�D]}|j|j��q:W|jjj|�}t	t
|�t�r�|j|�dS|j
|jd|�dS(Ns!Illegal info response from serverskeyboard-interactive(R2RFR(RR�R�RrR�tcheck_auth_interactive_responseR�ttypeR,R�R�R>(RCR\tnt	responsesR�R�((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_parse_userauth_info_responsePs
cCs|jjr|jS|jSdS(N(R2RFt_server_handler_tablet_client_handler_table(RC((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt_handler_tablens((t__name__t
__module__t__doc__RDRERGRNRQRRRTRURVRXRKR`RaRgRqRsR�R�R�R�R�R�RzR�R�RRRR�RRRRRR�tpropertyR�(((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyR./sJ				
				
										f		
	�					

(8R�R0tparamiko.commonRRRRRRRRRR	R
RRR
RRRRRRRRRRRRRRRRRRR R!R"R#R$R%tparamiko.messageR&tparamiko.py3compatR'tparamiko.ssh_exceptionR(R)R*R+tparamiko.serverR,tparamiko.ssh_gssR-tobjectR.(((s9/usr/lib/python2.7/site-packages/paramiko/auth_handler.pyt<module>s�"