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);
        }
Esempio n. 2
0
        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);
        }