34 lines
911 B
JavaScript
34 lines
911 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var Keypairs = require('./keypairs.js');
|
||
|
var Keyfetch = require('keyfetch');
|
||
|
|
||
|
Keypairs.generate().then(function (keypair) {
|
||
|
return Keypairs.thumbprint({ jwk: keypair.public }).then(function (thumb) {
|
||
|
var iss = 'https://coolaj86.com/';
|
||
|
|
||
|
// shim so that no http request is necessary
|
||
|
keypair.private.kid = thumb;
|
||
|
Keyfetch._setCache(iss, { thumbprint: thumb, jwk: keypair.private });
|
||
|
|
||
|
return Keypairs.signJwt({
|
||
|
jwk: keypair.private
|
||
|
, claims: {
|
||
|
iss: iss
|
||
|
, sub: 'coolaj86@gmail.com'
|
||
|
, exp: Math.round(Date.now()/1000) + (3 * 24 * 60 * 60)
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}).then(function (jwt) {
|
||
|
console.log(jwt);
|
||
|
return Keyfetch.verify({ jwt: jwt }).then(function (ok) {
|
||
|
if (!ok) {
|
||
|
throw new Error("SANITY: did not verify (should have failed)");
|
||
|
}
|
||
|
console.log("Verified token");
|
||
|
});
|
||
|
}).catch(function (err) {
|
||
|
console.error(err);
|
||
|
});
|