private static String canonicalizeRequest()

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