package org.knowm.xchange.anx.v2.service; import java.io.IOException; import javax.crypto.Mac; import org.knowm.xchange.service.BaseParamsDigest; import net.iharder.Base64; import si.mazi.rescu.RestInvocation; /** * @author Matija Mazi */ public class ANXV2Digest extends BaseParamsDigest { /** * Constructor * * @param secretKeyBase64 * @throws IllegalArgumentException if key is invalid (cannot be base-64-decoded or the decoded key is invalid). */ private ANXV2Digest(byte[] secretKeyBase64) { super(secretKeyBase64, HMAC_SHA_512); } public static ANXV2Digest createInstance(String secretKeyBase64) { try { if (secretKeyBase64 != null) return new ANXV2Digest(Base64.decode(secretKeyBase64.getBytes())); } catch (IOException e) { throw new IllegalArgumentException("Could not decode Base 64 string", e); } return null; } @Override public String digestParams(RestInvocation restInvocation) { Mac mac = getMac(); mac.update(restInvocation.getMethodPath().getBytes()); mac.update(new byte[] { 0 }); mac.update(restInvocation.getRequestBody().getBytes()); return Base64.encodeBytes(mac.doFinal()).trim(); } }