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    /