@@ -96,6 +96,7 @@ public static byte[] signRequest(IHttpRequestResponse messageInfo,
9696 pw .println ("Warning: SignedHeader '" + signedHeader + "' does not exist in request headers." );
9797 }
9898 }
99+ String signedHeadersSorted = String .join (";" , signedHeaderList );
99100 //pw.println(canonicalHeaders.toString());
100101 byte [] request = messageInfo .getRequest ();
101102 String body = "" ;
@@ -216,7 +217,7 @@ public static byte[] signRequest(IHttpRequestResponse messageInfo,
216217 //canonicalQueryString = canonicalQueryString.replace(":","%3A").replace("/","%2F").replace(" ", "%20");
217218
218219 String canonicalRequest = requestInfo .getMethod () + '\n' + encodedCanonicalUri + '\n' + canonicalQueryString + '\n' +
219- canonicalHeaders +'\n' + signedHeaders + '\n' + payloadHash ;
220+ canonicalHeaders +'\n' + signedHeadersSorted + '\n' + payloadHash ;
220221 String credScope = dateStampString + '/' + region + '/' + service + '/' + "aws4_request" ;
221222 String algorithm = "AWS4-HMAC-SHA256" ;
222223
@@ -228,7 +229,7 @@ public static byte[] signRequest(IHttpRequestResponse messageInfo,
228229 String signature = DatatypeConverter .printHexBinary (HmacSHA256 (stringToSign , signingKey ));
229230
230231 newHeaders .add ("Authorization: " + algorithm + ' ' + "Credential=" + accessKey + '/' + credScope + ", " + "SignedHeaders=" +
231- signedHeaders + ", " + "Signature=" + signature .toLowerCase ());
232+ signedHeadersSorted + ", " + "Signature=" + signature .toLowerCase ());
232233 newHeaders .add ("X-Amz-Date: " + amzdate );
233234 if (!newHeaders .get (0 ).matches (notUnicode )) {
234235 char [] chars = newHeaders .get (0 ).toCharArray ();
0 commit comments