| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | 
							- /**
 
-  * 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');
 
- }
 
 
  |