UNPKG

@authing/jose

Version:

Webpack v4 compatible version of panva/jose v3.x

31 lines (30 loc) 1.06 kB
import decrypt from '../flattened/decrypt.js'; import { JWEDecryptionFailed, JWEInvalid } from '../../util/errors.js'; import isObject from '../../lib/is_object.js'; async function generalDecrypt(jwe, key, options) { if (!isObject(jwe)) { throw new JWEInvalid('General JWE must be an object'); } if (!Array.isArray(jwe.recipients) || !jwe.recipients.every(isObject)) { throw new JWEInvalid('JWE Recipients missing or incorrect type'); } for (const recipient of jwe.recipients) { try { return await decrypt({ aad: jwe.aad, ciphertext: jwe.ciphertext, encrypted_key: recipient.encrypted_key, header: recipient.header, iv: jwe.iv, protected: jwe.protected, tag: jwe.tag, unprotected: jwe.unprotected, }, key, options); } catch (_a) { } } throw new JWEDecryptionFailed(); } export { generalDecrypt }; export default generalDecrypt;