else:
krbtgt_creds = self.get_krbtgt_creds()
krbtgt_key = self.TicketDecryptionKey_from_creds(krbtgt_creds)
+
+ expect_ticket_checksum = (self.tkt_sig_support
+ and not self.is_tgs_principal(sname))
self.verify_ticket(service_ticket_creds, krbtgt_key,
service_ticket=True, expect_pac=expect_pac,
- expect_ticket_checksum=self.tkt_sig_support)
+ expect_ticket_checksum=expect_ticket_checksum)
self.tkt_cache[cache_key] = service_ticket_creds
padata_checking = '1'
cls.padata_checking = bool(int(padata_checking))
+ kadmin_is_tgs = samba.tests.env_get_var_value('KADMIN_IS_TGS',
+ allow_missing=True)
+ if kadmin_is_tgs is None:
+ kadmin_is_tgs = '0'
+ cls.kadmin_is_tgs = bool(int(kadmin_is_tgs))
+
def setUp(self):
super().setUp()
self.do_asn1_print = False
self.assertIsNotNone(ticket_decryption_key)
if ticket_decryption_key is not None:
- service_ticket = (not self.is_tgs(expected_sname)
- and rep_msg_type == KRB_TGS_REP)
+ service_ticket = (rep_msg_type == KRB_TGS_REP
+ and not self.is_tgs_principal(expected_sname))
self.verify_ticket(ticket_creds, krbtgt_keys,
service_ticket=service_ticket,
expect_pac=expect_pac,
expected_types.append(krb5pac.PAC_TYPE_DEVICE_INFO)
expected_types.append(krb5pac.PAC_TYPE_DEVICE_CLAIMS_INFO)
- if not self.is_tgs(expected_sname) and rep_msg_type == KRB_TGS_REP:
- expected_types.append(krb5pac.PAC_TYPE_TICKET_CHECKSUM)
+ if rep_msg_type == KRB_TGS_REP:
+ if not self.is_tgs_principal(expected_sname):
+ expected_types.append(krb5pac.PAC_TYPE_TICKET_CHECKSUM)
require_strict = {krb5pac.PAC_TYPE_CLIENT_CLAIMS_INFO,
krb5pac.PAC_TYPE_DEVICE_INFO,
krb5pac.PAC_TYPE_KDC_CHECKSUM: krbtgt_key
}
+ def is_tgs_principal(self, principal):
+ if self.is_tgs(principal):
+ return True
+
+ if self.kadmin_is_tgs and self.is_kadmin(principal):
+ return True
+
+ return False
+
+ def is_kadmin(self, principal):
+ name = principal['name-string'][0]
+ return name in ('kadmin', b'kadmin')
+
def is_tgs(self, principal):
name = principal['name-string'][0]
return name in ('krbtgt', b'krbtgt')
else:
tkt_sig_support = 0
+if 'HAVE_MIT_KRB5_1_20' in config_hash:
+ kadmin_is_tgs = 1
+else:
+ kadmin_is_tgs = 0
+
expect_pac = int('SAMBA4_USES_HEIMDAL' in config_hash)
extra_pac_buffers = int('SAMBA4_USES_HEIMDAL' in config_hash)
check_cname = int('SAMBA4_USES_HEIMDAL' in config_hash)
'EXPECT_EXTRA_PAC_BUFFERS': extra_pac_buffers,
'CHECK_CNAME': check_cname,
'CHECK_PADATA': check_padata,
+ 'KADMIN_IS_TGS': kadmin_is_tgs,
}
planoldpythontestsuite("none", "samba.tests.krb5.kcrypto")
planoldpythontestsuite("ad_dc_default", "samba.tests.krb5.simple_tests",