internal NegotiateInitAuthenticationToken(byte[] data, IEnumerable <string> mechlist, NegotiateContextFlags flags, AuthenticationToken token, byte[] mic) : base(data, token, mic) { MechanismList = mechlist; ContextFlags = flags; }
private static bool ParseInit(byte[] data, DERValue[] values, int token_count, bool client, out NegotiateAuthenticationToken token) { token = null; if (!values.CheckValueSequence()) { return(false); } IEnumerable <string> mech_list = null; NegotiateContextFlags flags = NegotiateContextFlags.None; AuthenticationToken auth_token = null; byte[] mic = null; foreach (var next in values[0].Children) { if (next.Type != DERTagType.ContextSpecific) { return(false); } switch (next.Tag) { case 0: mech_list = ParseMechList(next.Children); break; case 1: flags = ConvertContextFlags(next.ReadChildBitString()); break; case 2: auth_token = ParseToken(next.ReadChildOctetString(), token_count, client); break; case 3: // If NegTokenInit2 then just ignore neg hints. if (next.HasChildren() && next.Children[0].CheckSequence()) { break; } mic = next.ReadChildOctetString(); break; case 4: // Used if NegTokenInit2. mic = next.ReadChildOctetString(); break; default: return(false); } } token = new NegotiateInitAuthenticationToken(data, mech_list, flags, auth_token, mic); return(true); }