123456789101112131415161718192021222324252627 |
- import { flattenedDecrypt } from '../flattened/decrypt.js';
- import { JWEInvalid } from '../../util/errors.js';
- import { decoder } from '../../lib/buffer_utils.js';
- export async function compactDecrypt(jwe, key, options) {
- if (jwe instanceof Uint8Array) {
- jwe = decoder.decode(jwe);
- }
- if (typeof jwe !== 'string') {
- throw new JWEInvalid('Compact JWE must be a string or Uint8Array');
- }
- const { 0: protectedHeader, 1: encryptedKey, 2: iv, 3: ciphertext, 4: tag, length, } = jwe.split('.');
- if (length !== 5) {
- throw new JWEInvalid('Invalid Compact JWE');
- }
- const decrypted = await flattenedDecrypt({
- ciphertext,
- iv: (iv || undefined),
- protected: protectedHeader || undefined,
- tag: (tag || undefined),
- encrypted_key: encryptedKey || undefined,
- }, key, options);
- const result = { plaintext: decrypted.plaintext, protectedHeader: decrypted.protectedHeader };
- if (typeof key === 'function') {
- return { ...result, key: decrypted.key };
- }
- return result;
- }
|