UNPKG

@banked/node

Version:

Node.js library for the Banked API

51 lines (38 loc) 1.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _crypto = _interopRequireDefault(require("crypto")); var _isWithinInterval = _interopRequireDefault(require("date-fns/isWithinInterval")); var _webhook = _interopRequireDefault(require("../validators/webhook")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const validate = (config = {}) => { const _webhookValidator = (0, _webhook.default)(config), value = _webhookValidator.value, error = _webhookValidator.error; if (error) { throw new Error(error); } const raw = value.payload_header.split("."); const payloadTimestamp = raw[0]; const payloadSignature = raw[1]; const toBeSigned = `${payloadTimestamp}.${value.payload}`; const hmac = _crypto.default.createHmac("sha256", value.signature).update(toBeSigned); const digest = hmac.digest("hex"); const result = { isValid: digest === payloadSignature, localHash: digest, payloadHash: payloadSignature }; if (value.time_range) { const d = parseInt(payloadTimestamp, 10) * 1000; result.isWithinRange = (0, _isWithinInterval.default)(new Date(d), { start: new Date(value.time_range.start), end: new Date(value.time_range.end) }); } return result; }; var _default = validate; exports.default = _default;