Viewing File: /opt/alt/python35/lib/python3.5/site-packages/__pycache__/pam.cpython-35.opt-1.pyc



ù§$[„ã@sýdZdgZdZdZdZddlZddlmZmZm	Z	m
Z
mZmZm
Z
ddlmZmZmZmZmZdd	lmZdd
lmZGdd„de	ƒZGd
d„de	ƒZGdd„de	ƒZe
eeeeeƒƒeeeƒƒeƒZGdd„de	ƒZdZdZdZdZdZeedƒƒZ eedƒƒZ!e j"Z"ee"_#eege"_$e%e!dƒrÄe!j&Z&ee&_#eege&_$e!j'Z'ee'_#eeeeƒeeƒge'_$e!j(Z(ee(_#eege(_$e!j)Z)ee)_#eege)_$e!j*Z*ee*_#eege*_$Gdd„dƒZ+dd„Z,e-dkrùddl.Z.ddl/Z/dd„Z0e+ƒZ+e0d e/j1ƒƒZ2e+j,e2e/j/ƒƒe3d!j4e+j5e+j6ƒƒdS)"zé
PAM module for python

Provides an authenticate function that will allow the caller to authenticate
a user against the Pluggable Authentication Modules (PAM) on the system.

Implemented using ctypes, so no compilation is necessary.
Úpamz1.8.4z David Ford <david@blue-labs.org>z2018 June 15éN)ÚCDLLÚPOINTERÚ	StructureÚ	CFUNCTYPEÚcastÚbyrefÚsizeof)Úc_void_pÚc_size_tÚc_char_pÚc_charÚc_int)Úmemmove)Úfind_libraryc@s1eZdZdZdefgZdd„ZdS)Ú	PamHandlez&wrapper class for pam_handle_t pointerÚhandlecCstj|ƒd|_dS)Nr)rÚ__init__r)Úself©rú/pam.pyr's
zPamHandle.__init__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
Ú_fields_rrrrrr#src@s:eZdZdZdefdefgZdd„ZdS)Ú
PamMessagez'wrapper class for pam_message structureÚ	msg_styleÚmsgcCsd|j|jfS)Nz<PamMessage %i '%s'>)rr)rrrrÚ__repr__/szPamMessage.__repr__N)rrrrrrrrrrrrr+src@s:eZdZdZdefdefgZdd„ZdS)ÚPamResponsez(wrapper class for pam_response structureÚrespÚresp_retcodecCsd|j|jfS)Nz<PamResponse %i '%s'>)r"r!)rrrrr6szPamResponse.__repr__N)rrrrrrrrrrrrr 2sr c@s.eZdZdZdefdefgZdS)ÚPamConvz$wrapper class for pam_conv structureÚconvZappdata_ptrN)rrrrÚ	conv_funcr
rrrrrr#;sr#éééééÚcÚpam_endc@s=eZdZdZdZdd„Zddddd	„ZdS)
rrNcCsdS)Nr)rrrrrgszpam.__init__Zloginzutf-8Tcst‡‡fdd†ƒ}tjdkr‡t|tƒrH|j|ƒ}tˆtƒrfˆj|ƒ‰t|tƒrá|j|ƒ}nZt|tƒr¥|j|ƒ}tˆtƒrÈj|ƒ‰t|tƒrá|j|ƒ}d|ksdˆksd|krd|_d|_dSt	ˆƒ‰t
ƒ}t|dƒ}t||t
|ƒt
|ƒƒ}	|	dkr‚|	|_d	|_dSt|dƒ}	|	dk}
|
r¸|r¸t|tƒ}	|	|_t||	ƒ|_tjdkr÷|jj|ƒ|_ttd
ƒrt||	ƒ|
S)
aÒusername and password authentication for the given service.

           Returns True for success, or False for failure.

           self.code (integer) and self.reason (string) are always stored and may
           be referenced for the reason why authentication failed. 0/'Success' will
           be stored for success.

           Python3 expects bytes() for ctypes inputs.  This function will make
           necessary conversions using the supplied encoding.

        Inputs:
          username: username to authenticate
          password: password in plain text
          service:  PAM service to authenticate against, defaults to 'login'

        Returns:
          success:  True
          failure:  False
        cs´t|ttƒƒ}t|ttƒƒ}||d<xyt|ƒD]k}||jjtkrAtt	ˆƒdtt
ƒƒ}t|ˆt	ˆƒƒ|||_d||_
qAWdS)zxSimple conversation function that responds to any
               prompt where the echo is off with the supplied passwordrr&)Úcallocr	r rrÚrangeÚcontentsrÚPAM_PROMPT_ECHO_OFFÚlenr
rr!r")Z
n_messagesZmessagesZ
p_responseZapp_dataÚaddrÚresponseÚiÚdst)Ú	cpasswordÚpasswordrrÚmy_conv€s

z!pam.authenticate.<locals>.my_convr(sr)zstrings may not contain NULFrzpam_start() failedr,)r()r()r%ÚsysÚversion_infoÚ
isinstanceÚstrÚencodeÚunicodeÚcodeÚreasonrrr#Ú	pam_startrÚpam_authenticateÚpam_setcredÚPAM_REINITIALIZE_CREDÚpam_strerrorÚdecodeÚhasattrÚlibpamr,)rÚusernamer7ZserviceÚencodingZ
resetcredsr8rr$ZretvalZauth_successr)r6r7rÚauthenticatejsJ$			!			
zpam.authenticate)rrrr?r@rrKrrrrrcscOstƒj||ŽS)zB
    Compatibility function for older versions of python-pam.
    )rrK)ZvargsZdargsrrrrKÂsrKÚ__main__csW‡fdd†}tj|ƒtjdkr=t|ƒ}nt|ƒ}tjƒ|S)NcstjˆƒtjƒdS)N)ÚreadlineZinsert_textZ	redisplayr)ÚtextrrÚhookÍs
z input_with_prefill.<locals>.hookr()r()rMZset_pre_input_hookr9r:ÚinputZ	raw_input)ÚpromptrNrOÚresultr)rNrÚinput_with_prefillÌs

rSz
Username: z{} {})7rÚ__all__Ú__version__Ú
__author__Z__released__r9Zctypesrrrrrrr	r
rrr
rrZctypes.utilrrrr r%r#r0ZPAM_PROMPT_ECHO_ONZ
PAM_ERROR_MSGZ
PAM_TEXT_INFOrDZlibcrHr-ZrestypeZargtypesrGr,rArCrErBrrKrrMZgetpassrSZgetuserrIÚprintÚformatr?r@rrrrÚ<module>sb	4(0						!						_	
Back to Directory File Manager