UNPKG

node-red-contrib-line-signature-validator

Version:

This node is to verify signature of incoming message of LINE messaging API.

28 lines (22 loc) 886 B
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = function (RED) { var LINESignatureValidator = function LINESignatureValidator(config) { RED.nodes.createNode(this, config); var node = this; this.on('input', function (msg) { var msgs = [msg, null]; var body = msg.payload; var signature = _crypto2.default.createHmac('SHA256', config.channelSecret).update(Buffer.from(JSON.stringify(body))).digest('base64'); if (msg.req.headers['x-line-signature'] !== signature) msgs.reverse(); node.send(msgs); }); }; RED.nodes.registerType('validator', LINESignatureValidator); }; module.exports = exports['default'];