diff options
| author | 8cy <[email protected]> | 2020-05-24 07:40:34 -0700 |
|---|---|---|
| committer | 8cy <[email protected]> | 2020-05-24 07:40:34 -0700 |
| commit | a7dc1894d3f030926a95b948bd46fa60e95b8dcb (patch) | |
| tree | aa5c1b50427f9658ea2de686ea8c2032f289a6a2 /node_modules/cookie-signature/index.js | |
| download | aghpb-online-a7dc1894d3f030926a95b948bd46fa60e95b8dcb.tar.xz aghpb-online-a7dc1894d3f030926a95b948bd46fa60e95b8dcb.zip | |
wow it actually works lol
Diffstat (limited to 'node_modules/cookie-signature/index.js')
| -rw-r--r-- | node_modules/cookie-signature/index.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/node_modules/cookie-signature/index.js b/node_modules/cookie-signature/index.js new file mode 100644 index 0000000..b8c9463 --- /dev/null +++ b/node_modules/cookie-signature/index.js @@ -0,0 +1,51 @@ +/** + * 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'); +} |