From bc11548ebcc379297a258ef442ad879d95ef7614 Mon Sep 17 00:00:00 2001 From: Iwao AVE! Date: Fri, 28 Jan 2022 04:59:41 +0900 Subject: [PATCH] Signature generation should not rely on the default encoding --- src/com/amazon/pay/api/SignatureHelper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/amazon/pay/api/SignatureHelper.java b/src/com/amazon/pay/api/SignatureHelper.java index 20e6cce..0343c97 100644 --- a/src/com/amazon/pay/api/SignatureHelper.java +++ b/src/com/amazon/pay/api/SignatureHelper.java @@ -20,6 +20,7 @@ import org.bouncycastle.util.encoders.Hex; import java.net.URI; +import java.nio.charset.StandardCharsets; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.MessageDigest; @@ -125,7 +126,7 @@ public String generateSignature(final String stringToSign, final PrivateKey priv ServiceConstants.MASK_GENERATION_FUNCTION, mgf1ParameterSpec, SALT_LENGTH, TRAILER_FIELD); signature.setParameter(pssParameterSpec); signature.initSign(privateKey); - signature.update(stringToSign.getBytes()); + signature.update(stringToSign.getBytes(StandardCharsets.UTF_8)); return new String(Base64.encode(signature.sign())); } @@ -321,7 +322,7 @@ private String getCanonicalizedURI(final String path) throws AmazonPayClientExce */ private String hashThenHexEncode(final String requestPayload) throws NoSuchAlgorithmException { final MessageDigest md = MessageDigest.getInstance(ServiceConstants.HASH_ALGORITHM); - md.update(requestPayload.getBytes()); + md.update(requestPayload.getBytes(StandardCharsets.UTF_8)); final byte[] digest = md.digest(); final String contentSha256 = new String((Hex.encode(digest)));