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rt }
||
_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