o
    õ±jl
  ã                   @   sl   d dl Z d dlZd dlZd dlmZmZ G dd„ dejƒZG dd„ dƒZG dd„ dejƒZ	G d	d
„ d
ƒZ
dS )é    N)Ú	GSSAPIOIDÚGSSAPITokenc                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	ÚChecksumFlagsé   é   é   é   é   é    i   N)
Ú__name__Ú
__module__Ú__qualname__ÚGSS_C_DELEG_FLAGÚGSS_C_MUTUAL_FLAGÚGSS_C_REPLAY_FLAGÚGSS_C_SEQUENCE_FLAGÚGSS_C_CONF_FLAGÚGSS_C_INTEG_FLAGÚGSS_C_DCE_STYLE© r   r   ú“/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/protocol/structures.pyr      s    r   c                   @   s4   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	S )
ÚAuthenticatorChecksumc                 C   s.   d | _ d | _d | _d | _d | _d | _d | _d S ©N)Úlength_of_bindingÚchannel_bindingÚflagsÚ
delegationÚdelegation_lengthÚdelegation_dataÚ
extensions©Úselfr   r   r   Ú__init__   s   
zAuthenticatorChecksum.__init__c                 C   s   t  t | ¡¡S r   )r   Úfrom_bufferÚioÚBytesIO)Údatar   r   r   Ú
from_bytes   s   z AuthenticatorChecksum.from_bytesc                 C   s¤   t ƒ }tj|  d¡ddd|_|  |j¡|_ttj|  d¡dddƒ|_|jtj@ rKt	tj|  d¡dddƒ|_
tj|  d¡ddd|_|  |j¡|_|  ¡ |_|S ©Nr   ÚlittleF)Ú	byteorderÚsignedr   )r   Úintr'   Úreadr   r   r   r   r   Úboolr   r   r   r   )ÚbufferÚacr   r   r   r#       s   
z!AuthenticatorChecksum.from_bufferc                 C   s    t | jƒjdddd}|| j7 }|| jjdddd7 }| jtj@ rD|t| jƒjdddd7 }|t | j ¡ ƒjdddd7 }|| j ¡ 7 }| j	rN|| j	 ¡ 7 }|S r(   )
Úlenr   Úto_bytesr   r   r   r,   r   r   r   )r!   Útr   r   r   r2   .   s   
zAuthenticatorChecksum.to_bytesN)r   r   r   r"   Ústaticmethodr'   r#   r2   r   r   r   r   r      s    	

r   c                   @   s    e Zd ZdZdZdZdd„ ZdS )ÚKRB5TokenTokIDé   i   i   c                 C   s   | j jdddS )Nr   Úbig)r*   )Úvaluer2   r    r   r   r   Ú	get_bytesA   s   zKRB5TokenTokID.get_bytesN)r   r   r   Ú
KRB_AP_REQÚ
KRB_AP_REPÚ	KRB_ERRORr9   r   r   r   r   r5   <   s
    r5   c                   @   s   e Zd Zdd„ Zddd„ZdS )Ú	KRB5Tokenc                 C   s   t dƒ| _|| _d S )NÚkrb5)r   ÚoidÚinner_token)r!   r@   r   r   r   r"   G   s   

zKRB5Token.__init__úutf-8c                 C   s<   | j  ¡ }|tj ¡ 7 }|| j7 }tt t	|d ¡ ¡|ƒS )N)Úcontents)
r?   Údumpr5   r:   r9   r@   ÚstrÚbase64Ú	b64encoder   )r!   ÚencodingÚtokenr   r   r   Úget_apreq_tokenK   s   

zKRB5Token.get_apreq_tokenN)rA   )r   r   r   r"   rI   r   r   r   r   r=   F   s    r=   )r$   ÚenumrE   Ú"minikerberos.protocol.asn1_structsr   r   ÚIntFlagr   r   r5   r=   r   r   r   r   Ú<module>   s    
*
