/// <summary> /// Calculate the OAuth Signature for this request using custom parameters. /// </summary> /// <param name="parameters">The set of parameters to be included in the signature.</param> /// <param name="consumerSecret">The OAuth Consumer Secret to use.</param> /// <returns>The calculated OAuth Signature.</returns> /// <remarks> /// This is typically used by Tool Consumers that perform custom parameter substitution prior /// to signing the request. /// </remarks> public string GenerateSignature(NameValueCollection parameters, string consumerSecret) { // The LTI spec says to include the querystring parameters // when calculating the signature base string. Unescape the // query so that it is not doubly escaped by UrlEncodingParser. var querystring = new UrlEncodingParser(Uri.UnescapeDataString(Url.Query)); parameters.Add(querystring); var signature = OAuthUtility.GenerateSignature(HttpMethod, Url, parameters, consumerSecret); // Now remove the querystring parameters so they are not sent twice // (once in the action URL and once in the form data) foreach (var key in querystring.AllKeys) { parameters.Remove(key); } return(signature); }
/// <summary> /// Calculate the OAuth Signature for this request using custom parameters. /// </summary> /// <param name="parameters">The set of parameters to be included in the signature.</param> /// <param name="consumerSecret">The OAuth Consumer Secret to use.</param> /// <returns>The calculated OAuth Signature.</returns> /// <remarks> /// This is typically used by Tool Consumers that perform custom parameter substitution prior /// to signing the request. /// </remarks> public string GenerateSignature(NameValueCollection parameters, string consumerSecret) { var signature = OAuthUtility.GenerateSignature(HttpMethod, Url, parameters, consumerSecret); return(signature); }