a
    )&i
                     @   s   d dl Z d dlZd dlZd dlmZ d dlm  m  mZ d dl	m
Z
 d dlmZmZmZmZ e jd d dejd< dZdZG d	d
 d
e
ZedkrdZdZd dlZe  dS )    N)delete_force)KDCBaseTest)AES256_CTS_HMAC_SHA1_96ARCFOUR_HMAC_MD5KDC_ERR_TGT_REVOKEDNT_PRINCIPALz
bin/python1ZPYTHONUNBUFFEREDFc                   @   sJ   e Zd Zdd Zdd ZdddZdd	 Zd
d ZdddZdddZ	dS )
AliasTestsc                 C   s   | j dd d S Nrenameaction_run_dc_aliasself r   >/usr/lib/python3/dist-packages/samba/tests/krb5/alias_tests.pytest_dc_alias_rename+   s    zAliasTests.test_dc_alias_renamec                 C   s   | j dd d S Ndeleter   r   r   r   r   r   test_dc_alias_delete.   s    zAliasTests.test_dc_alias_deleteNc                    s4   |      d d }| j| fdd|d d S )Nc                      s    S )Nr   r   target_credsr   r   <lambda>5       z*AliasTests._run_dc_alias.<locals>.<lambda>r   )Zget_dc_credsZget_username
_run_alias)r   r   target_namer   r   r   r   1   s    zAliasTests._run_dc_aliasc                 C   s   | j dd d S r
   _run_create_aliasr   r   r   r   test_create_alias_rename7   s    z#AliasTests.test_create_alias_renamec                 C   s   | j dd d S r   r   r   r   r   r   test_create_alias_delete:   s    z#AliasTests.test_create_alias_deletec                    s*       fdd} j||d d S )Nc                     sT      } |   } d| }d| }d|i} j|  jj||d\}}|S )N.zldap/dNSHostName)account_typespnZadditional_details)	get_samdbZdomain_dns_namelowercreate_accountAccountTypeCOMPUTER)samdbrealmZhostnamer&   ZdetailsZcredsfnr   r   r   r   create_target@   s    

z3AliasTests._run_create_alias.<locals>.create_targetr   )get_new_usernamer   )r   r   r0   r   r/   r   r    =   s    zAliasTests._run_create_aliasc                    sT    } }j||jjd\}}t|| ||}|  |	 }	|
|	 tt||}
t|tjd|
d< ||
 || j|dddjd }| d   }|t|j ||j ||j ||j  |j |dkrV }tt||}
t|tjd|
d< ||
 n |d	krl|| n
| | }| }|j |tj!d
gd}t|d j"d
dd}j#t$d|gd}j#t$|gd%|}&t'j(j)}t*t+f} fdd}t,}j-  ||||j.j/|dddd}j0|d  ||d}1|| d S )N)r%   ZsAMAccountName0T)kdc_optionsZfreshzauthorization-data@r   r   r$   )Zscopeattrsr   )idxZldap)Z	name_typenamesc                    s   j  jd d}|g|fS )N)namer-   Ztgt_session_keyZctype)ZPA_S4U2Self_createZsession_key)Z_kdc_exchange_dictZ_callback_dictZreq_bodyZpadatar-   r   Ztarget_cnametgtr   r   generate_s4u2self_padata   s    z7AliasTests._run_alias.<locals>.generate_s4u2self_padataF)Zexpected_crealmZexpected_cnameZexpected_srealmZexpected_snameZticket_decryption_keyZgenerate_padata_fnexpected_error_modeZcheck_error_fnZcheck_kdc_private_fnr:   authenticator_subkeyr3   Z
expect_pacZexpect_edata)Zcnamer-   snameetypes)2r'   r1   r)   r*   r+   Z
addCleanupr   Zget_objectSidZ	get_realmZget_saltZset_forced_saltldbZMessageZDnZMessageElementZFLAG_MOD_REPLACEZmodifyZset_usernameZget_tgtZget_pac_dataZticket_privater(   ZassertEqualstrZaccount_nameZaccount_sidZ
logon_nameupnZdomain_namer   ZfailZget_dnsearchZ
SCOPE_BASEgetZPrincipalName_creater   ZTicketDecryptionKey_from_credsZ	RandomKeykcryptoZEnctypeZAES256r   r   r   Ztgs_exchange_dictZgeneric_check_kdc_errorZgeneric_check_kdc_privateZ_generic_kdc_exchangeZcheck_error_rep)r   r   Ztarget_creds_fnr   r,   Z	mach_nameZ
mach_credsZmach_dnZmach_sidZold_saltmsgZpac_datarB   Z
mach_name2r   Z	target_dnresZtarget_hostnamer>   Ztarget_decryption_keyr=   r?   r;   r<   Zkdc_exchange_dictZrepr   r9   r   r   W   s    







	zAliasTests._run_alias)N)N)N)
__name__
__module____qualname__r   r   r   r!   r"   r    r   r   r   r   r   r	   *   s   

r	   __main__)sysosr@   Zsamba.testsr   Zsamba.tests.krb5.kcryptoZtestsZkrb5rE   Zsamba.tests.krb5.kdc_base_testr   Z"samba.tests.krb5.rfc4120_constantsr   r   r   r   pathinsertenvironZglobal_asn1_printZglobal_hexdumpr	   rH   Zunittestmainr   r   r   r   <module>   s"   
 