
    Fc                        d dl Z d dlZe j                            d d           dej        d<   d dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZmZmZmZ d	Zd	Ze G d
 de	                      Zedk    rd	Zd	Zd dlZ ej                     dS dS )    Nz
bin/python1PYTHONUNBUFFERED)DynamicTestCase)KDCBaseTest)KerberosCredentials)AES256_CTS_HMAC_SHA1_96ARCFOUR_HMAC_MD5KDC_ERR_S_PRINCIPAL_UNKNOWNNT_PRINCIPALFc                        e Zd Zej        j        ej        j        ej        j        dZddddddZ	e
 fd            Ze
d	             Zd
 Z fdZddZddZd Zd Z xZS )SpnTests)computerserverrodczldap/{{account}}z&ldap/{{account}}/{netbios_domain_name}z"ldap/{{account}}/{dns_domain_name}zldap/{{account}}/testz'ldap/{{account}}:test/{dns_domain_name})2_part3_part_our_domain3_part_our_realm3_part_not_our_realm3_part_instancec                 V    t                                                       d | _        d S N)super
setUpClass_mock_rodc_creds)cls	__class__s    </usr/lib/python3/dist-packages/samba/tests/krb5/spn_tests.pyr   zSpnTests.setUpClass:   s'    #    c                     | j                                         D ]>\  }}| j                                        D ]\  }}| d| }||f} | j        d|g|R    ?d S )N_spn_test_spn)test_account_typesitems	test_spnsgenerate_dynamic_test)r   account_type_nameaccount_typespn_namespntnametargss          r   setUpDynamicTestCaseszSpnTests.setUpDynamicTestCases@   s    /2/E/K/K/M/M 	E 	E+|!$!4!4!6!6 E E##==*;==%s+))*eDeDDDDDE	E 	Er   c                    |                      |          }|                     ||          }|                     t          |                    d                    }|                                 }|                     |          }|                                 }|                                }|	                                }	| 
                    |j        j                  }
t          t          f}|| j        j        u rt          }nd }|                     ||          }|                    d          dk    rW|                    |          s|                    |	          r-|| j        j        ur|| j        j        urt*          }| j        }d }nd}d }| j        }|                     |j        |j        |j        ||||| j        |||
dd          }|                     |d |j        ||	           d S )
N/)	name_typenames)etype   r   0F)expected_crealmexpected_cnameexpected_srealmexpected_snameticket_decryption_keycheck_rep_fncheck_error_fncheck_kdc_private_fnexpected_error_modetgtauthenticator_subkeykdc_optionsexpect_edata)cnamerealmsnameetypes)
_get_creds_format_spnPrincipalName_creater   splitget_client_credsget_tgt	get_samdbdomain_netbios_namedomain_dns_name	RandomKeysession_keyr1   r   r	   AccountTypeSERVERTicketDecryptionKey_from_credscountendswithRODCr
   generic_check_kdc_errorgeneric_check_kdc_reptgs_exchange_dictcrealmrA   srealmgeneric_check_kdc_private_generic_kdc_exchange)selfr'   r)   target_credsrC   client_credsr=   samdbnetbios_domain_namedns_domain_namesubkeyrD   ticket_etypedecryption_keyr<   r:   r9   kdc_exchange_dicts                     r   _test_spn_with_argszSpnTests._test_spn_with_argsH   s   |44sL11))L03		# * @ @ ,,..ll<((  #7799//11 566)+;=4+2222LLL<< = . . IIcNNQ\\"566 _55  !(8(??? (8(==="=!9NLL"#!N5L 22J9J "0%)!%!? 3!' 3     	""#4)-),).*0	 	# 	2 	2 	2 	2 	2r   c                 x    t                                                       t          | _        t          | _        d S r   )r   setUpglobal_asn1_printdo_asn1_printglobal_hexdump
do_hexdump)r]   r   s    r   ri   zSpnTests.setUp   s'    .(r   Nc                 .     t           fd|          S )Nc                 0                         |           S r   )rF   )r)   credsr]   s    r   <lambda>z'SpnTests._format_spns.<locals>.<lambda>   s    t//U;; r   )map)r]   spnsrp   s   ` `r   _format_spnszSpnTests._format_spns   s!    ;;;;;TBBBr   c                     |                                  }|                    |                                |                                          }|*|                                }|                    |          }|S )N)ra   rb   account)rK   formatrL   rM   get_username)r]   r)   rp   r`   account_names        r   rF   zSpnTests._format_spn   sy      jjU-F-F-H-H).)>)>)@)@  B B  --//L**\*22C
r   c                    |                      | j                                                  }|| j        j        u r3| j        }|)|                     |          }|t          |           _        n|                     |d|i          }|S )Nr)   )r'   opts)	rt   r$   valuesrP   rU   r   _get_mock_rodc_credstypeget_cached_creds)r]   r'   rs   rp   s       r   rE   zSpnTests._get_creds   s      !6!6!8!8994+000)E}11$77.3T

+)))4 *  E r   c                    |                                  }|D ]@}|                    |j                  }||j        vr|j                            |           A|                                 }t          j        ||j                  }t          j	        |          }t          j
        |j        t          j        d          |d<   |                    |           t                      }|                    |                                            |                    |j                                                   |                    |j                   |                    |j                   |                    |j                   |                    |j                   |                    |           |                    |j                   |                    |t          j        dg          }t=          |d                             dd                    }	|                     |	           | !                    ||          }
| "                    ||
           |S )Nrv   servicePrincipalNamezmsDS-KeyVersionNumber)basescopeattrsr   )idx)#get_mock_rodc_ctxrx   mynameSPNsappendrK   ldbDnacct_dnMessageMessageElementFLAG_MOD_REPLACEmodifyr   guessget_lp	set_realmrB   upper
set_domaindomain_nameset_password	acct_passset_usernameset_workstationsamnameset_dnset_spnsearch
SCOPE_BASEintgetset_kvnoget_keyscreds_set_keys)r]   rs   rodc_ctxr)   r`   rodc_dnmsgrp   reskvnokeyss              r   r~   zSpnTests._get_mock_rodc_creds   s   ))++ 	* 	*C**X_*55C(-''$$S)))  & 011k'""&)&8M "'$ '$"# 	S#%%DKKMM""",,..///-...8-...8?+++h.///Whm$$$ll!$"9!:  < < 3q6::51:==>>t}}UG,,E4(((r   r   )__name__
__module____qualname__r   rP   COMPUTERrQ   rU   r"   r$   classmethodr   r,   rg   ri   rt   rF   rE   r~   __classcell__)r   s   @r   r   r   +   s         +4)0',  %E@ 7D I $ $ $ $ [$
 E E [E92 92 92v) ) ) ) )
C C C C
 
 
 
  "% % % % % % %r   r   __main__)sysospathinsertenvironsamba.testsr   r   samba.tests.krb5.kdc_base_testr   samba.tests.krb5.raw_testcaser   "samba.tests.krb5.rfc4120_constantsr   r	   r
   r   rj   rl   r   r   unittestmain r   r   <module>r      s=  ( 


 				 <      !$
  ' ' ' ' ' ' 



 6 6 6 6 6 6 = = = = = =              a a a a a{ a a aH zNOOOHMOOOOO	 r   