o
    �õ±j?  ã                   @   s`   d dl Z d dlZd dlZG dd„ de jƒZG dd„ de jƒZG dd„ dejƒZG dd	„ d	ƒZ	dS )
é    Nc                   @   s   e Zd ZdZdZdZdS )Ú
MsvAvFlagsé   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚCONSTRAINED_AUTHÚMIC_PRESENTÚSPN_UNTRUSTED© r   r   ú›/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asyauth/protocols/ntlm/structures/avpair.pyr      s    r   c                   @   s8   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdS )Ú
AVPAIRTyper   r   r   é   r   é   é   é   é   é	   é
   N)r   r   r   ÚMsvAvEOLÚMsvAvNbComputerNameÚMsvAvNbDomainNameÚMsvAvDnsComputerNameÚMsvAvDnsDomainNameÚMsvAvDnsTreeNamer   ÚMsvAvTimestampÚMsvAvSingleHostÚMsvAvTargetNameÚMsvChannelBindingsr   r   r   r   r   
   s    r   c                   @   s:   e Zd ZdZddd„Zedd„ ƒZedd„ ƒZd	d
„ ZdS )ÚAVPairszû
	AVPairs is a dictionary-like object that stores the "AVPair list" in a key -value format where key is an AVPAIRType object and value is the corresponding object defined by the MSDN documentation. Usually it's string but can be other object as well
	Nc                 C   s   t j | |¡ d S ©N)ÚcollectionsÚUserDictÚ__init__)ÚselfÚdatar   r   r   r$      s   zAVPairs.__init__c                 C   s   t  t | ¡¡S r!   )r    Úfrom_bufferÚioÚBytesIO)Úbbuffr   r   r   Ú
from_bytes!   s   zAVPairs.from_bytesc                 C   s¸   t ƒ }	 ttj|  d¡ddd�ƒ}tj|  d¡ddd�}|tjkr$	 |S |tjtjtjtj	tj
tjfv r?|  |¡ d¡||< n|tjkrTttj|  d¡ddd�ƒ||< n|  |¡||< q)NTr   ÚlittleF©Ú	byteorderÚsignedúutf-16ler   )r    r   Úintr+   Úreadr   r   r   r   r   r   r   Údecoder   )ÚbuffÚavpÚavIdÚAvLenr   r   r   r'   %   s&   
ðû
 ìzAVPairs.from_bufferc                 C   sD   d}| j D ]}|t| j | |d� ¡ 7 }q|tdtjd� ¡ 7 }|S )Nó    )r&   ÚtypeÚ )r&   ÚAVPairÚto_bytesr   r   )r%   ÚtÚavr   r   r   r<   @   s
   
zAVPairs.to_bytesr!   )	r   r   r   Ú__doc__r$   Ústaticmethodr+   r'   r<   r   r   r   r   r       s    


r    c                   @   s   e Zd Zddd„Zdd„ ZdS )r;   Nc                 C   s   || _ || _d S r!   )r9   r&   )r%   r&   r9   r   r   r   r$   J   s   
zAVPair.__init__c                 C   s–   | j jjdddd�}d }| j tjtjtjtjtjtj	tj
fv r&| j d¡}n| j tjkr6| jjdddd�}n| j}|t|ƒjdddd�7 }||7 }|S )Nr   r,   Fr-   r0   r   )r9   Úvaluer<   r   r   r   r   r   r   r   r   r&   Úencoder   Úlen)r%   r=   Úraw_datar   r   r   r<   N   s"   úzAVPair.to_bytes)NN)r   r   r   r$   r<   r   r   r   r   r;   I   s    
r;   )
Úenumr(   r"   ÚIntFlagr   ÚEnumr   r#   r    r;   r   r   r   r   Ú<module>   s    /