o
    j\                     @   s   d dl mZmZmZmZmZmZ ddlmZ dd Z	dddZ
d	d
 Zdd Zdd ZdddZdd Zdd Zdd Zdd ZG dd dejZG dd dejZG dd dejZG d d! d!ejZG d"d# d#eZG d$d% d%ejZG d&d' d'ejZG d(d) d)ejZG d*d+ d+ejZ G d,d- d-ejZ!G d.d/ d/ejZ"G d0d1 d1ej#Z$G d2d3 d3ejZ%G d4d5 d5ejZ&G d6d7 d7ejZ'G d8d9 d9ejZ(G d:d; d;e$Z)G d<d= d=ejZ*G d>d? d?ejZ+G d@dA dAe$Z,G dBdC dCejZ-G dDdE dEejZ.G dFdG dGe.Z/G dHdI dIe.Z0G dJdK dKejZ1G dLdM dMejZ2G dNdO dOejZ3G dPdQ dQejZ4G dRdS dSe4Z5G dTdU dUe4Z6G dVdW dWe1Z7G dXdY dYe1Z8G dZd[ d[e$Z9G d\d] d]ejZ:G d^d_ d_ejZ;G d`da daejZ<G dbdc dcejZ=G ddde deejZ>G dfdg dgejZ?G dhdi diejZ@G djdk dkejZAG dldm dmejZBG dndo doejZCG dpdq dqejZDG drds dsejZEG dtdu duejZFG dvdw dwejZGG dxdy dye%ZHG dzd{ d{ejZIG d|d} d}ejZJG d~d dejZKG dd dejZLG dd dejZMG dd de!ZNG dd dejZOG dd dejZPG dd de!ZQG dd dejZRG dd dejZSG dd dejZTG dd dejZUG dd dejZVG dd dejZWG dd dejZXG dd dejZYG dd dejZZG dd dejZ[dS )    )tag	namedtypeuniv
constraintcharuseful   )	constantsc                 C   s    t jjttjtjt| S N)	r   SequencetagSettagExplicitlyr   TagtagClassApplicationtagFormatConstructedint)	tag_value r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/krb5/asn1.py_application_tag4   s
   r   pvnoc                 C   s   t || t tdddS )N   subtypeSpec)_sequence_componentr   Integerr   ValueRangeConstraint)r   namer   r   r   _vno_component9   s   

r   c                 C   s(   t jdd |D  }td| t |dS )Nc                 s   s    | ]
}t t|V  qd S r
   )r   SingleValueConstraintr   ).0vr   r   r   	<genexpr>@   s    z&_msg_type_component.<locals>.<genexpr>zmsg-typer   )r   ConstraintsUnionr   r   r   )r   valuescr   r   r   _msg_type_component>   s   r&   c                 K   *   t | |jddttjtj|i|S NexplicitTagr   )r   	NamedTypesubtyper   r   tagClassContexttagFormatSimpler   r   type	subkwargsr   r   r   r   D      r   c                 K   r'   r(   )r   OptionalNamedTyper+   r   r   r,   r-   r.   r   r   r   _sequence_optional_componentJ   r1   r3   Nc                 O   sL   |  ||}|d ur|  |||g|R i | n|  | | |S r
   )setComponentByNamegetComponentByName)seqr   builderargskwargs	componentr   r   r   seq_setP   s
    

r;   c                 O   s2   |  ||}| D ]
\}}| || qd S r
   )r4   r5   items)r6   r   pairsr8   r9   r:   kr!   r   r   r   seq_set_dictX      r?   c                 C   s2   |  ||}t|D ]
\}}||| qd S r
   )r4   r5   	enumeratesetComponentByPosition)r6   r   iterabler:   posr!   r   r   r   seq_set_iter]   r@   rE   c                 C   s   t | ||j d S r
   )r;   to_asn1)r6   r   flagsr   r   r   seq_set_flagsb   s   rH   c                 C   s\   |  |}|d u r| | |}t|}|||}| D ]
