# This simple class encapsulates the DN and SID of a Principal.
class Principal:
+ __slots__ = ['dn', 'sid']
+
def __init__(self, dn, sid):
if dn is not None and not isinstance(dn, ldb.Dn):
raise AssertionError(f'expected {dn} to be an ldb.Dn')
class Krb5EncryptionKey:
+ __slots__ = [
+ 'ctype',
+ 'etype',
+ 'key',
+ 'kvno',
+ ]
+
def __init__(self, key, kvno):
EncTypeChecksum = {
kcrypto.Enctype.AES256: kcrypto.Cksumtype.SHA1_AES256,
class RodcPacEncryptionKey(Krb5EncryptionKey):
+ __slots__ = ['rodc_id']
+
def __init__(self, key, kvno, rodc_id=None):
super().__init__(key, kvno)
class WrongLengthChecksumKey(RodcPacEncryptionKey):
+ __slots__ = ['_length']
+
def __init__(self, key, kvno, length):
super().__init__(key, kvno)
class KerberosCredentials(Credentials):
+ __slots__ = [
+ '_private_key',
+ 'account_type',
+ 'ap_supported_enctypes',
+ 'as_supported_enctypes',
+ 'dn',
+ 'forced_keys',
+ 'forced_salt',
+ 'kvno',
+ 'sid',
+ 'spn',
+ 'tgs_supported_enctypes',
+ 'upn',
+ ]
non_etype_bits = (
security.KERB_ENCTYPE_FAST_SUPPORTED) | (
class KerberosTicketCreds:
+ __slots__ = [
+ 'cname',
+ 'crealm',
+ 'decryption_key',
+ 'encpart_private',
+ 'session_key',
+ 'sname',
+ 'srealm',
+ 'ticket_private',
+ 'ticket',
+ ]
+
def __init__(self, ticket, session_key,
crealm=None, cname=None,
srealm=None, sname=None,