/// <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); }
/// <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))
/// <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))