o
    �õ±j¶
  ã                   @   s¾   d dl mZ d dlZd dlmZ 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mZ d dlmZmZ d dlmZ d dlmZ dd g dfd	d
„Zdd g dfdd„Zdd g dfdd„ZdS )é    )ÚhashlibN)ÚOrderedDict)
ÚEncryptedDataÚ	krb5_pvnoÚPrincipalNamer   ÚRealmÚChecksumÚ	APOptionsÚAuthenticatorÚTicketÚAP_REQ)Ú_enctype_table)Ú	NAME_TYPEÚMESSAGE_TYPE)ÚAuthenticatorChecksum)ÚChannelBindingsStructc              	   C   s   t | ||d |d ||||ƒS )NÚcrealmÚcname)Úconstruct_apreq_from_tgs)ÚtgsÚ
sessionkeyÚtgtÚflagsÚ
seq_numberÚap_optsÚcb_data© r   ú”/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/protocol/ticketutils.pyÚconstruct_apreq_from_tgs_tgt   s   ør   c              	   C   s"   t t| d ƒ ¡ |||||||ƒS )NÚticket)Úconstruct_apreq_from_ticketr   Údump)r   r   r   r   r   r   r   r   r   r   r   r      s   ør   c                 C   s‚  t j  t jj¡}i }	t|	d< t|tƒr||	d< nt|ƒ|	d< zt|ƒ|	d< W n   t|tƒr4||	d< nttj	j
|gdœƒ|	d< Y |j|	d< |jdd�|	d< |d ur…tƒ }
||
_d	|
_|d urotƒ }||_t | ¡ ¡ ¡ |
_i }d
|d< |
 ¡ |d< t|ƒ|	d< ||	d< t|j }| |dt|	ƒ ¡ d ¡}i }t|d< tjj
|d< t | ¡|d< t t!|ƒƒ|d< t"|j|dœƒ|d< t#|ƒ ¡ S )Nzauthenticator-vnor   r   )z	name-typezname-stringÚcusecr   )ÚmicrosecondÚctimes                   i€  Ú	cksumtypeÚchecksumÚcksumz
seq-numberé   Úpvnozmsg-typer   z
ap-options)ÚetypeÚcipherÚauthenticator)$ÚdatetimeÚnowÚtimezoneÚutcr   Ú
isinstancer   r   r   Ú	PRINCIPALÚvaluer#   Úreplacer   r   Úchannel_bindingr   Úapplication_datar   Úmd5Úto_bytesÚdigestr   r   ÚenctypeÚencryptr
   r!   r   Ú
KRB_AP_REQr   Úloadr	   Úsetr   r   )Úticket_datar   r   r   r   r   r   r   r.   Úauthenticator_dataÚacÚ	cb_structÚchksumr+   Úauthenticator_data_encÚap_reqr   r   r   r    &   sJ   



€

r    )Ú	unicryptor   r-   Úasn1crypto.corer   Ú"minikerberos.protocol.asn1_structsr   r   r   r   r   r	   r
   r   r   Ú minikerberos.protocol.encryptionr   Úminikerberos.protocol.constantsr   r   Ú minikerberos.protocol.structuresr   Ú#minikerberos.gssapi.channelbindingsr   r   r   r    r   r   r   r   Ú<module>   s    0