o
    j                     @   s
  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
 d dlZdZd ZdZdZG dd deZG dd	 d	eZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd dZdS )    )
ObjectIdentifierSequence
SequenceOf
EnumeratedGeneralStringOctetString	BitStringChoiceAnyBooleanNexplicit      c                   @   s   e Zd ZddddddZdS )MechTypez2NTLMSSP - Microsoft NTLM Security Support ProviderzMS KRB5 - Microsoft Kerberos 5zKRB5 - Kerberos 5z KRB5 - Kerberos 5 - User to Userz7NEGOEX - SPNEGO Extended Negotiation Security Mechanism)z1.3.6.1.4.1.311.2.2.10z1.2.840.48018.1.2.2z1.2.840.113554.1.2.2z1.2.840.113554.1.2.2.3z1.3.6.1.4.1.311.2.2.30N__name__
__module____qualname___map r   r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asyauth/protocols/spnego/messages/asn1_structs.pyr      s    
r   c                   @   s   e Zd ZeZdS )	MechTypesN)r   r   r   r   _child_specr   r   r   r   r      s    r   c                   @   s    e Zd ZddddddddZd	S )
ContextFlags	delegFlag
mutualFlag
replayFlagsequenceFlaganonFlagconfFlag	integFlag)r   r   r               Nr   r   r   r   r   r       s    
r   c                   @   s   e Zd ZdddddZdS )NegStatezaccept-completedzaccept-incompleterejectzrequest-mic)r   r   r   r!   Nr   r   r   r   r   r%   +   s    
r%   c                   @   s,   e Zd ZdedddfdedddfgZdS )NegHintshintNamer   T)r   optionalhintAddressr   N)r   r   r   r   r   _fieldsr   r   r   r   r'   3   s    r'   c                
   @   s^   e Zd Zdeeddfdeedddfdeed	ddfd
eedddfdeedddfgZdS )NegTokenInit2	mechTypesr   )tag_typetagreqFlagsr   Tr.   r/   r)   	mechTokenr   negHintsr!   mechListMICr"   N)	r   r   r   r   TAGr   r   r'   r+   r   r   r   r   r,   ;   s    r,   c                	   @   sP   e Zd Zdeedddfdeedddfdeedddfd	eed
ddfgZdS )NegTokenRespnegStater   Tr1   supportedMechr   responseTokenr   r4   r!   N)r   r   r   r%   r5   r   r   r+   r   r   r   r   r6   H   s    r6   c                   @   s0   e Zd ZdededfifdededfifgZdS )NegotiationTokennegTokenInitr   r   negTokenRespr   N)r   r   r   r,   CONTEXTr6   _alternativesr   r   r   r   r:   S   s    r:   c                   @   s   e Zd ZdZdZdefgZdS )
GSS_SPNEGOr   r   r:   N)r   r   r   class_r/   r:   r+   r   r   r   r   r?   [   s
    r?   c                   @   s   e Zd ZddiZdS )GSSTypez1.3.6.1.5.5.2SPNEGONr   r   r   r   r   rA   d   s    rA   c                   @   s<   e Zd ZdZdZdeddifdeddifgZdZde	iZ
d	S )
GSSAPIr   r   typer)   Fvalue)rD   rE   rB   N)r   r   r   r@   r/   rA   r
   r+   	_oid_pairr:   
_oid_specsr   r   r   r   rC   j   s    rC   c                   @   s>   e Zd ZdddZedd Zedd Zd	d
 Zdd ZdS )	KRB5TokenN    c                 C   s   || _ || _d S N)tok_iddata)selfrL   rK   r   r   r   __init__{   s   
zKRB5Token.__init__c                 C   s   t t| S rJ   )rH   from_bufferioBytesIO)rL   r   r   r   
from_bytes   s   zKRB5Token.from_bytesc                 C   s   t  }| d d}tj| dddd}t| |dkr |}n|dM }t| tj| |ddd}td|  | d	}tj| d
ddd|_| |d |_t|j |S )Nr   bigFsigned   iz
length: %s   r      )rH   readintrR   inputrK   rL   )bufftlengthxoid_asn1r   r   r   rO      s    


zKRB5Token.from_bufferc                 C   sP   |dkr|j ddddS | | d d d}dt|B j dddd}|| S )	NrW   r   rT   FrU            )to_bytes
bit_lengthlen)rM   r`   lbr^   r   r   r   length_encode   s
   zKRB5Token.length_encodec                 C   sB   d}||  dt| j 7 }|td7 }|| j7 }|| j7 }|S )N   `rY   06092a864886f712010202)ri   rg   rL   bytesfromhexrK   )rM   r^   r   r   r   re      s   

zKRB5Token.to_bytes)NrI   )	r   r   r   rN   staticmethodrR   rO   ri   re   r   r   r   r   rH   z   s    


rH   )asn1crypto.corer   r   r   r   r   r   r   r	   r
   r   rP   r5   	UNIVERSALAPPLICATIONr=   r   r   r   r%   r'   r,   r6   r:   r?   rA   rC   rH   r   r   r   r   <module>   s$   0		