UNPKG

oidc-lib

Version:

A library for creating OIDC Service Providers

126 lines (100 loc) 3.08 kB
"use strict"; var pk; async function registerEndpoints(global_pk){ pk = global_pk; } //////////////////////////////////////////////// JWS ////////////////////////////////////////////////////////////////// function createSign(options, keyObject) { // fixup signatories return pk.jose.JWS.createSign(options, keyObject.private); } function createVerify(options, signs) { return pk.jose.JWS.createVerify(signs, options); } var JWS = { createSign: createSign, createVerify: createVerify }; //////////////////////////////////////////////// JWE ////////////////////////////////////////////////////////////////// function createEncrypt(options, keyObject) { var key; switch(keyObject.alg){ case 'A128GCM': key = keyObject.symmetric; break; case 'RS256': key = keyObject.private; break; default: throw "claimer_crypto asKeyStore key alg unknown: " + keyObject.alg; } return pk.jose.JWE.createEncrypt(options, key); } function createDecrypt(opts, keyOrKeystore){ if (keyOrKeystore === undefined){ keyOrKeystore = opts; opts = undefined; } return pk.jose.JWE.createDecrypt(keyOrKeystore, opts); } var JWE = { createEncrypt: createEncrypt, createDecrypt: createDecrypt }; //////////////////////////////////////////////// JWK ////////////////////////////////////////////////////////////////// //.............................................. Keystore .............................................................. // {input} is a String or JSON object representing the JWK-set function asKeyStore(input){ var inputType = typeof input; var key; var retVal; switch (inputType){ case 'string': retVal = input; break; case 'object': if (input.constructor === Array){ var jwkset = { keys: [] }; for (var i=0; i<input.length; i++){ var keyObject = input[i]; switch(keyObject.alg){ case 'A128GCM': key = keyObject.symmetric; break; case 'RS256': key = keyObject.private; break; default: throw "claimer_crypto asKeyStore key alg unknown: " + keyObject.alg; } jwkset.keys.push(key); } retVal = jwkset; } else{ retVal = input; } break; default: throw 'claimer_crypto asKeyStore unsupported input type: ' + typeof input; } return pk.jose.JWK.asKeyStore(retVal); } function createKeyStore(){ return pk.jose.JWK.createKeyStore(); } var JWK = { asKeyStore: asKeyStore, createKeyStore: createKeyStore }; //////////////////////////////////////////////// MODULE ////////////////////////////////////////////////////////////////// module.exports = { registerEndpoints: registerEndpoints, JWS: JWS, JWE: JWE, JWK: JWK, provider: 'node-jose', registerEndpoints: registerEndpoints };