HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/samba/tests/krb5/__pycache__/as_canonicalization_tests.cpython-310.pyc
o

eF�cg8�@sBddlZddlZej�dd�dejd<ddlmZmZddlZddl	m
Z
ddlmm
mZddlmZddlmZdd	lmZdd
lmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"dZ#dZ$eGdd
�d
e��Z%eGdd�de��Z&Gdd�d�Z'dZ(dZ)eGdd�de
��Z*e+dkr�dZ#dZ$ddl,Z,e,�-�dSdS)�Nz
bin/python�1�PYTHONUNBUFFERED)�Enum�unique)�KDCBaseTest)�DONT_USE_KERBEROS)�SEC_CHAN_WKSTA)�DynamicTestCase)�AES256_CTS_HMAC_SHA1_96�AES128_CTS_HMAC_SHA1_96�ARCFOUR_HMAC_MD5�KDC_ERR_PREAUTH_REQUIRED�
KRB_AS_REP�KU_AS_REP_ENC_PART�	KRB_ERROR�KU_PA_ENC_TIMESTAMP�PADATA_ENC_TIMESTAMP�NT_ENTERPRISE_PRINCIPAL�NT_PRINCIPAL�NT_SRV_INSTFc@s8eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
d�ZdS)
�TestOptions������ �@��cC�
|j|@S�N��value��self�x�r'�L/usr/lib/python3/dist-packages/samba/tests/krb5/as_canonicalization_tests.py�is_setA�
zTestOptions.is_setN)
�__name__�
__module__�__qualname__�Canonicalize�
Enterprise�
UpperRealm�
UpperUserName�NetbiosRealm�UPN�RemoveDollar�	AsReqSelf�Lastr)r'r'r'r(r5src@seZdZdZdZdd�ZdS)�CredentialsTyperrcCr r!r"r$r'r'r(r)Jr*zCredentialsType.is_setN)r+r,r-�User�Machiner)r'r'r'r(r7Esr7c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDatacCs�||_||_|�||�|_|�||�|_tj�|�rt	}nt
}tj||jgd�|_
tj�|�r4|j
|_ntjtd|jgd�|_tj�|�|_dS)N)�	name_type�names�krbtgt)�options�
user_creds�
_get_username�	user_name�
_get_realm�realmrr/r)rrr�PrincipalName_create�cnamer5�snamerr.�canonicalize)r%r>�creds�client_name_typer'r'r(�__init__Ps �

�zTestData.__init__cCs@|��}tj�|�r|��}tj�|�r|��}|S|��}|Sr!)�	get_realmrr2r)�
get_domainr0�upper�lower)r%r>rHrCr'r'r(rBds�zTestData._get_realmcCsb|��}tj�|�r|�d�r|dd�}tj�|�r%|��}d�||�}tj�|�r/|�	�}|S)N�$���z{0}@{1})
�get_usernamerr4r)�endswithr/rK�formatr1rM)r%r>rH�namerCr'r'r(r@nszTestData._get_usernamecCspd}|dd�|j�d7}|d|jd7}|d|jd7}|dt|j�d7}|dt|j�d7}|S)	NzTest Data: zoptions = 'z{:08b}�'z
user name = 'z, realm = 'z, cname = 'z, sname = ')rSr>rArC�strrErF)r%�repr'r'r(�__repr__yszTestData.__repr__N)r+r,r-rJrBr@rXr'r'r'r(r:Ns

r:�
tstkrb5cnnmch�
tstkrb5cnnusrcspeZdZedd��Zdd�Zdd�Z�fdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Z�ZS)�KerberosASCanonicalizationTestscCsVdd�}dd�}tD]}ttjj�D]}|||�rq|||�}|�d|||�qq
dS)NcSs8|tjkr
tj�|�r
dS|tjkrtj�|�rdSdS)z0 Filter out any mutually exclusive test options TF)r7r9rr4r)r5)�ctr>r'r'r(�skip�s

�

�zCKerberosASCanonicalizationTests.setUpDynamicTestCases.<locals>.skipcSs0d|j}tD]}|�|�r|d|j7}q|S)Nz
%sCredentialsz_%s)rTrr))r\r>rT�optr'r'r(�build_test_name�s

�zNKerberosASCanonicalizationTests.setUpDynamicTestCases.<locals>.build_test_name�test)r7�rangerr6r#�generate_dynamic_test)�clsr]r_r\r&rTr'r'r(�setUpDynamicTestCases�s


��z5KerberosASCanonicalizationTests.setUpDynamicTestCasescCs*|jdur|��}|�|t�\|_}|jSr!)r?�	get_samdb�create_account�	USER_NAME�r%�samdb�_r'r'r(�user_account_creds�s
z2KerberosASCanonicalizationTests.user_account_credscCsJ|jdur"|��}|j|t|jjd�\|_}|j�t�|j�t	�|jS)N)�account_type)
�
machine_credsrerf�MACHINE_NAME�AccountType�COMPUTER�set_secure_channel_typer�set_kerberos_staterrhr'r'r(�machine_account_creds�s
�z5KerberosASCanonicalizationTests.machine_account_credscs&t���t|_t|_d|_d|_dSr!)�super�setUp�global_asn1_print�
do_asn1_print�global_hexdump�
do_hexdumpr?rm)r%��	__class__r'r(ru�s


