36 lines
951 B
JavaScript
36 lines
951 B
JavaScript
const errors = require('../errors')
|
|
const Key = require('../jwk/key/base')
|
|
const importKey = require('../jwk/import')
|
|
const { KeyStore } = require('../jwks/keystore')
|
|
|
|
module.exports = (input, keyStoreAllowed = false) => {
|
|
if (input instanceof Key) {
|
|
return input
|
|
}
|
|
|
|
if (input instanceof KeyStore) {
|
|
if (!keyStoreAllowed) {
|
|
throw new TypeError('key argument for this operation must not be a JWKS.KeyStore instance')
|
|
}
|
|
|
|
return input
|
|
}
|
|
|
|
try {
|
|
return importKey(input)
|
|
} catch (err) {
|
|
if (err instanceof errors.JOSEError && !(err instanceof errors.JWKImportFailed)) {
|
|
throw err
|
|
}
|
|
|
|
let msg
|
|
if (keyStoreAllowed) {
|
|
msg = 'key must be an instance of a key instantiated by JWK.asKey, a valid JWK.asKey input, or a JWKS.KeyStore instance'
|
|
} else {
|
|
msg = 'key must be an instance of a key instantiated by JWK.asKey, or a valid JWK.asKey input'
|
|
}
|
|
|
|
throw new TypeError(msg)
|
|
}
|
|
}
|