public override KerberosKey CreateKey() { if (cacheKey == null) { lock (_syncCache) { if (cacheKey == null) { var principalName = new PrincipalName(PrincipalNameType.NT_PRINCIPAL, Domain, new[] { UserName }); var etype = EncryptionType.AES256_CTS_HMAC_SHA1_96; var salt = ""; if (Salts != null && Salts.Count() > 0) { var kv = Salts.ElementAt(0); etype = kv.Key; salt = kv.Value; } cacheKey = new KerberosKey( password, principalName: principalName, etype: etype, saltType: SaltType.ActiveDirectoryUser, salt: salt ); } } } return(cacheKey); }
public override KerberosKey CreateKey() { Validate(); var principalName = KrbPrincipalName.FromString(UserName); if (Salts == null || !Salts.Any()) { return(keytab.GetKey(EncryptionType.RC4_HMAC_NT, principalName)); } foreach (var salt in Salts) { var key = keytab.GetKey(salt.Key, principalName); if (key != null) { return(key); } } return(null); }