�
=OXc@s�dZddlZddlZddlmZmZd�Zdejfd��YZd�Z dZ
ejjj
Z
ejjejfe
_ejje
_ejjjZejjfe_ejje_ejjjZejjfe_ejje_ejjjZejjfe_eje_ejjjZejjejejjejjejjejjge_ejje_ejjjZejje_ejjj Z ejjfe _ejjj!Z!ejejejfe!_ejj"fejjj#_d e$fd
��YZ%dZ&dZ'e&Z(e&Z)e&Z*d
Z+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8e'e,Be-Be.Be/Be0Be1Be2Be3Be4Be5Be6Be7BZ9e(e-Be.BZ:e)e/Be0Be1Be2Be3Be4Be5Be6BZ;e*e,Be7BZ<dd(d��YZ=dd)d��YZ>dej?fd��YZ@d ej?fd!��YZAd"ej?fd#��YZBejCeA�ejejjfejjDjE_d$�ZFd%�ZGd&�ZHdd'�ZJdS(*s�
Windows API functions implemented as ctypes functions and classes as found
in jaraco.windows (3.4.1).
If you encounter issues with this module, please consider reporting the issues
in jaraco.windows and asking the author to port the fixes back here.
i����N(tutbuiltinscCs�d}d}||B}d}|}d}tjj�}d}d} tjjj||||tj|�|| �}
t|
�|j }tjjj
|�|S(sf
Call FormatMessage with a system error number to retrieve
the descriptive error message.
iiiN(tNonetctypestwintypestLPWSTRtwindlltkernel32tFormatMessageWtbyrefthandle_nonzero_successtvaluet LocalFree(terrnotALLOCATE_BUFFERtFROM_SYSTEMtflagstsourcet
message_idtlanguage_idt
result_buffertbuffer_sizet argumentstbytestmessage((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytformat_system_messages*
tWindowsErrorcBsJeZdZdd�Zed��Zed��Zd�Zd�Z RS(sVmore info about errors at http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspxcCsw|dkr!tjjj�}nt|�}tjdkrQd|d|f}n||f}tt |�j
|�dS(Nii(ii(RRRRtGetLastErrorRtsystversion_infotsuperRt__init__(tselfRtstrerrortargs((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR9scCs|jS(N(R!(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRCscCs|jS(N(twinerror(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytcodeGscCs|jS(N(R(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt__str__KscCsdjt��S(Ns*{self.__class__.__name__}({self.winerror})(tformattvars(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt__repr__NsN(
t__name__t
__module__t__doc__RRtpropertyRR$R%R((((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR6s
cCs|dkrt��ndS(Ni(R(tresult((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR
Qsit MemoryMapcBsGeZdZdd�Zd�Zd�Zd�Zd�Zd�Z RS(sL
A memory map object which can have security attributes overridden.
cCs(||_||_||_d|_dS(Ni(tnametlengthtsecurity_attributestpos(R R/R0R1((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR�s cCs�|jrtj|j�nd}d}d}d}tjjj|||d|jt|j ��}t
|�||kr�td��n||_t
||ddd�|_|S(Ni����iiisFailed to create file mapping(R1RR RRRtCreateFileMappingWR0RR/R
t Exceptiontfilemapt
MapViewOfFiletview(R tp_SAtINVALID_HANDLE_VALUEtPAGE_READWRITEtFILE_MAP_WRITER5((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt __enter__�s!
cCs
||_dS(N(R2(R R2((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytseek�scCs�t|t�st�t|�}|j||jkrJtd|��n|j|j}tj |�}tj
jj|||�|j|7_dS(NsRefusing to write %d bytes(
t
isinstanceRtAssertionErrortlenR2R0t
ValueErrorR7Rtc_size_tRRt
RtlMoveMemory(R tmsgtntdestR0((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytwrite�scCs]tj|�}|j|j}tj|�}tjjj|||�|j|7_|jS(s0
Read n bytes from mapped view.
( Rtcreate_string_bufferR7R2RBRRRCtraw(R REtoutRR0((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytread�scCs0tjjj|j�tjjj|j�dS(N(RRRtUnmapViewOfFileR7tCloseHandleR5(R texc_typetexc_valttb((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt__exit__�sN(
R)R*R+RRR<R=RGRKRQ(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR.�s
iiiiiiii i@i�iiiiitTokenAccesscBseZdZRS(i(R)R*tTOKEN_QUERY(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRR�stTokenInformationClasscBseZdZRS(i(R)R*t TokenUser(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRTst
TOKEN_USERcBs/eZdZdejfdejjfgZRS(itSIDt
ATTRIBUTES(R)R*tnumRtc_void_pRtDWORDt_fields_(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRVstSECURITY_DESCRIPTORcBsweZdZejjZdZdejfdejfdefdej fdej fdej fdej fgZ
RS( s�
typedef struct _SECURITY_DESCRIPTOR
{
UCHAR Revision;
UCHAR Sbz1;
SECURITY_DESCRIPTOR_CONTROL Control;
PSID Owner;
PSID Group;
PACL Sacl;
PACL Dacl;
} SECURITY_DESCRIPTOR;
itRevisiontSbz1tControltOwnertGrouptSacltDacl(R)R*R+RRtUSHORTtSECURITY_DESCRIPTOR_CONTROLtREVISIONtc_ubyteRZR\(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR]
s tSECURITY_ATTRIBUTEScBsheZdZdejjfdejfdejjfgZd�Z e
d��Zejd��ZRS(s�
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength;
LPVOID lpSecurityDescriptor;
BOOL bInheritHandle;
} SECURITY_ATTRIBUTES;
tnLengthtlpSecurityDescriptortbInheritHandlecOs/tt|�j||�tjt�|_dS(N(RRiRRtsizeofRj(R R"tkwargs((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR5scCs|jS(N(t_descriptor(R ((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt
descriptor9scCs||_tj|�|_dS(N(RoRt addressofRk(R R((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRp=s (
R)R*R+RRR[RZtBOOLR\RR,Rptsetter(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRi's cCs�tjj�}tjjj||jddtj|��tj|j �}t
tjjj||jtj|�tj|�tj|���tj|tj
t��jS(s:
Given a token, get the token information for it.
i(RRR[Rtadvapi32tGetTokenInformationRYR RHRR
RmtcasttPOINTERRVtcontents(ttokentinformation_classt data_sizetdata((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyRuLscCsMtjj�}tjj|�}ttjjj||tj|���|S(N(RRtHANDLER
RRttOpenProcessTokenR (tproc_handletaccessR-((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyR~Zs
cCs+ttjjj�tj�}t|t�S(s<
Return a TOKEN_USER for the owner of this process.
( R~RRRtGetCurrentProcessRRRSRuRV(tprocess((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pytget_current_userascCs�|dkrt�}nt|t�s3td��t�}t�}||_d|_t j
jjt j
|�tj�t j
jjt j
|�|jd�|S(s�
Return a SECURITY_ATTRIBUTES structure with the SID set to the
specified user (uses current user if none is specified).
s user must be TOKEN_USER instanceiiN(RR�R>RVR?R]RiRpRlRRRttInitializeSecurityDescriptorR RgtSetSecurityDescriptorOwnerRW(tusertSDtSA((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt get_security_attributes_for_userks
(((KR+Rtctypes.wintypesRtparamiko.py3compatRRRRR
t
GMEM_MOVEABLERRtGlobalAllocRtUINTRBtargtypesR}trestypet
GlobalLocktHGLOBALtLPVOIDtGlobalUnlockRrt
GlobalSizeR3tCreateFileMappingRZR[RR6RLRCtHLOCALRtobjectR.tREAD_CONTROLtSTANDARD_RIGHTS_REQUIREDtSTANDARD_RIGHTS_READtSTANDARD_RIGHTS_WRITEtSTANDARD_RIGHTS_EXECUTEtSTANDARD_RIGHTS_ALLtPOLICY_VIEW_LOCAL_INFORMATIONtPOLICY_VIEW_AUDIT_INFORMATIONtPOLICY_GET_PRIVATE_INFORMATIONtPOLICY_TRUST_ADMINtPOLICY_CREATE_ACCOUNTtPOLICY_CREATE_SECRETtPOLICY_CREATE_PRIVILEGEtPOLICY_SET_DEFAULT_QUOTA_LIMITStPOLICY_SET_AUDIT_REQUIREMENTStPOLICY_AUDIT_LOG_ADMINtPOLICY_SERVER_ADMINtPOLICY_LOOKUP_NAMEStPOLICY_NOTIFICATIONtPOLICY_ALL_ACCESStPOLICY_READtPOLICY_WRITEtPOLICY_EXECUTERRRTt StructureRVR]RiRwRtR�RuR~R�RR�(((s4/usr/lib/python2.7/site-packages/paramiko/_winapi.pyt<module>s� $ </
|