/// <summary> /// Create context /// </summary> /// <param name="domain">Domain name</param> /// <param name="cName">Principal name</param> /// <param name="password">Password of principal</param> /// <param name="accountType">Accoundtype, user or device</param> public KerberosContext(string domain, string cName, string password, KerberosAccountType accountType, KerberosContextType contextType, string salt = null) : this(contextType) { if (domain == null) { throw new ArgumentNullException("domain"); } if (cName == null) { throw new ArgumentNullException("cName"); } if (password == null) { throw new ArgumentNullException("password"); } this.Realm = new Realm(domain); PrincipalName name = new PrincipalName(new KerbInt32((int)PrincipalType.NT_PRINCIPAL), KerberosUtility.String2SeqKerbString(cName)); if (null == salt) { if (accountType == KerberosAccountType.User) { salt = KerberosUtility.GenerateSalt(domain, cName, accountType); } else if (accountType == KerberosAccountType.Device) { salt = KerberosUtility.GenerateSalt(domain, cName, accountType); } else { throw new ArgumentOutOfRangeException("Account type not support"); } } this.CName = new Principal(accountType, this.Realm, name, password, salt); }
/// <summary> /// Create context /// </summary> /// <param name="domain">Domain name</param> /// <param name="cName">Principal name</param> /// <param name="password">Password of principal</param> /// <param name="accountType">Accoundtype, user or device</param> /// <param name="armorTicket">Computer TGT as armor ticket</param> /// <param name="armorSessionKey">Computer TGS session key as armor session key</param> public KerberosContext(string domain, string cName, string password, KerberosAccountType accountType, string salt, KerberosTicket armorTicket, EncryptionKey armorSessionKey, KerberosContextType contextType) : this(domain, cName, password, accountType, contextType, salt) { this.ArmorTicket = armorTicket; this.ArmorSessionKey = armorSessionKey; this.SelectedEType = (EncryptionType)this.ArmorTicket.SessionKey.keytype.Value; }
/// <summary> /// Create context /// </summary> public KerberosContext(KerberosContextType contextType) { Pvno = KerberosConstValue.KERBEROSV5; IsInitiator = contextType.Equals(KerberosContextType.Client); }