const CODES = { TODO: 'ERR_TODO', JOSEAlgNotSupported: 'ERR_JOSE_ALG_NOT_SUPPORTED', JWEDecryptionFailed: 'ERR_JWE_DECRYPTION_FAILED', JWEInvalid: 'ERR_JWE_INVALID', JWEInvalidHeader: 'ERR_JWE_INVALID_HEADER', JWENoRecipients: 'ERR_JWE_NO_RECIPIENTS', JWKImportFailed: 'ERR_JWK_IMPORT_FAILED', JWKKeySupport: 'ERR_JWK_KEY_SUPPORT', JWSInvalidHeader: 'ERR_JWS_INVALID_HEADER', JWSNoRecipients: 'ERR_JWS_NO_RECIPIENTS', JWSVerificationFailed: 'ERR_JWS_VERIFICATION_FAILED' } const DEFAULT_MESSAGES = { JWEDecryptionFailed: 'decryption operation failed', JWSVerificationFailed: 'signature verification failed' } class JoseError extends Error { constructor (message) { super(message) if (message === undefined) { message = DEFAULT_MESSAGES[this.constructor.name] } this.name = this.constructor.name this.code = CODES[this.constructor.name] Error.captureStackTrace(this, this.constructor) } } module.exports.JOSEAlgNotSupported = class JOSEAlgNotSupported extends JoseError {} module.exports.JWEDecryptionFailed = class JWEDecryptionFailed extends JoseError {} module.exports.JWEInvalid = class JWEInvalid extends JoseError {} module.exports.JWEInvalidHeader = class JWEInvalidHeader extends JoseError {} module.exports.JWENoRecipients = class JWENoRecipients extends JoseError {} module.exports.JWKImportFailed = class JWKImportFailed extends JoseError {} module.exports.JWKKeySupport = class JWKKeySupport extends JoseError {} module.exports.JWSInvalidHeader = class JWSInvalidHeader extends JoseError {} module.exports.JWSNoRecipients = class JWSNoRecipients extends JoseError {} module.exports.JWSVerificationFailed = class JWSVerificationFailed extends JoseError {} module.exports.TODO = class TODO extends JoseError {}