a
     ’{a  ã                   @   s¤   d dl Z d dlZe j d d¡ dejd< d dlmZ d dlmZm	Z	m
Z
 d dlm  m  mZ d dlZdZdZG dd	„ d	eƒZed
kr dZdZd dlZe ¡  dS )é    Nz
bin/pythonÚ1ZPYTHONUNBUFFERED)ÚRawKerberosTest)ÚKU_PA_ENC_TIMESTAMPÚKU_AS_REP_ENC_PARTÚKU_TGS_REP_ENC_PART_SUB_KEYFc                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚXrealmKerberosTestsc                    s   t t| ƒ ¡  t| _t| _d S )N)Úsuperr   ÚsetUpÚglobal_asn1_printZdo_asn1_printÚglobal_hexdumpZ
do_hexdump)Úself©Ú	__class__© ú?/usr/lib/python3/dist-packages/samba/tests/krb5/xrealm_tests.pyr	   (   s    zXrealmKerberosTests.setUpc                 C   s,  |   ¡ }| ¡ }| ¡ }| jd|gd}| jdd|gd}| jdd}t d¡}d }d}	| j|t|ƒ|||d |d d	|	d d d
}
|  	|
¡}|  
|¡ |  |d d¡ |  |d d¡ | j|d t ¡ d}|D ]}|d dkrÌ|d } qêqÌ| j|t ¡ d}|  ||d ¡}|  ¡ \}}|  ||¡}| j|t ¡ d}|  |t|¡}| j|t ¡ d}|  d|¡}t d¡}|g}| j|t|ƒ|||d |d d	|	d d d
}
|  	|
¡}|  
|¡ |d }|  |d¡ | t|d d ¡}z| j|t ¡ d}W n& ty   | j|t ¡ d}Y n0 tj d¡}| jdd|gd}t d¡}| jdd}|d }|   |d ¡}g }|  !|j"¡}|  ¡ \}}| j#||||t|ƒ|||d |d d|	d d d d ||d}
|  	|
¡}|  
|¡ |d }|  |d¡ | t$|d d ¡}| j|t ¡ d}t%t&t 'd¡ƒƒd }t '|d ¡| s(J ‚d S )Né   )Z	name_typeÚnamesé   Zkrbtgti Œ  )ÚoffsetZforwardable)é   é   é   iÿÿÿ)ÚpadataÚkdc_optionsÚcnameÚrealmÚsnameÚ	from_timeÚ	till_timeÚ
renew_timeÚnonceÚetypesÚ	addressesÚadditional_ticketszmsg-typeé   z
error-codeé   ze-data)Zasn1Speczpadata-typeé   zpadata-valuer   é   zenc-partZcipherZTRUST_REALMÚticketÚkeyiþÿÿ)r   ÚcusecÚctimer(   r   r   r   r   r   r   r   r    r!   r"   ZEncAuthorizationDataZEncAuthorizationData_keyr#   Úticket_session_keyZauthenticator_subkeyé   Úflags)(Zget_user_credsZget_usernameZ	get_realmZPrincipalName_createZget_KerberosTimeÚ	krb5_asn1Z
KDCOptionsZAS_REQ_createÚstrZsend_recv_transactionZassertIsNotNoneZassertEqualZ
der_decodeZMETHOD_DATAZETYPE_INFO2ZPasswordKey_from_etype_info2Zget_KerberosTimeWithUsecZPA_ENC_TS_ENC_createZ
der_encodeZPA_ENC_TS_ENCZEncryptedData_creater   ZEncryptedDataZPA_DATA_createZdecryptr   ZEncASRepPartÚ	ExceptionZEncTGSRepPartÚsambaÚtestsZenv_get_var_valueZEncryptionKey_importZ	RandomKeyÚetypeZTGS_REQ_creater   ÚlenÚtupleZTicketFlags)r   Z
user_credsÚuserr   r   r   Ztillr   r   r!   ZreqZrepZ
rep_padataZpaZetype_info2r)   ZpatimeZpausecZpa_tsZmsg_typeZ	enc_part2Ztrust_realmr(   r,   Zsubkeyr+   r*   Zfwd_posr   r   r   Útest_xrealm-   sæ    
õ

ÿÿ
õ

ÿ
ÿÿ
î

ÿÿzXrealmKerberosTests.test_xrealm)Ú__name__Ú
__module__Ú__qualname__r	   r8   Ú__classcell__r   r   r   r   r   &   s   r   Ú__main__)ÚsysÚosÚpathÚinsertÚenvironZsamba.tests.krb5.raw_testcaser   Z"samba.tests.krb5.rfc4120_constantsr   r   r   Zsamba.tests.krb5.rfc4120_pyasn1r3   Zkrb5Zrfc4120_pyasn1r/   Zsamba.testsr2   r
   r   r   r9   ZunittestÚmainr   r   r   r   Ú<module>   s    
 