Esempio n. 1
0
        /// <summary>
        /// Try and parse data into an Negotiate authentication token.
        /// </summary>
        /// <param name="data">The data to parse.</param>
        /// <param name="token">The Negotiate authentication token.</param>
        /// <param name="client">True if this is a token from a client.</param>
        /// <param name="token_count">The token count number.</param>
        /// <returns>True if parsed successfully.</returns>
        internal static bool TryParse(byte[] data, int token_count, bool client, out NegotiateAuthenticationToken token)
        {
            token = null;
            try
            {
                byte[] token_data;
                if (GSSAPIUtils.TryParse(data, out token_data, out string oid))
                {
                    if (oid != OIDValues.SPNEGO)
                    {
                        return(false);
                    }
                }
                else
                {
                    token_data = data;
                }

                DERValue[] values = DERParser.ParseData(token_data, 0);
                if (values.Length != 1 || values[0].Type != DERTagType.ContextSpecific)
                {
                    return(false);
                }

                if (values[0].CheckContext(0))
                {
                    return(ParseInit(data, values[0].Children, token_count, client, out token));
                }
                else if (values[0].CheckContext(1))
                {
                    return(ParseResp(data, values[0].Children, token_count, client, out token));
                }
                else
                {
                    return(false);
                }
            }
            catch (EndOfStreamException)
            {
            }
            catch (InvalidDataException)
            {
            }
            return(false);
        }
Esempio n. 2
0
 /// <summary>
 /// Try and parse data into an Negotiate authentication token.
 /// </summary>
 /// <param name="data">The data to parse.</param>
 /// <param name="token">The Negotiate authentication token.</param>
 /// <param name="client">True if this is a token from a client.</param>
 /// <param name="token_count">The token count number.</param>
 /// <returns>True if parsed successfully.</returns>
 internal static bool TryParse(byte[] data, int token_count, bool client, out NegotiateAuthenticationToken token)
 {
     token = null;
     try {
         if (GSSAPIUtils.TryParse(data, out byte[] token_data, out string oid))
Esempio n. 3
0
 /// <summary>
 /// Try and parse data into an Kerberos authentication token.
 /// </summary>
 /// <param name="data">The data to parse.</param>
 /// <param name="token">The Kerberos authentication token.</param>
 /// <param name="client">True if this is a token from a client.</param>
 /// <param name="token_count">The token count number.</param>
 /// <returns>True if parsed successfully.</returns>
 internal static bool TryParse(byte[] data, int token_count, bool client, out KerberosAuthenticationToken token)
 {
     token = null;
     try
     {
         if (!GSSAPIUtils.TryParse(data, out byte[] inner_token, out string oid))