Slide 44
Slide 44 text
【参考】①②のコードサンプル
署名の計算(Java)
static byte[] HmacSHA256(String data, byte[] key) throws Exception {
String algorithm="HmacSHA256";
final SecretKeySpec keySpec = new SecretKeySpec(key, algorithm);
final Mac mac = Mac.getInstance(algorithm);
mac.init(keySpec);
return mac.doFinal(data.getBytes("UTF-8"));
}
static byte[] getSignatureKey(String key, String dateStamp, String regionName, String serviceName) throws Exception {
byte[] kSecret = ("AWS4" + key).getBytes("UTF-8");
byte[] kDate = HmacSHA256(dateStamp, kSecret);
byte[] kRegion = HmacSHA256(regionName, kDate);
byte[] kService = HmacSHA256(serviceName, kRegion);
byte[] kSigning = HmacSHA256("aws4_request", kService);
return kSigning;
}
public static String getHashedSignature(String key, String dateStamp, String regionName, String serviceName, String stringToSign) throws Exception {
String signature = "";
byte[] signatureKey = getSignatureKey(key, dateStamp, regionName, serviceName);
byte[] signatureByte = HmacSHA256(stringToSign, signatureKey);
BigInteger bi = new BigInteger(1, signatureByte);
signature = String.format("%0" + (signatureByte.length << 1) + "x", bi);
return signature;
}