\}}||| q!d S r
   )r5   r4   lenrB   getComponentByPositionr<   )r6   r   r=   r:   indexelementr>   r!   r   r   r   
seq_appende   s   
rM   c                   @       e Zd Zejjedd ZdS )Int32i   iN__name__
__module____qualname__r   r   r   r   r   r   r   r   r   rO   o       

rO   c                   @      e Zd ZdS )UInt32NrQ   rR   rS   r   r   r   r   rV   s       rV   c                   @   rN   )Microsecondsr   i?B NrP   r   r   r   r   rY   x   rT   rY   c                   @   s   e Zd ZdZdS )KerberosStringzutf-8N)rQ   rR   rS   encodingr   r   r   r   rZ   |   s    rZ   c                   @   rU   )RealmNrW   r   r   r   r   r\      rX   r\   c                	   @   s4   e Zd Zeedde eddeje	 dZ
dS )PrincipalNamez	name-typer   zname-stringr   componentTypeN)rQ   rR   rS   r   
NamedTypesr   rO   r   
SequenceOfrZ   r_   r   r   r   r   r]      s    r]   c                   @   rU   )KerberosTimeNrW   r   r   r   r   rb      rX   rb   c                   @   .   e Zd Zeedde edde Z	dS )HostAddressz	addr-typer   addressr   N
rQ   rR   rS   r   r`   r   rO   r   OctetStringr_   r   r   r   r   rd      
    rd   c                   @      e Zd Ze ZdS )HostAddressesN)rQ   rR   rS   rd   r_   r   r   r   r   rj          
rj   c                	   @   s6   e Zd Zejeedde edde	 dZ
dS )AuthorizationDatazad-typer   zad-datar   r^   N)rQ   rR   rS   r   r   r   r`   r   rO   rg   r_   r   r   r   r   rl      s
    rl   c                   @   rc   )PA_DATAzpadata-typer   zpadata-value   Nrf   r   r   r   r   rm      rh   rm   c                   @   rU   )KerberosFlagsNrW   r   r   r   r   ro      s    ro   c                	   @   s:   e Zd Zeedde edde edde	
 ZdS )EncryptedDataetyper   kvnor   cipherrn   N)rQ   rR   rS   r   r`   r   rO   r3   rV   r   rg   r_   r   r   r   r   rp          rp   c                   @   rc   )EncryptionKeykeytyper   keyvaluer   Nrf   r   r   r   r   ru      rh   ru   c                   @   rc   )Checksum	cksumtyper   checksumr   Nrf   r   r   r   r   rx      rh   rx   c                	   @   sP   e Zd ZeejjjZe	
edddedde edde edd	e Zd
S )Ticketztkt-vnor   r   r   realmr   snamern   enc-part   N)rQ   rR   rS   r   r	   ApplicationTagNumbersr{   valuer   r   r`   r   r   r\   r]   rp   r_   r   r   r   r   r{      s    
r{   c                   @   rU   )TicketFlagsNrW   r   r   r   r   r      rX   r   c                   @   rc   )TransitedEncodingztr-typer   contentsr   Nrf   r   r   r   r   r      rh   r   c                   @   s   e Zd ZeejjjZe	
edde edde edde edde ed	d
e edde edde edde edde edde edde ZdS )EncTicketPartrG   r   keyr   crealmrn   cnamer   	transited   authtimer   	starttime   endtime   
renew-till   caddr	   authorization-data
   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r   ru   r\   r]   r   rb   r3   rj   rl   r_   r   r   r   r   r      s    r   c                   @   rU   )
