@znode/sign
Version:
signature algorithm
38 lines (37 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.signWs = exports.sign = void 0;
const sha512_1 = require("@zodash/sha512");
const hmac_1 = require("@zodash/hmac");
const qs = require("@zcorky/query-string");
function sign(data, secret) {
const _method = data.method.toUpperCase();
const _url = data.url;
const _query = stringify(data.query, qs.stringify);
const _payload = stringify(data.payload, JSON.stringify);
const _timestamp = data.timestamp;
// sha512 hash body
const _payloadHash = sha512_1.default(_payload);
// specify sort
const _data = [_method, _url, _query, _payloadHash, _timestamp];
// join with \n
const text = _data.join('\n');
// hmac sha512
return hmac_1.hmacSHA512(text, secret);
}
exports.sign = sign;
function stringify(v, stringifyFn) {
if (!v)
return '';
if (typeof v === 'string')
return v;
return stringifyFn(v);
}
function signWs(data, secret) {
const text = qs.stringify(data);
return hmac_1.hmacSHA512(text, secret);
}
exports.signWs = signWs;
const _sign = sign;
_sign.ws = signWs;
exports.default = _sign;