in src/main/java/software/aws/mcs/auth/SigV4AuthProvider.java [291:312]
private static String canonicalizeRequest(String accessKey,
String signingScope,
Instant requestTimestamp,
String payloadHash) throws UnsupportedEncodingException {
List<String> queryStringHeaders =
Arrays.asList(
AMZ_ALGO_HEADER,
String.format("X-Amz-Credential=%s%%2F%s",
accessKey,
URLEncoder.encode(signingScope, StandardCharsets.UTF_8.name())),
"X-Amz-Date=" + URLEncoder.encode(timestampFormatter.format(requestTimestamp), StandardCharsets.UTF_8.name()),
AMZ_EXPIRES_HEADER
);
// IMPORTANT: This list must maintain alphabetical order for canonicalization
Collections.sort(queryStringHeaders);
String queryString = String.join("&", queryStringHeaders);
return String.format("PUT\n/authenticate\n%s\nhost:%s\n\nhost\n%s",
queryString, CANONICAL_SERVICE, payloadHash);
}