I tried troubleshooting, however I am not getting anywhere, likely the hmac calculation is incorrect. Please help.
@Test void testResponse() { final String instant = timeInGMT() final String host = "rms-world-check-one-api-pilot.thomsonreuters.com" final String gatewayUrl = "/v2/groups" final String url = "https://" + host + gatewayUrl final String apiKey = "MY-KEY" final String apiSecret = "MY-SECRET" final String dataToSign = "(request-target): get " + gatewayUrl + "\n" + "host: " + host + "\n" + "date: " + instant final String hmac = calcHmacSha256( apiSecret.getBytes(StandardCharsets.UTF_8), dataToSign.getBytes(StandardCharsets.UTF_8) ) final String authorization = "Signature keyId=\"" + apiKey + "\",algorithm=\"hmac-sha256\",headers=\"(request-target) host date\",signature=\"" + hmac + "\"" final OkHttpClient client = new OkHttpClient() final Request request = new Request.Builder() .url(url) .header("Cache-Control", "no-cache") .header("Authorization", authorization) .header("Date", instant) .build() final Call call = client.newCall(request) final Response response = call.execute() assert response.code() == HttpStatus.SC_OK } private String timeInGMT() { final Date currentTime = new Date() final SimpleDateFormat sdf = new SimpleDateFormat("EEE, MMM d yyyy HH:mm:ss z") sdf.setTimeZone(TimeZone.getTimeZone("GMT")) return sdf.format(currentTime) } private String calcHmacSha256(byte[] secretKey, byte[] message) { byte[] hmacSha256 try { Mac mac = Mac.getInstance("HmacSHA256") SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey, "HmacSHA256") mac.init(secretKeySpec) hmacSha256 = mac.doFinal(message) } catch (Exception e) { throw new RuntimeException("Failed to calculate hmac-sha256", e) } return new String(Base64.encoder.encode(hmacSha256), StandardCharsets.UTF_8) }