zwdd
Version:
专有钉钉node-sdk
45 lines • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sign = exports.createNonce = void 0;
const crypto_1 = require("crypto");
const getRandom = (length) => {
let value = '';
for (let i = 0; i < length; i++) {
value += Math.floor(Math.random() * 10);
}
return value;
};
const createNonce = () => {
return `${Date.now()}${getRandom(4)}`;
};
exports.createNonce = createNonce;
const serializeParams = (input) => {
return Object.keys(input)
.sort()
.map(key => {
const value = input[key];
if (Array.isArray(value)) {
return value.sort().map(v => {
return `${key}=${v}`;
}).join('&');
}
return `${key}=${value}`;
})
.join('&');
};
const sign = (params) => {
const data = [
params.method.toUpperCase(),
params.timestamp,
params.nonce,
params.url,
];
if (params.params) {
data.push(serializeParams(params.params));
}
const crypto = (0, crypto_1.createHmac)('sha256', params.appSecret);
crypto.update(data.join('\n'));
return crypto.digest('base64');
};
exports.sign = sign;
//# sourceMappingURL=crypto.js.map