KDCOptionsNrW   r   r   r   r   r      rX   r   c                   @   s   e Zd Zeedde edde edde	 edde ed	d
e
 edde
 edde
 edde eddeje dedde edde eddeje dZdS )KDC_REQ_BODYzkdc-optionsr   r   r   r}   rn   r~   r   fromr   tillr   rtimer   noncer   rq   r   r^   	addressesr   zenc-authorization-datar   zadditional-tickets   N)rQ   rR   rS   r   r`   r   r   r3   r]   r\   rb   rV   r   ra   rO   rj   rp   r{   r_   r   r   r   r   r      s*    r   c                
   @   sR   e Zd Zeededejj	j
ejjj
feddeje dedde ZdS )	KDC_REQr   rn   padatar   r^   zreq-bodyr   N)rQ   rR   rS   r   r`   r   r&   r	   r   AS_REQr   TGS_REQr3   r   ra   rm   r   r   r_   r   r   r   r   r      s    r   c                   @      e Zd ZeejjjZdS )r   N)	rQ   rR   rS   r   r	   r   r   r   r   r   r   r   r   r          r   c                   @   r   )r   N)	rQ   rR   rS   r   r	   r   r   r   r   r   r   r   r   r      r   r   c                   @   sv   e Zd Zeededejj	j
ejjj
feddeje dedde edd	e ed
de edde ZdS )KDC_REPr   r   r   rn   r^   r   r   r   r   ticketr   r   r   N)rQ   rR   rS   r   r`   r   r&   r	   r   AS_REPr   TGS_REPr3   r   ra   rm   r   r\   r]   r{   rp   r_   r   r   r   r   r     s    r   c                   @   s4   e Zd Zejeedde edde	 dZ
dS )LastReqzlr-typer   zlr-valuer   r^   N)rQ   rR   rS   r   r   r   r`   r   rO   rb   r_   r   r   r   r   r     s
    r   c                   @   ri   )METHOD_DATAN)rQ   rR   rS   rm   r_   r   r   r   r   r     rk   r   c                   @   s   e Zd Zeedde edde edde e	dde
 ed	d
e edde
 e	dde
 edde
 e	dde
 edde edde e	dde e	dde ZdS )EncKDCRepPartr   r   zlast-reqr   r   rn   zkey-expirationr   rG   r   r   r   r   r   r   r   r   r   srealmr   r~   r   r   r   encrypted_pa_data   N)rQ   rR   rS   r   r`   r   ru   r   rV   r3   rb   r   r\   r]   rj   r   r_   r   r   r   r   r     s     r   c                   @   r   )EncASRepPartN)	rQ   rR   rS   r   r	   r   r   r   r   r   r   r   r   r   )  r   r   c                   @   r   )EncTGSRepPartN)	rQ   rR   rS   r   r	   r   r   r   r   r   r   r   r   r   ,  r   r   c                   @   r   )r   N)	rQ   rR   rS   r   r	   r   r   r   r   r   r   r   r   r   /  r   r   c                   @   r   )r   N)	rQ   rR   rS   r   r	   r   r   r   r   r   r   r   r   r   2  r   r   c                   @   rU   )	APOptionsNrW   r   r   r   r   r   5  rX   r   c                   @   s   e Zd ZeejjjZe	
edddedde edde edd	e ed
de edde edde edde edde 	ZdS )Authenticatorzauthenticator-vnor   r|   r   r   r   rn   cksumr   cusecr   ctimer   subkeyr   
seq-numberr   r   r   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r   r\   r]   r3   rx   rY   rb   ru   rV   rl   r_   r   r   r   r   r   8  s    
r   c                
   @   s\   e Zd ZeejjjZe	
ededejjjfedde edde edde Zd	S )
AP_REQr   r   z
ap-optionsrn   r   r   authenticatorr   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r&   r   r   r{   rp   r_   r   r   r   r   r   G  s    r   c                   @   sX   e Zd Zejjeej	ej
dZeede ede ede ZdS )GSSAPIHeader_KRB5_AP_REQr   tokenOidkrb5_ap_reqapReqN)rQ   rR   rS   r   r   r   tagImplicitlyr   r   r   r   r   r`   r*   ObjectIdentifierBooleanr   r_   r   r   r   r   r   Q  s    r   c                   @   D   e Zd ZeejjjZe	
ededejjjfedde ZdS )AP_REPr   r   r   rn   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r&   r   rp   r_   r   r   r   r   r   Z      r   c                	   @   sR   e Zd ZeejjjZe	
edde edde edde edde Zd	S )
EncAPRepPartr   r   r   r   r   rn   r   r   N)rQ   rR   rS   r   r	   r   EncApRepPartr   r   r   r`   r   rb   rY   r3   ru   rV   r_   r   r   r   r   r   b  s    r   c                   @   s^   e Zd Zeedde edde	 edde
 edde ed	d
e edde ZdS )KRB_SAFE_BODY	user-datar   	timestampr   usecrn   r   r   	s-addressr   	r-addressr   N)rQ   rR   rS   r   r`   r   r   rg   r3   rb   rY   rV   rd   r_   r   r   r   r   r   k  s    r   c                	   @   sP   e Zd ZeejjjZe	
ededejjjfedde edde ZdS )KRB_SAFEr   r   z	safe-bodyrn   r   r   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r&   r   r   rx   r_   r   r   r   r   r   u  s    r   c                   @   r   )KRB_PRIVr   r   r   r   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r&   r   rp   r_   r   r   r   r   r   ~  r   r   c                   @   sl   e Zd ZeejjjZe	
edde edde edde edde ed	d
e edde ZdS )EncKrbPrivPartr   r   r   r   r   rn   r   r   r   r   r   r   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r   rg   r3   rb   rY   rV   rd   r_   r   r   r   r   r     s    r   c                
   @   sX   e Zd ZeejjjZe	