z%KerberosASCanonicalizationTests.setUpc
Cs(|tjkr
|��}n|tjkr|��}ntd��t||�}z	|�|�\}}Wn%tj	j
yK}zddl}|�d�
|j|��|��WYd}~nd}~ww|dur�d|dvrb|dd}	|�|	|�|d}
|�|
|�|d�d�}|�||�|d	}|�||�|d
�d�}
|�|
|�dSdS)NzUnexpected credential typerz#ASN1 Error, Options {0:08b}:{1} {2}�kvno�enc-partrE�crealm�asciirF�srealm)r7r8rkr9rs�	Exceptionr:�as_req�pyasn1�error�PyAsn1Error�	traceback�failrSr>�
format_exc�
check_kvno�check_cname�decode�check_crealm�check_sname�check_srealm)r%r&r\rH�datarW�as_rep�er�r|rEr~rFr�r'r'r(�_test_with_args�s<




����z/KerberosASCanonicalizationTests._test_with_argscCs�|j}|j}|j}|j}|jdd�}d}|jrtt�d��}d}t	t
tf}	|j|||||d|dd|	ddd�}
|�
|
�}|�|�|�|ddd	�t|���|�|d
td	�t|���|�|dtd�|dt|���|j|d
t��d�}|D]}
|
ddkr�|
d}nqz|j|t��d�}|�||d�}|��\}}|�||�}|j|t��d�}|�|t|�}|j|t��d�}|�t|�}d}|jr�tt�d��}|g}|j|||||d|dd|	ddd�}
|�
|
�}|�|�|�|ddd	�t|���|d
}|� |td�|�!dd�t|���|�|t"d	�t|���|�#t$|dd�}|ddk�r<|j|t�%�d�}||fS|j|t�&�d�}||fS)Ni��)�offset�0rGi���)�padata�kdc_optionsrErCrF�	from_time�	till_time�
renew_time�nonce�etypes�	addresses�additional_tickets�pvno�zData {0}zmsg-typez
error-codezError code {0}, Data {1}ze-data)�asn1Speczpadata-type�zpadata-valuer�r}�cipher�z)'r?rCrErF�get_KerberosTimerGrV�	krb5_asn1�
KDCOptionsr
rr�
AS_REQ_create�send_recv_transaction�assertIsNotNone�assertEqualrSrr
�
der_decode�METHOD_DATA�ETYPE_INFO2�PasswordKey_from_etype_info2�get_KerberosTimeWithUsec�PA_ENC_TS_ENC_create�
der_encode�
PA_ENC_TS_ENC�EncryptedData_creater�
EncryptedData�PA_DATA_creater�assertNotEqual�getr�decryptr�
EncTGSRepPart�EncASRepPart)r%r�r?rCrErF�tillr�r�r��reqrW�
rep_padata�pa�etype_info2�key�patime�pausec�pa_ts�msg_type�encr�r'r'r(r��s���

�������

�
���z&KerberosASCanonicalizationTests.as_reqcCs�tj�|j�r
t}ntj�|j�rt}nt}|d}|�||d�|j��|d}|d�	d�}|j
}tj�|j�r?|j��}|�||d�|j��dS)N�	name-typez cname name-type, Options {0:08b}�name-stringrrz cname principal, Options {0:08b})
rr.r)r>rr/rr�rSr�rAr?rQ)r%rEr��expected_name_typer;�nsrT�expectedr'r'r(r�]s*
�

�z+KerberosASCanonicalizationTests.check_cnamecC�$|j��}|�||d�|j��dS)Nzcrealm, Options {0:08b}�r?rKr�rSr>)r%r~r�rCr'r'r(r�v�
�z,KerberosASCanonicalizationTests.check_crealmc	Cs|d}|d}|d�d�}tj�|j�rOt}tj�|j�s(tj�|j�r(t}|�	||d�
|j��|j}tj�|j�rB|j�
�}|�	||d�
|j��dS|�	t|d�
|j��|�	d|d�
|j��|d�d�}|j}tj�|j�r}|j����}|�	||d	�
|j��dS)
Nr�r�rrz sname name-type, Options {0:08b}z sname principal, Options {0:08b}r=rzsname realm, Options {0:08b})r�rr5r)r>rr.r/rr�rSrAr?rQrrCrKrM)	r%rFr��ntr�rTr�r�rCr'r'r(r�{sR�
�

�
�
�
�z+KerberosASCanonicalizationTests.check_snamecCr�)Nzsrealm, Options {0:08b}r�)r%r�r�rCr'r'r(r��r�z,KerberosASCanonicalizationTests.check_srealmcCs|�d|d�|j��dS)Nrzkvno, Options {0:08b})r�rSr>)r%r|r�r'r'r(r��s�z*KerberosASCanonicalizationTests.check_kvno)r+r,r-�classmethodrdrkrsrur�r�r�r�r�r�r��
__classcell__r'r'rzr(r[�s
&w*r[�__main__).�sys�os�path�insert�environ�enumrrr��samba.tests.krb5.kdc_base_testr�samba.tests.krb5.rfc4120_pyasn1�tests�krb5�rfc4120_pyasn1r��samba.credentialsr�samba.dcerpc.miscr�samba.testsr	�"samba.tests.krb5.rfc4120_constantsr
rrr
rrrrrrrrrvrxrr7r:rnrgr[r+�unittest�mainr'r'r'r(�<module>s>
85)