UNPKG

jose

Version:

JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes

46 lines (45 loc) • 1.86 kB
import { compactJWE, createJWE } from "../lib/jwe_encrypt.js"; import { JWTClaimsBuilder, jwtClaim, jwtClaimsSetBytes } from "../lib/jwt_claims_set.js"; import { assertNotSet } from "../lib/validate.js"; const EncryptJWT_base = JWTClaimsBuilder; class EncryptJWT extends EncryptJWT_base { #input = [void 0]; #replicateIssuerAsHeader; #replicateSubjectAsHeader; #replicateAudienceAsHeader; setProtectedHeader(protectedHeader) { return assertNotSet(this.#input[1], "setProtectedHeader"), this.#input[1] = protectedHeader, this; } setKeyManagementParameters(parameters) { return assertNotSet(this.#input[7], "setKeyManagementParameters"), this.#input[7] = parameters, this; } setContentEncryptionKey(cek) { return assertNotSet(this.#input[5], "setContentEncryptionKey"), this.#input[5] = cek, this; } setInitializationVector(iv) { return assertNotSet(this.#input[6], "setInitializationVector"), this.#input[6] = iv, this; } replicateIssuerAsHeader() { return this.#replicateIssuerAsHeader = !0, this; } replicateSubjectAsHeader() { return this.#replicateSubjectAsHeader = !0, this; } replicateAudienceAsHeader() { return this.#replicateAudienceAsHeader = !0, this; } async encrypt(key, options) { const plaintext = jwtClaimsSetBytes(this); this.#input[1] && (this.#replicateIssuerAsHeader || this.#replicateSubjectAsHeader || this.#replicateAudienceAsHeader) && (this.#input[1] = { ...this.#input[1], iss: this.#replicateIssuerAsHeader ? jwtClaim(this, "iss") : void 0, sub: this.#replicateSubjectAsHeader ? jwtClaim(this, "sub") : void 0, aud: this.#replicateAudienceAsHeader ? jwtClaim(this, "aud") : void 0 }); const input = [...this.#input]; return input[0] = plaintext, compactJWE(await createJWE(input, key, options)); } } export { EncryptJWT };