Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async function singleRun() {
clearRequireCache();
const jose = require('jose'); // eslint-disable-line global-require
global.keystore = new jose.JWKS.KeyStore();
await Promise.all([
global.keystore.generate('RSA', 2048),
global.keystore.generate('EC', 'P-256'),
runtimeSupport.EdDSA ? global.keystore.generate('OKP', 'Ed25519') : undefined,
]);
const DEFAULTS = require('../lib/helpers/defaults'); // eslint-disable-line global-require
if (this.format === 'jwt-ietf' || typeof this.format === 'function') {
DEFAULTS.features.ietfJWTAccessTokenProfile.enabled = true;
DEFAULTS.features.ietfJWTAccessTokenProfile.ack = 2;
}
DEFAULTS.formats.AccessToken = this.format;
DEFAULTS.formats.ClientCredentials = this.format;
process.env.MOUNT_VIA = process.env.MOUNT_VIA || '';
process.env.MOUNT_TO = process.env.MOUNT_TO || '/';
async keystore(reload = false) {
assertIssuerConfiguration(this, 'jwks_uri');
const keystore = instance(this).get('keystore');
const cache = instance(this).get('cache');
if (reload || !keystore) {
cache.reset();
const response = await request.call(this, {
method: 'GET',
json: true,
url: this.jwks_uri,
});
const jwks = processResponse(response);
const joseKeyStore = jose.JWKS.asKeyStore(jwks, { ignoreErrors: true });
cache.set('throttle', true, 60 * 1000);
instance(this).set('keystore', joseKeyStore);
return joseKeyStore;
}
return keystore;
}
function getKeystore(jwks) {
const keystore = jose.JWKS.asKeyStore(jwks);
if (keystore.all().some((key) => key.type !== 'private')) {
throw new TypeError('jwks must only contain private keys');
}
return keystore;
}
const fs = require('fs');
const path = require('path');
const jose = require('jose');
const keystore = new jose.JWKS.KeyStore();
Promise.all([
keystore.generate('RSA', 2048, { use: 'sig' }),
keystore.generate('RSA', 2048, { use: 'enc' }),
keystore.generate('EC', 'P-256', { use: 'sig' }),
keystore.generate('EC', 'P-256', { use: 'enc' }),
keystore.generate('OKP', 'Ed25519', { use: 'sig' }),
]).then(() => {
fs.writeFileSync(path.resolve('src/jwks.json'), JSON.stringify(keystore.toJWKS(true), null, 2));
});
get() {
const keystore = new jose.JWKS.KeyStore();
Object.defineProperties(keystore, clientKeyStoreAdditions);
keystore.setReferences(this, provider);
Object.defineProperty(this, 'keystore', {
configurable: false,
value: keystore,
});
const algs = instance(this).lazyAlgs;
if (algs) {
const orig = keystore.all;
Object.defineProperty(keystore, 'all', {
value(opts) {
if (opts && opts.alg && algs.has(opts.alg)) {
let key;
if (opts.alg.startsWith('HS')) {
key = jose.JWK.asKey({