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		