]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
tests/krb5: Refactor _test_samlogon()
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Fri, 21 Apr 2023 01:25:58 +0000 (13:25 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 5 May 2023 02:54:31 +0000 (02:54 +0000)
Move logic specific to the Network logon into that branch, so it’s
easier to see what’s going on.

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/tests/krb5/kdc_base_test.py

index efdb0ea7121a59a3dc27fde571965033473ce6be..7588beb1ee3a5f80cc672e875d3e1849ea9bae96 100644 (file)
@@ -3204,31 +3204,12 @@ class KDCBaseTest(RawKerberosTest):
         username, domain = creds.get_ntlm_username_domain()
         workstation = 'Workstation'
 
-        target_info = ntlmssp.AV_PAIR_LIST()
-        target_info.count = 3
-        computername = ntlmssp.AV_PAIR()
-        computername.AvId = ntlmssp.MsvAvNbComputerName
-        computername.Value = workstation
-
-        domainname = ntlmssp.AV_PAIR()
-        domainname.AvId = ntlmssp.MsvAvNbDomainName
-        domainname.Value = domain
-
-        eol = ntlmssp.AV_PAIR()
-        eol.AvId = ntlmssp.MsvAvEOL
-        target_info.pair = [domainname, computername, eol]
-
-        target_info_blob = ndr_pack(target_info)
-
-        challenge = b'abcdefgh'
-        response = creds.get_ntlm_response(flags=0,
-                                           challenge=challenge,
-                                           target_info=target_info_blob)
-
         mach_creds = self.get_cached_creds(
             account_type=self.AccountType.COMPUTER,
             opts={'secure_channel_type': misc.SEC_CHAN_WKSTA})
 
+        # Calling this initializes netlogon_creds on mach_creds, as is required
+        # before calling mach_creds.encrypt_samr_password().
         conn = netlogon.netlogon(f'ncacn_ip_tcp:{server}[schannel,seal]',
                                  self.get_lp(),
                                  mach_creds)
@@ -3247,6 +3228,28 @@ class KDCBaseTest(RawKerberosTest):
             logon.ntpassword = nt_pass
 
         elif logon_type == netlogon.NetlogonNetworkInformation:
+            computername = ntlmssp.AV_PAIR()
+            computername.AvId = ntlmssp.MsvAvNbComputerName
+            computername.Value = workstation
+
+            domainname = ntlmssp.AV_PAIR()
+            domainname.AvId = ntlmssp.MsvAvNbDomainName
+            domainname.Value = domain
+
+            eol = ntlmssp.AV_PAIR()
+            eol.AvId = ntlmssp.MsvAvEOL
+
+            target_info = ntlmssp.AV_PAIR_LIST()
+            target_info.count = 3
+            target_info.pair = [domainname, computername, eol]
+
+            target_info_blob = ndr_pack(target_info)
+
+            challenge = b'abcdefgh'
+            response = creds.get_ntlm_response(flags=0,
+                                               challenge=challenge,
+                                               target_info=target_info_blob)
+
             logon = netlogon.netr_NetworkInfo()
 
             logon.challenge = list(challenge)