o
    j                     @   sB   d dl mZ d dlmZ d dlmZ d dlmZ G dd dZdS )    )logger)NTLMClientNative)	WSNETAuth)ISC_REQc                   @   s   e Zd Zdd Zdd Zedd Zdd Zd,d
dZd,ddZ	dd Z
d-ddZd.ddZdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd Z
d-d(dZd/d)efd*d+ZdS )0NTLMClientWSNETc                 C   s*   || _ t | _d| _d | _t| j | _d S )Nr   )
credentialr   sspi
iterationssession_keyr   ntlm_ctx)selfr    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asyauth/protocols/ntlm/client/wsnet.py__init__   s
   zNTLMClientWSNET.__init__c                 C   s   d S Nr   r   r   r   r   setup   s   zNTLMClientWSNET.setupc                 C      | j jS r   )r   ntlmChallenger   r   r   r   r      s   zNTLMClientWSNET.ntlmChallengec                 C   r   r   )r   
seq_numberr   r   r   r   get_seq_number   s   zNTLMClientWSNET.get_seq_numberClientc                 C      | j j|dS N)mode)r   get_sealkeyr   r   r   r   r   r         zNTLMClientWSNET.get_sealkeyc                 C   r   r   )r   get_signkeyr   r   r   r   r      r   zNTLMClientWSNET.get_signkeyc                    s   | j |||I d H S r   r   encrypt)r   datasequence_nor   r   r   r       s   zNTLMClientWSNET.encryptinitNc                       | j j||||dI d H S N)	direction	auth_datar   decryptr   r!   r"   r&   r'   r   r   r   r)   "      zNTLMClientWSNET.decryptFc                    r$   )N)r&   reset_cipher)r   sign)r   r!   
message_nor&   r,   r   r   r   r-   %   r+   zNTLMClientWSNET.signc                       | j ||I d H S r   )r   verify)r   r!   	signaturer   r   r   r0   (      zNTLMClientWSNET.verifyc                 C   s   | j ||||||S r   )r   SEAL)r   
signingKey
sealingKeymessageToSignmessageToEncryptseqNumcipher_encryptr   r   r   r3   +   s   zNTLMClientWSNET.SEALc                 C   s   | j ||||S r   )r   SIGN)r   r4   messager8   r9   r   r   r   r:   .   s   zNTLMClientWSNET.SIGNc                 C   s   | j S r   )r
   r   r   r   r   get_session_key1   s   zNTLMClientWSNET.get_session_keyc                 C   
   | j  S r   )r   get_extra_infor   r   r   r   r>   4      
zNTLMClientWSNET.get_extra_infoc                 C   r=   r   )r   is_extended_securityr   r   r   r   r@   7   r?   z$NTLMClientWSNET.is_extended_securityc                 C   r=   r   )r   signing_neededr   r   r   r   rA   :   r?   zNTLMClientWSNET.signing_neededc                 C   r=   r   )r   encryption_neededr   r   r   r   rB   =   r?   z!NTLMClientWSNET.encryption_neededc                    r/   r   r   )r   r!   r.   r   r   r   r    @   r2   c                    r$   r%   r(   r*   r   r   r   r)   C   r+   flagsc              
      sD  z|d u r	t j}|d u r:| jjdddd|jddI d H \}}}}	|	d ur'|	|  jd7  _| j| |dd fW S | j| | jjdddd|j|dI d H \}}}
}	|	d urZ|	|	d u r}| j	|
 | j
 I d H \| _}	|	d uru|	| j|   | j I d H  |
dd fW S  ty } zd d |fW  Y d }~S d }~ww )	NNTLM        )authdata   TF)r   
CONNECTIONr   authenticatevaluer	   r   load_negotiateload_challengeload_authenticateget_sessionkeyr
   load_sessionkeyr<   
disconnect	Exception)r   authDatarC   cb_dataspnkwargsstatusctxattrnegotiate_rawerrauthenticate_rawer   r   r   rK   F   s6   ((zNTLMClientWSNET.authenticate)r   )r#   N)NF)NNN)__name__
__module____qualname__r   r   propertyr   r   r   r   r    r)   r-   r0   r3   r:   r<   r>   r@   rA   rB   r   rK   r   r   r   r   r      s,    





r   N)	asyauthr   $asyauth.protocols.ntlm.client.nativer   wsnet.pyodide.clientauthr   asyauth.common.winapi.constantsr   r   r   r   r   r   <module>   s
    