@znode/sign
Version:
signature algorithm
34 lines (33 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.signWs = exports.sign = void 0;
const hmac_1 = require("@zodash/hmac");
const qs = require("@zcorky/query-string");
function sign(data, secret) {
const _params = {
...data.params,
timestamp: data.timestamp,
api_key: data.apiKey,
};
// alphabet order
const _params_alphabetical = Object.keys(_params)
.sort((a, b) => a.localeCompare(b))
.reduce((all, key) => {
all[key] = _params[key];
return all;
}, {});
// join with urlencoded
const text = qs.stringify(_params_alphabetical);
// console.log('text:', text);
// console.log('raw:', require('crypto').createHmac('sha256', secret).update(text).digest('hex'), 'secret:', secret);
return hmac_1.hmacSHA256(text, secret);
}
exports.sign = sign;
function signWs(timestamp, secret) {
const text = `GET/realtime${timestamp}`;
return hmac_1.hmacSHA256(text, secret);
}
exports.signWs = signWs;
const _sign = sign;
_sign.ws = signWs;
exports.default = _sign;