HMAC Signature Guide
Generating HMAC Signature
Create a Canonical Request
Include Timestamp
Generate String to Sign
Format:
format = {timestamp} + {request method} + {api path} + [opt]{'?' + 'request parameters'} + [opt]{request body}
"1701336941814GET/api/v1/trades?symbol=WBTCUSDT"
Sign the String
Base64 Encode
Include HMAC Signature
JavaScript Example
var cryptoJs = require("crypto-js");
var secret = pm.environment.get("API_SECRET").slice(2);
var timestamp = new Date().getTime();
var requestMethod = pm.request.method.toUpperCase();
var requestPath = pm.request.url.getPath();
var params = pm.request.url.query.filter(item => (!item.disabled)).map(item => `${item.key}=${item.value}`).join('&');
if (params.length != 0) params = '?' + params;
const requestData = !pm.request.body.isEmpty() ? encodeURIComponent(pm.request.body.raw) : ''
var signature = cryptoJs.HmacSHA256(
`${timestamp}${requestMethod}${requestPath}${params}${requestData}`,
cryptoJs.enc.Hex.parse(secret),
);
signature = cryptoJs.enc.Base64.stringify(signature);
pm.request.headers.upsert(
{
key: "VESSEL-TIMESTAMP",
value: timestamp
}
)
pm.request.headers.upsert(
{key: "VESSEL-SIGNATURE",
value: signature});