Sha256: 8d762862020064468b4af17e561ee1ee29d9d55311a1c19d958c4ff2be912963

Contents?: true

Size: 1.2 KB

Versions: 69

Compression:

Stored size: 1.2 KB

Contents

/**
 * Module dependencies.
 */

var crypto = require('crypto');

/**
 * Sign the given `val` with `secret`.
 *
 * @param {String} val
 * @param {String} secret
 * @return {String}
 * @api private
 */

exports.sign = function(val, secret){
  if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string.");
  if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
  return val + '.' + crypto
    .createHmac('sha256', secret)
    .update(val)
    .digest('base64')
    .replace(/\=+$/, '');
};

/**
 * Unsign and decode the given `val` with `secret`,
 * returning `false` if the signature is invalid.
 *
 * @param {String} val
 * @param {String} secret
 * @return {String|Boolean}
 * @api private
 */

exports.unsign = function(val, secret){
  if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided.");
  if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
  var str = val.slice(0, val.lastIndexOf('.'))
    , mac = exports.sign(str, secret);
  
  return sha1(mac) == sha1(val) ? str : false;
};

/**
 * Private
 */

function sha1(str){
  return crypto.createHash('sha1').update(str).digest('hex');
}

Version data entries

69 entries across 68 versions & 18 rubygems

Version Path
rapid_stack-0.2.0 templates/frontend/node_modules/cookie-signature/index.js
rapid_stack-0.1.1 templates/FrontEnd/node_modules/cookie-signature/index.js
rapid_stack-0.1.0 templates/FrontEnd/node_modules/cookie-signature/index.js
optimacms-0.1.61 spec/dummy/node_modules/cookie-signature/index.js
disco_app-0.18.0 test/dummy/node_modules/cookie-signature/index.js
disco_app-0.18.2 test/dummy/node_modules/cookie-signature/index.js
disco_app-0.16.1 test/dummy/node_modules/cookie-signature/index.js
disco_app-0.15.2 test/dummy/node_modules/cookie-signature/index.js
disco_app-0.18.4 test/dummy/node_modules/cookie-signature/index.js
disco_app-0.18.1 test/dummy/node_modules/cookie-signature/index.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/cookie-signature/index.js
disco_app-0.14.0 test/dummy/node_modules/cookie-signature/index.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/cookie-signature/index.js
tang-0.2.1 spec/tang_app/node_modules/cookie-signature/index.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/cookie-signature/index.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/cookie-signature/index.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/cookie-signature/index.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/cookie-signature/index.js
tang-0.2.0 spec/tang_app/node_modules/cookie-signature/index.js
tang-0.1.0 spec/tang_app/node_modules/cookie-signature/index.js