in src/SigV4RequestSigner.cs [156:165]
private static string GetCanonicalQueryParams(HttpRequestMessage request)
{
var querystring = HttpUtility.ParseQueryString(request.RequestUri.Query);
var keys = querystring.AllKeys.OrderBy(a => a).ToArray();
// Query params must be escaped in upper case (i.e. "%2C", not "%2c").
var queryParams = keys.Select(key => $"{key}={Uri.EscapeDataString(querystring[key])}");
var canonicalQueryParams = string.Join("&", queryParams);
return canonicalQueryParams;
}