internal NegotiateResponseAuthenticationToken(byte[] data,
                                               string supported_mech, NegotiateAuthenticationState state, AuthenticationToken token, byte[] mic)
     : base(data, token, mic)
 {
     SupportedMechanism = supported_mech;
     State = state;
 }
Exemplo n.º 2
0
        private static bool ParseResp(byte[] data, DERValue[] values, int token_count, bool client, out NegotiateAuthenticationToken token)
        {
            token = null;
            if (!values.CheckValueSequence())
            {
                return(false);
            }

            string mech = null;
            NegotiateAuthenticationState state      = NegotiateAuthenticationState.Reject;
            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:
                    state = (NegotiateAuthenticationState)next.ReadChildEnumerated();
                    break;

                case 1:
                    mech = next.ReadChildObjID();
                    break;

                case 2:
                    auth_token = ParseToken(next.ReadChildOctetString(), token_count, client);
                    break;

                case 3:
                    mic = next.ReadChildOctetString();
                    break;

                default:
                    return(false);
                }
            }

            token = new NegotiateResponseAuthenticationToken(data, mech, state, auth_token, mic);
            return(true);
        }