ededejjjfeddeje dedde ZdS )	KRB_CREDr   r   ticketsrn   r^   r   r   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r&   r3   r   ra   r{   r   rp   r_   r   r   r   r   r     s    r   c                   @   s   e Zd Zeedde edde edde	 edde
 ed	d
e edde edde edde edde edde	 edde ZdS )KrbCredInfor   r   prealmr   pnamern   rG   r   r   r   r   r   r   r   r   r   r   r   r~   r   r   r   N)rQ   rR   rS   r   r`   r   ru   r3   r\   r]   r   rb   rj   r_   r   r   r   r   r     s    r   c                   @   sr   e Zd ZeejjjZe	
eddeje dedde edde edd	e ed
de edde ZdS )EncKrbCredPartzticket-infor   r^   r   r   r   rn   r   r   r   r   r   r   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r   ra   r   r3   rV   rb   rY   rd   r_   r   r   r   r   r     s    r   c                   @   s   e Zd ZeejjjZe	
ededejjjfedde edde edde ed	d
e edde edde edde edde edde edde edde ZdS )	KRB_ERRORr   r   r   rn   r   r   stimer   susecr   z
error-coder   r   r   r   r   r}   r   r~   r   ze-textr   ze-datar   N)rQ   rR   rS   r   r	   r   r   r   r   r   r`   r   r&   r3   rb   rY   r   rO   r\   r]   rZ   r   rg   r_   r   r   r   r   r     s"    r   c                   @   .   e Zd Zeedde edde	 Z
dS )
TYPED_DATA	data-typer   
data-valuer   NrQ   rR   rS   r   r`   r   rO   r3   r   rg   r_   r   r   r   r   r     rh   r   c                   @   rU   )PA_ENC_TIMESTAMPNrW   r   r   r   r   r     rX   r   c                   @   ,   e Zd Zeedde edde Z	dS )PA_ENC_TS_ENCpatimestampr   pausecr   N)
rQ   rR   rS   r   r`   r   rb   r3   rY   r_   r   r   r   r   r     
    r   c                   @   r   )ETYPE_INFO_ENTRYrq   r   saltr   Nr   r   r   r   r   r     rh   r   c                   @   ri   )
