mirror of
https://github.com/openstf/stf
synced 2025-10-03 17:59:28 +02:00
39 lines
740 B
JavaScript
39 lines
740 B
JavaScript
var assert = require('assert')
|
|
var jws = require('jws')
|
|
var _ = require('lodash')
|
|
|
|
module.exports.encode = function(options) {
|
|
assert.ok(options.payload, 'payload required')
|
|
assert.ok(options.secret, 'secret required')
|
|
|
|
var header = {
|
|
alg: 'HS256'
|
|
}
|
|
|
|
if (options.header) {
|
|
header = _.merge(header, options.header)
|
|
}
|
|
|
|
return jws.sign({
|
|
header: header
|
|
, payload: options.payload
|
|
, secret: options.secret
|
|
})
|
|
}
|
|
|
|
module.exports.decode = function(payload, secret) {
|
|
if (!jws.verify(payload, 'HS256', secret)) {
|
|
return null
|
|
}
|
|
|
|
var decoded = jws.decode(payload, {
|
|
json: true
|
|
})
|
|
var exp = decoded.header.exp
|
|
|
|
if (exp && exp <= Date.now()) {
|
|
return null
|
|
}
|
|
|
|
return decoded.payload
|
|
}
|