Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function b64encode(str) {
- return Buffer.from(str).toString('base64').replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
- }
- function gentoken(endpoint, subject, key) {
- var message = b64encode(JSON.stringify({
- typ: 'JWT',
- alg: 'ES256'
- })) +
- '.' +
- b64encode(JSON.stringify({
- aud: endpoint,
- exp: Math.floor(Date.now() / 1000) + 43200, // 12 hours
- sub: subject
- }));
- return message + '.' + (function () {
- var sign = require('crypto').createSign('RSA-SHA256');
- sign.update(message);
- return require('ecdsa-sig-formatter').derToJose(sign.sign(
- '-----BEGIN EC PRIVATE KEY-----\n' +
- Buffer.from('30310201010420' + key.toString('hex') + 'A00A06082A8648CE3D030107', 'hex').toString('base64') + '\n' +
- '-----END EC PRIVATE KEY-----'
- ), 'ES256');
- })();
- }
- module.exports = gentoken;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement