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);
 | |
| });
 |