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   $	