Giter Club home page Giter Club logo

envoy_sigvalidator's Introduction

Envoy.co Webhooks Signature Verification

Description: This module verifies that the data being received by your "http listener" actually originated from Envoy.

The Envoy Webhooks API currently invokes a request when a Guest either signs in or signs out. Below is a representation of this object.

{
  "entry" : "{User Data}",
  "status" : "sign_in or sign_out",
  "timestamp" : "UTC UNIX Time",
  "token" : "Random String",
  "signature" : "HASH of API KEY/TimeStamp/Token"
}

Validate Envoy Signature

To ensure the contents being received originated from Envoy you need the Envoy API Key stored in a Variable, config file, et al (my example uses a config.js file)

module.exports = {
  key : "my envoy api key"
};
Useage of this API
var envoyValidator = require('envoy_sigvalidator');

var apiKey = 'your api key from some source';
var verifier = envoyValidator(apiKey);

//Taken from an Envoy Request (POST) to our WebServer
var envoySignage = {
  timestamp : req.body.timestamp,
  token : req.body.token,
  signature : req.body.signature
};

var dataIsValid = verifier.verifySig(envoySignage);
if (dataIsValid) console.log('The Message Came From Envoy');
else console.log('That Message did not originate from Envoy');
Verify Algorithm

If you don't have a mechanism in place to verify data received from Envoy you can use your "API Key" to create a "mock" Signature Definition Object (timestamp, token, sig)

var envoyValidator = require('envoy_sigvalidator');
var apiKey = 'your api key';
var verifier = envoyValidator(apiKey);
verifier.createSigDef(function(err, sig) {
  var mockEnvoySignage = sig;
  var dataIsValid = verifier.verifySig(mockEnvoySignage);
  if (dataIsValid) console.log('The Message Came From Envoy');
  else console.log('That Message did not originate from Envoy');
});

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.