Sha256: 451cb072cdab2e34888e65a347a5d9f04c33c3d3d2673414c8530c0eacde1f63

Contents?: true

Size: 1.12 KB

Versions: 17

Compression:

Stored size: 1.12 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 required');
  if ('string' != typeof secret) throw new TypeError('secret required');
  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('cookie required');
  if ('string' != typeof secret) throw new TypeError('secret required');
  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

17 entries across 17 versions & 2 rubygems

Version Path
hooch-0.4.2 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
hooch-0.4.1 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
hooch-0.4.0 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
hooch-0.3.0 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
hooch-0.2.1 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
hooch-0.2.0 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
hooch-0.1.0 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
hooch-0.0.8 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
hooch-0.0.7 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
hooch-0.0.6 jasmine/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
entangled-0.0.16 spec/dummy/public/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
entangled-0.0.15 spec/dummy/public/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
entangled-0.0.14 spec/dummy/public/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
entangled-0.0.13 spec/dummy/public/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
entangled-0.0.12 spec/dummy/public/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
entangled-0.0.11 spec/dummy/public/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js
entangled-0.0.10 spec/dummy/public/node_modules/karma/node_modules/connect/node_modules/cookie-signature/index.js