ETYPE_INFON)rQ   rR   rS   r   r_   r   r   r   r   r     rk   r   c                	   @   s:   e Zd Zeedde edde edde	
 ZdS )ETYPE_INFO2_ENTRYrq   r   r   r   	s2kparamsrn   N)rQ   rR   rS   r   r`   r   rO   r3   rZ   r   rg   r_   r   r   r   r   r     rt   r   c                   @   ri   )ETYPE_INFO2N)rQ   rR   rS   r   r_   r   r   r   r   r     rk   r   c                   @   rU   )AD_IF_RELEVANTNrW   r   r   r   r   r     rX   r   c                	   @   sD   e Zd Zeedde edde edde	 edde
 Zd	S )
AD_KDCIssuedzad-checksumr   zi-realmr   zi-snamern   elementsr   N)rQ   rR   rS   r   r`   r   rx   r3   r\   r]   rl   r_   r   r   r   r   r         r   c                   @   r   )	AD_AND_ORzcondition-countr   r   r   N)
rQ   rR   rS   r   r`   r   rO   r3   rl   r_   r   r   r   r   r     r   r   c                   @   rU   )AD_MANDATORY_FOR_KDCNrW   r   r   r   r   r     rX   r   c                   @   s8   e Zd Zeede je	
e	je	jddZdS )KERB_PA_PAC_REQUESTzinclude-pacr   r)   N)rQ   rR   rS   r   r`   r*   r   r   r+   r   r   r,   r-   r_   r   r   r   r   r     s    $r   c                	   @   sD   e Zd Zeedde edde edde	 edde
 Zd	S )
PA_FOR_USER_ENCuserNamer   	userRealmr   r   rn   zauth-packager   N)rQ   rR   rS   r   r`   r   r]   r3   r\   rx   rZ   r_   r   r   r   r   r     r   r   c                   @   rc   )KERB_ERROR_DATAr   r   r   rn   Nrf   r   r   r   r   r     rh   r   c                   @   s    e Zd Zeedde ZdS )PA_PAC_OPTIONSrG   r   N)rQ   rR   rS   r   r`   r   ro   r_   r   r   r   r   r   	  s    r   c                   @   ri   )KERB_KEY_LIST_REQN)rQ   rR   rS   rO   r_   r   r   r   r   r     rk   r   c                   @   ri   )KERB_KEY_LIST_REPN)rQ   rR   rS   ru   r_   r   r   r   r   r     rk   r   c                   @   r   )KERB_SUPERSEDED_BY_USERr   r   r   r   N)
rQ   rR   rS   r   r`   r   r]   r3   r\   r_   r   r   r   r   r     r   r   c                
   @   sR   e Zd Zeedde edde edde	 edde
 ed	d
e ZdS )	S4UUserIDr   r   r   r   r   rn   zsubject-certificater   optionsr   N)rQ   rR   rS   r   r`   r   rV   r]   r3   r\   r   rg   ro   r_   r   r   r   r   r     s    r   c                   @   sX   e Zd Zeede je	ej
ejddede je	ej
ejddZdS )PA_S4U_X509_USERzuser-idr   r   rz   r   N)rQ   rR   rS   r   r`   r*   r   r+   r   r   r,   r   rx   r_   r   r   r   r   r   #  s
    ""r   c                
   @   sb   e Zd Zeeddeje de	ddeje dedde
 e	dd	e ed
de
 ZdS )KERB_DMSA_KEY_PACKAGEzcurrent-keysr   r^   zprevious-keysr   zeffective-timern   reservedr   zexpiration-timer   N)rQ   rR   rS   r   r`   r   r   ra   ru   r3   rb   rg   r_   r   r   r   r   r   (  s    r   )r   r
   )\pyasn1.typer   r   r   r   r   r    r	   r   r   r&   r   r3   r;   r?   rE   rH   rM   r   rO   rV   rY   GeneralStringrZ   r\   r   r]   GeneralizedTimerb   rd   ra   rj   rl   rm   	BitStringro   rp   ru   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    .


	

		
	
	