UNPKG

ts-jose

Version:

Wrap functions of JOSE in steady interface

42 lines 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JWE = void 0; const jose_1 = require("jose"); class JWE { static async decrypt(cypher, key, options) { const jwk = await this.getKeyFrom(cypher, key, options); if (typeof options?.enc === 'string') options.enc = [options.enc]; if (typeof options?.alg === 'string') options.alg = [options.alg]; const result = await (0, jose_1.compactDecrypt)(cypher, jwk.key, { contentEncryptionAlgorithms: options?.enc ? [...options.enc] : undefined, keyManagementAlgorithms: options?.alg ? [...options.alg] : undefined, }); const decoder = new TextDecoder(); return decoder.decode(result.plaintext); } static async encrypt(data, key, options) { const jwk = key.getKey({ use: 'enc', kid: options.kid, }); const encoder = new TextEncoder(); const jwe = new jose_1.CompactEncrypt(encoder.encode(data)); jwe.setProtectedHeader({ alg: options.alg, enc: options.enc, kid: options.kid ?? jwk.kid, }); return jwe.encrypt((await jwk.toPublic()).key); } static getKeyFrom(cypher, jwk, options) { const header = (0, jose_1.decodeProtectedHeader)(cypher); return Promise.resolve(jwk.getKey({ use: 'enc', kid: options?.kid ? options.kid : header.kid, })); } } exports.JWE = JWE; //# sourceMappingURL=jwe.js.map