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
    