o
    �õ±jV  ã                   @   s„   d dl Z d dlmZmZmZmZmZ d dlmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZ G dd„ de jƒZG dd	„ d	ƒZdS )
é    N)ÚSECPKG_ATTRÚSECPKG_CREDÚISC_REQÚSEC_EÚ
SSPIResult)ÚAcquireCredentialsHandleÚInitializeSecurityContextÚDecryptMessageÚEncryptMessageÚSecPkgContext_SessionKeyÚQueryContextAttributesÚ(GetSequenceNumberFromEncryptdataKerberos)ÚAP_REQ)ÚInitialContextTokenc                   @   s$   e Zd ZdZdZdZdZdZdZdS )ÚSSPIPackageÚNTLMÚKERBEROSÚDIGESTÚ	NEGOTIATEÚCREDSSPÚSCHANNELN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   © r   r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asyauth/common/winapi/winsspi.pyr   
   s    r   c                   @   sz   e Zd Zdefdd„Zdd„ Zdd„ Zejfdd	„Z	d
e
je
jB e
jB e
jB d
fdd„Zddd„Zddd„Zddd„Zd
S )ÚWinSSPIÚpackagec                 C   s   d | _ d | _|| _d | _d S ©N)Úcred_structÚcontextr   Úflags)Úselfr   r   r   r   Ú__init__   s   
zWinSSPI.__init__c                 C   s
   t | jƒS r   )r   r    )r"   r   r   r   Úget_seq_number   s   
zWinSSPI.get_seq_numberc                 C   s   t ƒ }t| jtj|ƒ |jS r   )r   r   r    r   ÚSESSION_KEYÚBuffer)r"   Ú
sec_structr   r   r   Úget_session_key   s   zWinSSPI.get_session_keyc                 C   s   t || jj||ƒ| _d S r   )r   r   Úvaluer   )r"   Úclient_nameÚtarget_namer!   r   r   r   Úacquire_handle#   s   zWinSSPI.acquire_handleNc                 C   sP   t | j||| j||d�\}| _}| _}|tjkr tj|| j|fS tj|| j|fS )N©ÚtokenÚctxr!   Úcb_data)r   r   r    r!   r   ÚOKr   ÚCONTINUE)r"   ÚtargetÚ
token_datar!   r0   ÚresÚdataÚexpiryr   r   r   Úinitialize_context&   s   &
zWinSSPI.initialize_contextr   c                 C   ó   t | j||ƒ}|S r   )r	   r    ©r"   r6   Ú
message_noÚ	data_buffr   r   r   Ú_unwrap-   ó   zWinSSPI._unwrapc                 C   r9   r   )r
   r    r:   r   r   r   Ú_wrap1   r>   zWinSSPI._wrapc              
   C   sÐ   zP|| _ | js|  || j ¡ tj|v r,t| j| j || j||d�\}| _}}}	||d fW S t| j| j d | j||d�\}| _}}}	t |¡}
t	|
j
d ƒ ¡ |d fW S  tyg } zd d |fW  Y d }~S d }~ww )Nr-   ÚinnerContextToken)r+   r   r,   r   ÚUSE_DCE_STYLEr   r    r   Úloadr   ÚnativeÚdumpÚ	Exception)r"   r+   r!   r4   r*   r0   r5   r6   Úoutputflagsr7   r.   Úer   r   r   Úget_ticket_for_spn5   s   
&&
€ÿzWinSSPI.get_ticket_for_spn)r   )NNNN)r   r   r   r   r#   r$   r(   r   ÚBOTHr,   r   Ú	INTEGRITYÚCONFIDENTIALITYÚSEQUENCE_DETECTÚREPLAY_DETECTr8   r=   r?   rH   r   r   r   r   r      s    $

r   )ÚenumÚasyauth.common.winapi.constantsr   r   r   r   r   Ú"asyauth.common.winapi.functiondefsr   r   r	   r
   r   r   r   Ú"minikerberos.protocol.asn1_structsr   Úasyauth.common.winapi.tokenr   ÚEnumr   r   r   r   r   r   Ú<module>   s   $	