package org.knowm.xchange.bitso.service; import java.math.BigInteger; import javax.crypto.Mac; import javax.ws.rs.FormParam; import org.knowm.xchange.service.BaseParamsDigest; import si.mazi.rescu.RestInvocation; public class BitsoDigest extends BaseParamsDigest { private final String clientId; private final String apiKey; private BitsoDigest(String secretKeyHex, String clientId, String apiKey) { super(secretKeyHex, HMAC_SHA_256); this.clientId = clientId; this.apiKey = apiKey; } @Override public String digestParams(RestInvocation restInvocation) { Mac mac256 = getMac(); mac256.update(restInvocation.getParamValue(FormParam.class, "nonce").toString().getBytes()); mac256.update(clientId.getBytes()); mac256.update(apiKey.getBytes()); return String.format("%064x", new BigInteger(1, mac256.doFinal())).toUpperCase(); } public static BitsoDigest createInstance(String secretKey, String userName, String apiKey) { return secretKey == null ? null : new BitsoDigest(secretKey, userName, apiKey); } }