public static string GetCanonicalRequest(HttpWebRequest request, byte[] data)
 {
     var canonicalHeaders = request.GetCanonicalHeaders();
     var result = new StringBuilder();
     result.Append(request.Method);
     result.Append('\n');
     result.Append(GetPath(request.RequestUri));
     result.Append('\n');
     result.Append(request.RequestUri.GetCanonicalQueryString());
     result.Append('\n');
     WriteCanonicalHeaders(canonicalHeaders, result);
     result.Append('\n');
     WriteSignedHeaders(canonicalHeaders, result);
     result.Append('\n');
     WriteRequestPayloadHash(data, result);
     return result.ToString();
 }
 private static string GetSignedHeaders(HttpWebRequest request)
 {
     var canonicalHeaders = request.GetCanonicalHeaders();
     var result = new StringBuilder();
     WriteSignedHeaders(canonicalHeaders, result);
     return result.ToString();
 }