I am trying to convert the following code from JAVA to Salesforce
JAVA:
byte[] key = BaseEncoding.base16().decode("wtv");
SecretKeySpec signingKey = new SecretKeySpec(key, HMAC_SHA256_ALGORITHM);
Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM);
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(data.getBytes(C_UTF8));
return BaseEncoding.base64().encode(rawHmac);
Salesforce
private string calculateHMAC(string hmc, string signingString){
Blob data = crypto.generateMac('HmacSHA256', Blob.valueOf(signingString), Blob.valueOf(hmc));
return EncodingUtil.base64Encode(data);
}
My returning result is not the same, and I cant figure out why...
Is my conversion correct? What do you think I did wrong?
Edit: Sample Data:
HMC = AED317ECD56FB9E4AE3CA43AC95E2F33FF0287404067E9811C920E60C99C064C
singingString = currencyCode:merchantAccount:merchantReference:paymentAmount:sessionValidity:shipBeforeDate:shopperEmail:skinCode:CAD:AdyenTest:RA:199:2016-04-24T10:30:00Z:2016-04-24:a@a.com:FmDLArzH
expected result: C0j2GrWHFVq16AlF746Sk8c7QdyLDTn1hHslWV50D8A=