{"version":3,"file":"webapi-BgpV54gi.mjs","names":["encode","encrypt","decrypt","getCryptoKey","wrap","unwrap","deriveKey","encode","encode","wrap","aeskw.wrap","b64u","unwrap","aeskw.unwrap","subtleAlgorithm","decodeBase64URL","b64u","exportPublic","exportPrivate","encrypt","b64u","decrypt","ecdhes.allowed","ecdhes.deriveKey","aeskw.unwrap","rsaes.decrypt","pbes2kw.unwrap","aesGcmKwUnwrap","b64u","aeskw.wrap","rsaes.encrypt","pbes2kw.wrap","aesGcmKwWrap","jwk.isJWK","jwk.isSecretJWK","invalidKeyInput","jwk.isPrivateJWK","jwk.isPublicJWK","b64u","encode","decrypt","#plaintext","#keyManagementParameters","#protectedHeader","#sharedUnprotectedHeader","#unprotectedHeader","#aad","#cek","#iv","b64u","encode","encrypt","#parent","#plaintext","#recipients","#protectedHeader","#unprotectedHeader","#aad","b64u","b64u","encode","#payload","#flattened","#payload","#protectedHeader","#unprotectedHeader","b64u","encode","#flattened","#parent","#payload","#signatures","#jwt","#protectedHeader","#jwt","#protectedHeader","#keyManagementParameters","#cek","#iv","#replicateIssuerAsHeader","#replicateSubjectAsHeader","#replicateAudienceAsHeader","encode","b64u","#jwks","#cached","#url","#timeoutDuration","#cooldownDuration","#cacheMaxAge","#headers","#customFetch","#cache","#jwksTimestamp","#local","#pendingFetch","#jwt","b64u.encode","b64u.decode","b64u","b64u"],"sources":["../node_modules/jose/dist/webapi/lib/buffer_utils.js","../node_modules/jose/dist/webapi/lib/base64.js","../node_modules/jose/dist/webapi/util/base64url.js","../node_modules/jose/dist/webapi/lib/crypto_key.js","../node_modules/jose/dist/webapi/lib/invalid_key_input.js","../node_modules/jose/dist/webapi/util/errors.js","../node_modules/jose/dist/webapi/lib/is_key_like.js","../node_modules/jose/dist/webapi/lib/content_encryption.js","../node_modules/jose/dist/webapi/lib/helpers.js","../node_modules/jose/dist/webapi/lib/type_checks.js","../node_modules/jose/dist/webapi/lib/aeskw.js","../node_modules/jose/dist/webapi/lib/ecdhes.js","../node_modules/jose/dist/webapi/lib/pbes2kw.js","../node_modules/jose/dist/webapi/lib/signing.js","../node_modules/jose/dist/webapi/lib/rsaes.js","../node_modules/jose/dist/webapi/lib/jwk_to_key.js","../node_modules/jose/dist/webapi/lib/normalize_key.js","../node_modules/jose/dist/webapi/lib/asn1.js","../node_modules/jose/dist/webapi/key/import.js","../node_modules/jose/dist/webapi/lib/key_to_jwk.js","../node_modules/jose/dist/webapi/key/export.js","../node_modules/jose/dist/webapi/lib/aesgcmkw.js","../node_modules/jose/dist/webapi/lib/key_management.js","../node_modules/jose/dist/webapi/lib/validate_crit.js","../node_modules/jose/dist/webapi/lib/validate_algorithms.js","../node_modules/jose/dist/webapi/lib/check_key_type.js","../node_modules/jose/dist/webapi/lib/deflate.js","../node_modules/jose/dist/webapi/jwe/flattened/decrypt.js","../node_modules/jose/dist/webapi/jwe/compact/decrypt.js","../node_modules/jose/dist/webapi/jwe/general/decrypt.js","../node_modules/jose/dist/webapi/jwe/flattened/encrypt.js","../node_modules/jose/dist/webapi/jwe/general/encrypt.js","../node_modules/jose/dist/webapi/jws/flattened/verify.js","../node_modules/jose/dist/webapi/jws/compact/verify.js","../node_modules/jose/dist/webapi/jws/general/verify.js","../node_modules/jose/dist/webapi/lib/jwt_claims_set.js","../node_modules/jose/dist/webapi/jwt/verify.js","../node_modules/jose/dist/webapi/jwt/decrypt.js","../node_modules/jose/dist/webapi/jwe/compact/encrypt.js","../node_modules/jose/dist/webapi/jws/flattened/sign.js","../node_modules/jose/dist/webapi/jws/compact/sign.js","../node_modules/jose/dist/webapi/jws/general/sign.js","../node_modules/jose/dist/webapi/jwt/sign.js","../node_modules/jose/dist/webapi/jwt/encrypt.js","../node_modules/jose/dist/webapi/jwk/thumbprint.js","../node_modules/jose/dist/webapi/jwk/embedded.js","../node_modules/jose/dist/webapi/jwks/local.js","../node_modules/jose/dist/webapi/jwks/remote.js","../node_modules/jose/dist/webapi/jwt/unsecured.js","../node_modules/jose/dist/webapi/util/decode_protected_header.js","../node_modules/jose/dist/webapi/util/decode_jwt.js","../node_modules/jose/dist/webapi/key/generate_key_pair.js","../node_modules/jose/dist/webapi/key/generate_secret.js","../node_modules/jose/dist/webapi/index.js"],"sourcesContent":["export const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n    const size = buffers.reduce((acc, { length }) => acc + length, 0);\n    const buf = new Uint8Array(size);\n    let i = 0;\n    for (const buffer of buffers) {\n        buf.set(buffer, i);\n        i += buffer.length;\n    }\n    return buf;\n}\nfunction writeUInt32BE(buf, value, offset) {\n    if (value < 0 || value >= MAX_INT32) {\n        throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n    }\n    buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n    const high = Math.floor(value / MAX_INT32);\n    const low = value % MAX_INT32;\n    const buf = new Uint8Array(8);\n    writeUInt32BE(buf, high, 0);\n    writeUInt32BE(buf, low, 4);\n    return buf;\n}\nexport function uint32be(value) {\n    const buf = new Uint8Array(4);\n    writeUInt32BE(buf, value);\n    return buf;\n}\nexport function encode(string) {\n    const bytes = new Uint8Array(string.length);\n    for (let i = 0; i < string.length; i++) {\n        const code = string.charCodeAt(i);\n        if (code > 127) {\n            throw new TypeError('non-ASCII string encountered in encode()');\n        }\n        bytes[i] = code;\n    }\n    return bytes;\n}\n","export function encodeBase64(input) {\n    if (Uint8Array.prototype.toBase64) {\n        return input.toBase64();\n    }\n    const CHUNK_SIZE = 0x8000;\n    const arr = [];\n    for (let i = 0; i < input.length; i += CHUNK_SIZE) {\n        arr.push(String.fromCharCode.apply(null, input.subarray(i, i + CHUNK_SIZE)));\n    }\n    return btoa(arr.join(''));\n}\nexport function decodeBase64(encoded) {\n    if (Uint8Array.fromBase64) {\n        return Uint8Array.fromBase64(encoded);\n    }\n    const binary = atob(encoded);\n    const bytes = new Uint8Array(binary.length);\n    for (let i = 0; i < binary.length; i++) {\n        bytes[i] = binary.charCodeAt(i);\n    }\n    return bytes;\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nimport { encodeBase64, decodeBase64 } from '../lib/base64.js';\nexport function decode(input) {\n    if (Uint8Array.fromBase64) {\n        return Uint8Array.fromBase64(typeof input === 'string' ? input : decoder.decode(input), {\n            alphabet: 'base64url',\n        });\n    }\n    let encoded = input;\n    if (encoded instanceof Uint8Array) {\n        encoded = decoder.decode(encoded);\n    }\n    encoded = encoded.replace(/-/g, '+').replace(/_/g, '/');\n    try {\n        return decodeBase64(encoded);\n    }\n    catch {\n        throw new TypeError('The input to be decoded is not correctly encoded.');\n    }\n}\nexport function encode(input) {\n    let unencoded = input;\n    if (typeof unencoded === 'string') {\n        unencoded = encoder.encode(unencoded);\n    }\n    if (Uint8Array.prototype.toBase64) {\n        return unencoded.toBase64({ alphabet: 'base64url', omitPadding: true });\n    }\n    return encodeBase64(unencoded).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n","const unusable = (name, prop = 'algorithm.name') => new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\nconst isAlgorithm = (algorithm, name) => algorithm.name === name;\nfunction getHashLength(hash) {\n    return parseInt(hash.name.slice(4), 10);\n}\nfunction checkHashLength(algorithm, expected) {\n    const actual = getHashLength(algorithm.hash);\n    if (actual !== expected)\n        throw unusable(`SHA-${expected}`, 'algorithm.hash');\n}\nfunction getNamedCurve(alg) {\n    switch (alg) {\n        case 'ES256':\n            return 'P-256';\n        case 'ES384':\n            return 'P-384';\n        case 'ES512':\n            return 'P-521';\n        default:\n            throw new Error('unreachable');\n    }\n}\nfunction checkUsage(key, usage) {\n    if (usage && !key.usages.includes(usage)) {\n        throw new TypeError(`CryptoKey does not support this operation, its usages must include ${usage}.`);\n    }\n}\nexport function checkSigCryptoKey(key, alg, usage) {\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512': {\n            if (!isAlgorithm(key.algorithm, 'HMAC'))\n                throw unusable('HMAC');\n            checkHashLength(key.algorithm, parseInt(alg.slice(2), 10));\n            break;\n        }\n        case 'RS256':\n        case 'RS384':\n        case 'RS512': {\n            if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n                throw unusable('RSASSA-PKCS1-v1_5');\n            checkHashLength(key.algorithm, parseInt(alg.slice(2), 10));\n            break;\n        }\n        case 'PS256':\n        case 'PS384':\n        case 'PS512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n                throw unusable('RSA-PSS');\n            checkHashLength(key.algorithm, parseInt(alg.slice(2), 10));\n            break;\n        }\n        case 'Ed25519':\n        case 'EdDSA': {\n            if (!isAlgorithm(key.algorithm, 'Ed25519'))\n                throw unusable('Ed25519');\n            break;\n        }\n        case 'ML-DSA-44':\n        case 'ML-DSA-65':\n        case 'ML-DSA-87': {\n            if (!isAlgorithm(key.algorithm, alg))\n                throw unusable(alg);\n            break;\n        }\n        case 'ES256':\n        case 'ES384':\n        case 'ES512': {\n            if (!isAlgorithm(key.algorithm, 'ECDSA'))\n                throw unusable('ECDSA');\n            const expected = getNamedCurve(alg);\n            const actual = key.algorithm.namedCurve;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.namedCurve');\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usage);\n}\nexport function checkEncCryptoKey(key, alg, usage) {\n    switch (alg) {\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM': {\n            if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n                throw unusable('AES-GCM');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            if (!isAlgorithm(key.algorithm, 'AES-KW'))\n                throw unusable('AES-KW');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'ECDH': {\n            switch (key.algorithm.name) {\n                case 'ECDH':\n                case 'X25519':\n                    break;\n                default:\n                    throw unusable('ECDH or X25519');\n            }\n            break;\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW':\n            if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n                throw unusable('PBKDF2');\n            break;\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n                throw unusable('RSA-OAEP');\n            checkHashLength(key.algorithm, parseInt(alg.slice(9), 10) || 1);\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usage);\n}\n","function message(msg, actual, ...types) {\n    types = types.filter(Boolean);\n    if (types.length > 2) {\n        const last = types.pop();\n        msg += `one of type ${types.join(', ')}, or ${last}.`;\n    }\n    else if (types.length === 2) {\n        msg += `one of type ${types[0]} or ${types[1]}.`;\n    }\n    else {\n        msg += `of type ${types[0]}.`;\n    }\n    if (actual == null) {\n        msg += ` Received ${actual}`;\n    }\n    else if (typeof actual === 'function' && actual.name) {\n        msg += ` Received function ${actual.name}`;\n    }\n    else if (typeof actual === 'object' && actual != null) {\n        if (actual.constructor?.name) {\n            msg += ` Received an instance of ${actual.constructor.name}`;\n        }\n    }\n    return msg;\n}\nexport const invalidKeyInput = (actual, ...types) => message('Key must be ', actual, ...types);\nexport const withAlg = (alg, actual, ...types) => message(`Key for the ${alg} algorithm must be `, actual, ...types);\n","export class JOSEError extends Error {\n    static code = 'ERR_JOSE_GENERIC';\n    code = 'ERR_JOSE_GENERIC';\n    constructor(message, options) {\n        super(message, options);\n        this.name = this.constructor.name;\n        Error.captureStackTrace?.(this, this.constructor);\n    }\n}\nexport class JWTClaimValidationFailed extends JOSEError {\n    static code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n    code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n    claim;\n    reason;\n    payload;\n    constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n        super(message, { cause: { claim, reason, payload } });\n        this.claim = claim;\n        this.reason = reason;\n        this.payload = payload;\n    }\n}\nexport class JWTExpired extends JOSEError {\n    static code = 'ERR_JWT_EXPIRED';\n    code = 'ERR_JWT_EXPIRED';\n    claim;\n    reason;\n    payload;\n    constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n        super(message, { cause: { claim, reason, payload } });\n        this.claim = claim;\n        this.reason = reason;\n        this.payload = payload;\n    }\n}\nexport class JOSEAlgNotAllowed extends JOSEError {\n    static code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n    code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n}\nexport class JOSENotSupported extends JOSEError {\n    static code = 'ERR_JOSE_NOT_SUPPORTED';\n    code = 'ERR_JOSE_NOT_SUPPORTED';\n}\nexport class JWEDecryptionFailed extends JOSEError {\n    static code = 'ERR_JWE_DECRYPTION_FAILED';\n    code = 'ERR_JWE_DECRYPTION_FAILED';\n    constructor(message = 'decryption operation failed', options) {\n        super(message, options);\n    }\n}\nexport class JWEInvalid extends JOSEError {\n    static code = 'ERR_JWE_INVALID';\n    code = 'ERR_JWE_INVALID';\n}\nexport class JWSInvalid extends JOSEError {\n    static code = 'ERR_JWS_INVALID';\n    code = 'ERR_JWS_INVALID';\n}\nexport class JWTInvalid extends JOSEError {\n    static code = 'ERR_JWT_INVALID';\n    code = 'ERR_JWT_INVALID';\n}\nexport class JWKInvalid extends JOSEError {\n    static code = 'ERR_JWK_INVALID';\n    code = 'ERR_JWK_INVALID';\n}\nexport class JWKSInvalid extends JOSEError {\n    static code = 'ERR_JWKS_INVALID';\n    code = 'ERR_JWKS_INVALID';\n}\nexport class JWKSNoMatchingKey extends JOSEError {\n    static code = 'ERR_JWKS_NO_MATCHING_KEY';\n    code = 'ERR_JWKS_NO_MATCHING_KEY';\n    constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n        super(message, options);\n    }\n}\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n    [Symbol.asyncIterator];\n    static code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n    code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n    constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n        super(message, options);\n    }\n}\nexport class JWKSTimeout extends JOSEError {\n    static code = 'ERR_JWKS_TIMEOUT';\n    code = 'ERR_JWKS_TIMEOUT';\n    constructor(message = 'request timed out', options) {\n        super(message, options);\n    }\n}\nexport class JWSSignatureVerificationFailed extends JOSEError {\n    static code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n    code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n    constructor(message = 'signature verification failed', options) {\n        super(message, options);\n    }\n}\n","export function assertCryptoKey(key) {\n    if (!isCryptoKey(key)) {\n        throw new Error('CryptoKey instance expected');\n    }\n}\nexport const isCryptoKey = (key) => {\n    if (key?.[Symbol.toStringTag] === 'CryptoKey')\n        return true;\n    try {\n        return key instanceof CryptoKey;\n    }\n    catch {\n        return false;\n    }\n};\nexport const isKeyObject = (key) => key?.[Symbol.toStringTag] === 'KeyObject';\nexport const isKeyLike = (key) => isCryptoKey(key) || isKeyObject(key);\n","import { concat, uint64be } from './buffer_utils.js';\nimport { checkEncCryptoKey } from './crypto_key.js';\nimport { invalidKeyInput } from './invalid_key_input.js';\nimport { JOSENotSupported, JWEDecryptionFailed, JWEInvalid } from '../util/errors.js';\nimport { isCryptoKey } from './is_key_like.js';\nexport function cekLength(alg) {\n    switch (alg) {\n        case 'A128GCM':\n            return 128;\n        case 'A192GCM':\n            return 192;\n        case 'A256GCM':\n        case 'A128CBC-HS256':\n            return 256;\n        case 'A192CBC-HS384':\n            return 384;\n        case 'A256CBC-HS512':\n            return 512;\n        default:\n            throw new JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n    }\n}\nexport const generateCek = (alg) => crypto.getRandomValues(new Uint8Array(cekLength(alg) >> 3));\nfunction checkCekLength(cek, expected) {\n    const actual = cek.byteLength << 3;\n    if (actual !== expected) {\n        throw new JWEInvalid(`Invalid Content Encryption Key length. Expected ${expected} bits, got ${actual} bits`);\n    }\n}\nfunction ivBitLength(alg) {\n    switch (alg) {\n        case 'A128GCM':\n        case 'A128GCMKW':\n        case 'A192GCM':\n        case 'A192GCMKW':\n        case 'A256GCM':\n        case 'A256GCMKW':\n            return 96;\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            return 128;\n        default:\n            throw new JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n    }\n}\nexport const generateIv = (alg) => crypto.getRandomValues(new Uint8Array(ivBitLength(alg) >> 3));\nexport function checkIvLength(enc, iv) {\n    if (iv.length << 3 !== ivBitLength(enc)) {\n        throw new JWEInvalid('Invalid Initialization Vector length');\n    }\n}\nasync function cbcKeySetup(enc, cek, usage) {\n    if (!(cek instanceof Uint8Array)) {\n        throw new TypeError(invalidKeyInput(cek, 'Uint8Array'));\n    }\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    const encKey = await crypto.subtle.importKey('raw', cek.subarray(keySize >> 3), 'AES-CBC', false, [usage]);\n    const macKey = await crypto.subtle.importKey('raw', cek.subarray(0, keySize >> 3), {\n        hash: `SHA-${keySize << 1}`,\n        name: 'HMAC',\n    }, false, ['sign']);\n    return { encKey, macKey, keySize };\n}\nasync function cbcHmacTag(macKey, macData, keySize) {\n    return new Uint8Array((await crypto.subtle.sign('HMAC', macKey, macData)).slice(0, keySize >> 3));\n}\nasync function cbcEncrypt(enc, plaintext, cek, iv, aad) {\n    const { encKey, macKey, keySize } = await cbcKeySetup(enc, cek, 'encrypt');\n    const ciphertext = new Uint8Array(await crypto.subtle.encrypt({\n        iv: iv,\n        name: 'AES-CBC',\n    }, encKey, plaintext));\n    const macData = concat(aad, iv, ciphertext, uint64be(aad.length << 3));\n    const tag = await cbcHmacTag(macKey, macData, keySize);\n    return { ciphertext, tag, iv };\n}\nasync function timingSafeEqual(a, b) {\n    if (!(a instanceof Uint8Array)) {\n        throw new TypeError('First argument must be a buffer');\n    }\n    if (!(b instanceof Uint8Array)) {\n        throw new TypeError('Second argument must be a buffer');\n    }\n    const algorithm = { name: 'HMAC', hash: 'SHA-256' };\n    const key = (await crypto.subtle.generateKey(algorithm, false, ['sign']));\n    const aHmac = new Uint8Array(await crypto.subtle.sign(algorithm, key, a));\n    const bHmac = new Uint8Array(await crypto.subtle.sign(algorithm, key, b));\n    let out = 0;\n    let i = -1;\n    while (++i < 32) {\n        out |= aHmac[i] ^ bHmac[i];\n    }\n    return out === 0;\n}\nasync function cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n    const { encKey, macKey, keySize } = await cbcKeySetup(enc, cek, 'decrypt');\n    const macData = concat(aad, iv, ciphertext, uint64be(aad.length << 3));\n    const expectedTag = await cbcHmacTag(macKey, macData, keySize);\n    let macCheckPassed;\n    try {\n        macCheckPassed = await timingSafeEqual(tag, expectedTag);\n    }\n    catch {\n    }\n    if (!macCheckPassed) {\n        throw new JWEDecryptionFailed();\n    }\n    let plaintext;\n    try {\n        plaintext = new Uint8Array(await crypto.subtle.decrypt({ iv: iv, name: 'AES-CBC' }, encKey, ciphertext));\n    }\n    catch {\n    }\n    if (!plaintext) {\n        throw new JWEDecryptionFailed();\n    }\n    return plaintext;\n}\nasync function gcmEncrypt(enc, plaintext, cek, iv, aad) {\n    let encKey;\n    if (cek instanceof Uint8Array) {\n        encKey = await crypto.subtle.importKey('raw', cek, 'AES-GCM', false, ['encrypt']);\n    }\n    else {\n        checkEncCryptoKey(cek, enc, 'encrypt');\n        encKey = cek;\n    }\n    const encrypted = new Uint8Array(await crypto.subtle.encrypt({\n        additionalData: aad,\n        iv: iv,\n        name: 'AES-GCM',\n        tagLength: 128,\n    }, encKey, plaintext));\n    const tag = encrypted.slice(-16);\n    const ciphertext = encrypted.slice(0, -16);\n    return { ciphertext, tag, iv };\n}\nasync function gcmDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n    let encKey;\n    if (cek instanceof Uint8Array) {\n        encKey = await crypto.subtle.importKey('raw', cek, 'AES-GCM', false, ['decrypt']);\n    }\n    else {\n        checkEncCryptoKey(cek, enc, 'decrypt');\n        encKey = cek;\n    }\n    try {\n        return new Uint8Array(await crypto.subtle.decrypt({\n            additionalData: aad,\n            iv: iv,\n            name: 'AES-GCM',\n            tagLength: 128,\n        }, encKey, concat(ciphertext, tag)));\n    }\n    catch {\n        throw new JWEDecryptionFailed();\n    }\n}\nconst unsupportedEnc = 'Unsupported JWE Content Encryption Algorithm';\nexport async function encrypt(enc, plaintext, cek, iv, aad) {\n    if (!isCryptoKey(cek) && !(cek instanceof Uint8Array)) {\n        throw new TypeError(invalidKeyInput(cek, 'CryptoKey', 'KeyObject', 'Uint8Array', 'JSON Web Key'));\n    }\n    if (iv) {\n        checkIvLength(enc, iv);\n    }\n    else {\n        iv = generateIv(enc);\n    }\n    switch (enc) {\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            if (cek instanceof Uint8Array) {\n                checkCekLength(cek, parseInt(enc.slice(-3), 10));\n            }\n            return cbcEncrypt(enc, plaintext, cek, iv, aad);\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            if (cek instanceof Uint8Array) {\n                checkCekLength(cek, parseInt(enc.slice(1, 4), 10));\n            }\n            return gcmEncrypt(enc, plaintext, cek, iv, aad);\n        default:\n            throw new JOSENotSupported(unsupportedEnc);\n    }\n}\nexport async function decrypt(enc, cek, ciphertext, iv, tag, aad) {\n    if (!isCryptoKey(cek) && !(cek instanceof Uint8Array)) {\n        throw new TypeError(invalidKeyInput(cek, 'CryptoKey', 'KeyObject', 'Uint8Array', 'JSON Web Key'));\n    }\n    if (!iv) {\n        throw new JWEInvalid('JWE Initialization Vector missing');\n    }\n    if (!tag) {\n        throw new JWEInvalid('JWE Authentication Tag missing');\n    }\n    checkIvLength(enc, iv);\n    switch (enc) {\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            if (cek instanceof Uint8Array)\n                checkCekLength(cek, parseInt(enc.slice(-3), 10));\n            return cbcDecrypt(enc, cek, ciphertext, iv, tag, aad);\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            if (cek instanceof Uint8Array)\n                checkCekLength(cek, parseInt(enc.slice(1, 4), 10));\n            return gcmDecrypt(enc, cek, ciphertext, iv, tag, aad);\n        default:\n            throw new JOSENotSupported(unsupportedEnc);\n    }\n}\n","import { decode } from '../util/base64url.js';\nexport const unprotected = Symbol();\nexport function assertNotSet(value, name) {\n    if (value) {\n        throw new TypeError(`${name} can only be called once`);\n    }\n}\nexport function decodeBase64url(value, label, ErrorClass) {\n    try {\n        return decode(value);\n    }\n    catch {\n        throw new ErrorClass(`Failed to base64url decode the ${label}`);\n    }\n}\nexport async function digest(algorithm, data) {\n    const subtleDigest = `SHA-${algorithm.slice(-3)}`;\n    return new Uint8Array(await crypto.subtle.digest(subtleDigest, data));\n}\n","const isObjectLike = (value) => typeof value === 'object' && value !== null;\nexport function isObject(input) {\n    if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n        return false;\n    }\n    if (Object.getPrototypeOf(input) === null) {\n        return true;\n    }\n    let proto = input;\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(input) === proto;\n}\nexport function isDisjoint(...headers) {\n    const sources = headers.filter(Boolean);\n    if (sources.length === 0 || sources.length === 1) {\n        return true;\n    }\n    let acc;\n    for (const header of sources) {\n        const parameters = Object.keys(header);\n        if (!acc || acc.size === 0) {\n            acc = new Set(parameters);\n            continue;\n        }\n        for (const parameter of parameters) {\n            if (acc.has(parameter)) {\n                return false;\n            }\n            acc.add(parameter);\n        }\n    }\n    return true;\n}\nexport const isJWK = (key) => isObject(key) && typeof key.kty === 'string';\nexport const isPrivateJWK = (key) => key.kty !== 'oct' &&\n    ((key.kty === 'AKP' && typeof key.priv === 'string') || typeof key.d === 'string');\nexport const isPublicJWK = (key) => key.kty !== 'oct' && key.d === undefined && key.priv === undefined;\nexport const isSecretJWK = (key) => key.kty === 'oct' && typeof key.k === 'string';\n","import { checkEncCryptoKey } from './crypto_key.js';\nfunction checkKeySize(key, alg) {\n    if (key.algorithm.length !== parseInt(alg.slice(1, 4), 10)) {\n        throw new TypeError(`Invalid key size for alg: ${alg}`);\n    }\n}\nfunction getCryptoKey(key, alg, usage) {\n    if (key instanceof Uint8Array) {\n        return crypto.subtle.importKey('raw', key, 'AES-KW', true, [usage]);\n    }\n    checkEncCryptoKey(key, alg, usage);\n    return key;\n}\nexport async function wrap(alg, key, cek) {\n    const cryptoKey = await getCryptoKey(key, alg, 'wrapKey');\n    checkKeySize(cryptoKey, alg);\n    const cryptoKeyCek = await crypto.subtle.importKey('raw', cek, { hash: 'SHA-256', name: 'HMAC' }, true, ['sign']);\n    return new Uint8Array(await crypto.subtle.wrapKey('raw', cryptoKeyCek, cryptoKey, 'AES-KW'));\n}\nexport async function unwrap(alg, key, encryptedKey) {\n    const cryptoKey = await getCryptoKey(key, alg, 'unwrapKey');\n    checkKeySize(cryptoKey, alg);\n    const cryptoKeyCek = await crypto.subtle.unwrapKey('raw', encryptedKey, cryptoKey, 'AES-KW', { hash: 'SHA-256', name: 'HMAC' }, true, ['sign']);\n    return new Uint8Array(await crypto.subtle.exportKey('raw', cryptoKeyCek));\n}\n","import { encode, concat, uint32be } from './buffer_utils.js';\nimport { checkEncCryptoKey } from './crypto_key.js';\nimport { digest } from './helpers.js';\nfunction lengthAndInput(input) {\n    return concat(uint32be(input.length), input);\n}\nasync function concatKdf(Z, L, OtherInfo) {\n    const dkLen = L >> 3;\n    const hashLen = 32;\n    const reps = Math.ceil(dkLen / hashLen);\n    const dk = new Uint8Array(reps * hashLen);\n    for (let i = 1; i <= reps; i++) {\n        const hashInput = new Uint8Array(4 + Z.length + OtherInfo.length);\n        hashInput.set(uint32be(i), 0);\n        hashInput.set(Z, 4);\n        hashInput.set(OtherInfo, 4 + Z.length);\n        const hashResult = await digest('sha256', hashInput);\n        dk.set(hashResult, (i - 1) * hashLen);\n    }\n    return dk.slice(0, dkLen);\n}\nexport async function deriveKey(publicKey, privateKey, algorithm, keyLength, apu = new Uint8Array(), apv = new Uint8Array()) {\n    checkEncCryptoKey(publicKey, 'ECDH');\n    checkEncCryptoKey(privateKey, 'ECDH', 'deriveBits');\n    const algorithmID = lengthAndInput(encode(algorithm));\n    const partyUInfo = lengthAndInput(apu);\n    const partyVInfo = lengthAndInput(apv);\n    const suppPubInfo = uint32be(keyLength);\n    const suppPrivInfo = new Uint8Array();\n    const otherInfo = concat(algorithmID, partyUInfo, partyVInfo, suppPubInfo, suppPrivInfo);\n    const Z = new Uint8Array(await crypto.subtle.deriveBits({\n        name: publicKey.algorithm.name,\n        public: publicKey,\n    }, privateKey, getEcdhBitLength(publicKey)));\n    return concatKdf(Z, keyLength, otherInfo);\n}\nfunction getEcdhBitLength(publicKey) {\n    if (publicKey.algorithm.name === 'X25519') {\n        return 256;\n    }\n    return (Math.ceil(parseInt(publicKey.algorithm.namedCurve.slice(-3), 10) / 8) << 3);\n}\nexport function allowed(key) {\n    switch (key.algorithm.namedCurve) {\n        case 'P-256':\n        case 'P-384':\n        case 'P-521':\n            return true;\n        default:\n            return key.algorithm.name === 'X25519';\n    }\n}\n","import { encode as b64u } from '../util/base64url.js';\nimport * as aeskw from './aeskw.js';\nimport { checkEncCryptoKey } from './crypto_key.js';\nimport { concat, encode } from './buffer_utils.js';\nimport { JWEInvalid } from '../util/errors.js';\nfunction getCryptoKey(key, alg) {\n    if (key instanceof Uint8Array) {\n        return crypto.subtle.importKey('raw', key, 'PBKDF2', false, [\n            'deriveBits',\n        ]);\n    }\n    checkEncCryptoKey(key, alg, 'deriveBits');\n    return key;\n}\nconst concatSalt = (alg, p2sInput) => concat(encode(alg), Uint8Array.of(0x00), p2sInput);\nasync function deriveKey(p2s, alg, p2c, key) {\n    if (!(p2s instanceof Uint8Array) || p2s.length < 8) {\n        throw new JWEInvalid('PBES2 Salt Input must be 8 or more octets');\n    }\n    if (!Number.isSafeInteger(p2c) || Math.sign(p2c) !== 1) {\n        throw new JWEInvalid('PBES2 Count Input must be a positive integer');\n    }\n    const salt = concatSalt(alg, p2s);\n    const keylen = parseInt(alg.slice(13, 16), 10);\n    const subtleAlg = {\n        hash: `SHA-${alg.slice(8, 11)}`,\n        iterations: p2c,\n        name: 'PBKDF2',\n        salt,\n    };\n    const cryptoKey = await getCryptoKey(key, alg);\n    return new Uint8Array(await crypto.subtle.deriveBits(subtleAlg, cryptoKey, keylen));\n}\nexport async function wrap(alg, key, cek, p2c = 2048, p2s = crypto.getRandomValues(new Uint8Array(16))) {\n    const derived = await deriveKey(p2s, alg, p2c, key);\n    const encryptedKey = await aeskw.wrap(alg.slice(-6), derived, cek);\n    return { encryptedKey, p2c, p2s: b64u(p2s) };\n}\nexport async function unwrap(alg, key, encryptedKey, p2c, p2s) {\n    const derived = await deriveKey(p2s, alg, p2c, key);\n    return aeskw.unwrap(alg.slice(-6), derived, encryptedKey);\n}\n","import { JOSENotSupported } from '../util/errors.js';\nimport { checkSigCryptoKey } from './crypto_key.js';\nimport { invalidKeyInput } from './invalid_key_input.js';\nexport function checkKeyLength(alg, key) {\n    if (alg.startsWith('RS') || alg.startsWith('PS')) {\n        const { modulusLength } = key.algorithm;\n        if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n            throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n        }\n    }\n}\nfunction subtleAlgorithm(alg, algorithm) {\n    const hash = `SHA-${alg.slice(-3)}`;\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512':\n            return { hash, name: 'HMAC' };\n        case 'PS256':\n        case 'PS384':\n        case 'PS512':\n            return { hash, name: 'RSA-PSS', saltLength: parseInt(alg.slice(-3), 10) >> 3 };\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n            return { hash, name: 'RSASSA-PKCS1-v1_5' };\n        case 'ES256':\n        case 'ES384':\n        case 'ES512':\n            return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n        case 'Ed25519':\n        case 'EdDSA':\n            return { name: 'Ed25519' };\n        case 'ML-DSA-44':\n        case 'ML-DSA-65':\n        case 'ML-DSA-87':\n            return { name: alg };\n        default:\n            throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n}\nasync function getSigKey(alg, key, usage) {\n    if (key instanceof Uint8Array) {\n        if (!alg.startsWith('HS')) {\n            throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n        }\n        return crypto.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n    }\n    checkSigCryptoKey(key, alg, usage);\n    return key;\n}\nexport async function sign(alg, key, data) {\n    const cryptoKey = await getSigKey(alg, key, 'sign');\n    checkKeyLength(alg, cryptoKey);\n    const signature = await crypto.subtle.sign(subtleAlgorithm(alg, cryptoKey.algorithm), cryptoKey, data);\n    return new Uint8Array(signature);\n}\nexport async function verify(alg, key, signature, data) {\n    const cryptoKey = await getSigKey(alg, key, 'verify');\n    checkKeyLength(alg, cryptoKey);\n    const algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);\n    try {\n        return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n    }\n    catch {\n        return false;\n    }\n}\n","import { checkEncCryptoKey } from './crypto_key.js';\nimport { checkKeyLength } from './signing.js';\nimport { JOSENotSupported } from '../util/errors.js';\nconst subtleAlgorithm = (alg) => {\n    switch (alg) {\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512':\n            return 'RSA-OAEP';\n        default:\n            throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n};\nexport async function encrypt(alg, key, cek) {\n    checkEncCryptoKey(key, alg, 'encrypt');\n    checkKeyLength(alg, key);\n    return new Uint8Array(await crypto.subtle.encrypt(subtleAlgorithm(alg), key, cek));\n}\nexport async function decrypt(alg, key, encryptedKey) {\n    checkEncCryptoKey(key, alg, 'decrypt');\n    checkKeyLength(alg, key);\n    return new Uint8Array(await crypto.subtle.decrypt(subtleAlgorithm(alg), key, encryptedKey));\n}\n","import { JOSENotSupported } from '../util/errors.js';\nconst unsupportedAlg = 'Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value';\nfunction subtleMapping(jwk) {\n    let algorithm;\n    let keyUsages;\n    switch (jwk.kty) {\n        case 'AKP': {\n            switch (jwk.alg) {\n                case 'ML-DSA-44':\n                case 'ML-DSA-65':\n                case 'ML-DSA-87':\n                    algorithm = { name: jwk.alg };\n                    keyUsages = jwk.priv ? ['sign'] : ['verify'];\n                    break;\n                default:\n                    throw new JOSENotSupported(unsupportedAlg);\n            }\n            break;\n        }\n        case 'RSA': {\n            switch (jwk.alg) {\n                case 'PS256':\n                case 'PS384':\n                case 'PS512':\n                    algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'RS256':\n                case 'RS384':\n                case 'RS512':\n                    algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'RSA-OAEP':\n                case 'RSA-OAEP-256':\n                case 'RSA-OAEP-384':\n                case 'RSA-OAEP-512':\n                    algorithm = {\n                        name: 'RSA-OAEP',\n                        hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n                    };\n                    keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n                    break;\n                default:\n                    throw new JOSENotSupported(unsupportedAlg);\n            }\n            break;\n        }\n        case 'EC': {\n            switch (jwk.alg) {\n                case 'ES256':\n                case 'ES384':\n                case 'ES512':\n                    algorithm = {\n                        name: 'ECDSA',\n                        namedCurve: { ES256: 'P-256', ES384: 'P-384', ES512: 'P-521' }[jwk.alg],\n                    };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ECDH-ES':\n                case 'ECDH-ES+A128KW':\n                case 'ECDH-ES+A192KW':\n                case 'ECDH-ES+A256KW':\n                    algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n                    keyUsages = jwk.d ? ['deriveBits'] : [];\n                    break;\n                default:\n                    throw new JOSENotSupported(unsupportedAlg);\n            }\n            break;\n        }\n        case 'OKP': {\n            switch (jwk.alg) {\n                case 'Ed25519':\n                case 'EdDSA':\n                    algorithm = { name: 'Ed25519' };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ECDH-ES':\n                case 'ECDH-ES+A128KW':\n                case 'ECDH-ES+A192KW':\n                case 'ECDH-ES+A256KW':\n                    algorithm = { name: jwk.crv };\n                    keyUsages = jwk.d ? ['deriveBits'] : [];\n                    break;\n                default:\n                    throw new JOSENotSupported(unsupportedAlg);\n            }\n            break;\n        }\n        default:\n            throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n    }\n    return { algorithm, keyUsages };\n}\nexport async function jwkToKey(jwk) {\n    if (!jwk.alg) {\n        throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n    }\n    const { algorithm, keyUsages } = subtleMapping(jwk);\n    const keyData = { ...jwk };\n    if (keyData.kty !== 'AKP') {\n        delete keyData.alg;\n    }\n    delete keyData.use;\n    return crypto.subtle.importKey('jwk', keyData, algorithm, jwk.ext ?? (jwk.d || jwk.priv ? false : true), jwk.key_ops ?? keyUsages);\n}\n","import { isJWK } from './type_checks.js';\nimport { decode } from '../util/base64url.js';\nimport { jwkToKey } from './jwk_to_key.js';\nimport { isCryptoKey, isKeyObject } from './is_key_like.js';\nconst unusableForAlg = 'given KeyObject instance cannot be used for this algorithm';\nlet cache;\nconst handleJWK = async (key, jwk, alg, freeze = false) => {\n    cache ||= new WeakMap();\n    let cached = cache.get(key);\n    if (cached?.[alg]) {\n        return cached[alg];\n    }\n    const cryptoKey = await jwkToKey({ ...jwk, alg });\n    if (freeze)\n        Object.freeze(key);\n    if (!cached) {\n        cache.set(key, { [alg]: cryptoKey });\n    }\n    else {\n        cached[alg] = cryptoKey;\n    }\n    return cryptoKey;\n};\nconst handleKeyObject = (keyObject, alg) => {\n    cache ||= new WeakMap();\n    let cached = cache.get(keyObject);\n    if (cached?.[alg]) {\n        return cached[alg];\n    }\n    const isPublic = keyObject.type === 'public';\n    const extractable = isPublic ? true : false;\n    let cryptoKey;\n    if (keyObject.asymmetricKeyType === 'x25519') {\n        switch (alg) {\n            case 'ECDH-ES':\n            case 'ECDH-ES+A128KW':\n            case 'ECDH-ES+A192KW':\n            case 'ECDH-ES+A256KW':\n                break;\n            default:\n                throw new TypeError(unusableForAlg);\n        }\n        cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, isPublic ? [] : ['deriveBits']);\n    }\n    if (keyObject.asymmetricKeyType === 'ed25519') {\n        if (alg !== 'EdDSA' && alg !== 'Ed25519') {\n            throw new TypeError(unusableForAlg);\n        }\n        cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [\n            isPublic ? 'verify' : 'sign',\n        ]);\n    }\n    switch (keyObject.asymmetricKeyType) {\n        case 'ml-dsa-44':\n        case 'ml-dsa-65':\n        case 'ml-dsa-87': {\n            if (alg !== keyObject.asymmetricKeyType.toUpperCase()) {\n                throw new TypeError(unusableForAlg);\n            }\n            cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [\n                isPublic ? 'verify' : 'sign',\n            ]);\n        }\n    }\n    if (keyObject.asymmetricKeyType === 'rsa') {\n        let hash;\n        switch (alg) {\n            case 'RSA-OAEP':\n                hash = 'SHA-1';\n                break;\n            case 'RS256':\n            case 'PS256':\n            case 'RSA-OAEP-256':\n                hash = 'SHA-256';\n                break;\n            case 'RS384':\n            case 'PS384':\n            case 'RSA-OAEP-384':\n                hash = 'SHA-384';\n                break;\n            case 'RS512':\n            case 'PS512':\n            case 'RSA-OAEP-512':\n                hash = 'SHA-512';\n                break;\n            default:\n                throw new TypeError(unusableForAlg);\n        }\n        if (alg.startsWith('RSA-OAEP')) {\n            return keyObject.toCryptoKey({\n                name: 'RSA-OAEP',\n                hash,\n            }, extractable, isPublic ? ['encrypt'] : ['decrypt']);\n        }\n        cryptoKey = keyObject.toCryptoKey({\n            name: alg.startsWith('PS') ? 'RSA-PSS' : 'RSASSA-PKCS1-v1_5',\n            hash,\n        }, extractable, [isPublic ? 'verify' : 'sign']);\n    }\n    if (keyObject.asymmetricKeyType === 'ec') {\n        const nist = new Map([\n            ['prime256v1', 'P-256'],\n            ['secp384r1', 'P-384'],\n            ['secp521r1', 'P-521'],\n        ]);\n        const namedCurve = nist.get(keyObject.asymmetricKeyDetails?.namedCurve);\n        if (!namedCurve) {\n            throw new TypeError(unusableForAlg);\n        }\n        const expectedCurve = { ES256: 'P-256', ES384: 'P-384', ES512: 'P-521' };\n        if (expectedCurve[alg] && namedCurve === expectedCurve[alg]) {\n            cryptoKey = keyObject.toCryptoKey({\n                name: 'ECDSA',\n                namedCurve,\n            }, extractable, [isPublic ? 'verify' : 'sign']);\n        }\n        if (alg.startsWith('ECDH-ES')) {\n            cryptoKey = keyObject.toCryptoKey({\n                name: 'ECDH',\n                namedCurve,\n            }, extractable, isPublic ? [] : ['deriveBits']);\n        }\n    }\n    if (!cryptoKey) {\n        throw new TypeError(unusableForAlg);\n    }\n    if (!cached) {\n        cache.set(keyObject, { [alg]: cryptoKey });\n    }\n    else {\n        cached[alg] = cryptoKey;\n    }\n    return cryptoKey;\n};\nexport async function normalizeKey(key, alg) {\n    if (key instanceof Uint8Array) {\n        return key;\n    }\n    if (isCryptoKey(key)) {\n        return key;\n    }\n    if (isKeyObject(key)) {\n        if (key.type === 'secret') {\n            return key.export();\n        }\n        if ('toCryptoKey' in key && typeof key.toCryptoKey === 'function') {\n            try {\n                return handleKeyObject(key, alg);\n            }\n            catch (err) {\n                if (err instanceof TypeError) {\n                    throw err;\n                }\n            }\n        }\n        let jwk = key.export({ format: 'jwk' });\n        return handleJWK(key, jwk, alg);\n    }\n    if (isJWK(key)) {\n        if (key.k) {\n            return decode(key.k);\n        }\n        return handleJWK(key, key, alg, true);\n    }\n    throw new Error('unreachable');\n}\n","import { invalidKeyInput } from './invalid_key_input.js';\nimport { encodeBase64, decodeBase64 } from '../lib/base64.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { isCryptoKey, isKeyObject } from './is_key_like.js';\nconst formatPEM = (b64, descriptor) => {\n    const newlined = (b64.match(/.{1,64}/g) || []).join('\\n');\n    return `-----BEGIN ${descriptor}-----\\n${newlined}\\n-----END ${descriptor}-----`;\n};\nconst genericExport = async (keyType, keyFormat, key) => {\n    if (isKeyObject(key)) {\n        if (key.type !== keyType) {\n            throw new TypeError(`key is not a ${keyType} key`);\n        }\n        return key.export({ format: 'pem', type: keyFormat });\n    }\n    if (!isCryptoKey(key)) {\n        throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject'));\n    }\n    if (!key.extractable) {\n        throw new TypeError('CryptoKey is not extractable');\n    }\n    if (key.type !== keyType) {\n        throw new TypeError(`key is not a ${keyType} key`);\n    }\n    return formatPEM(encodeBase64(new Uint8Array(await crypto.subtle.exportKey(keyFormat, key))), `${keyType.toUpperCase()} KEY`);\n};\nexport const toSPKI = (key) => genericExport('public', 'spki', key);\nexport const toPKCS8 = (key) => genericExport('private', 'pkcs8', key);\nconst bytesEqual = (a, b) => {\n    if (a.byteLength !== b.length)\n        return false;\n    for (let i = 0; i < a.byteLength; i++) {\n        if (a[i] !== b[i])\n            return false;\n    }\n    return true;\n};\nconst createASN1State = (data) => ({ data, pos: 0 });\nconst parseLength = (state) => {\n    const first = state.data[state.pos++];\n    if (first & 0x80) {\n        const lengthOfLen = first & 0x7f;\n        let length = 0;\n        for (let i = 0; i < lengthOfLen; i++) {\n            length = (length << 8) | state.data[state.pos++];\n        }\n        return length;\n    }\n    return first;\n};\nconst skipElement = (state, count = 1) => {\n    if (count <= 0)\n        return;\n    state.pos++;\n    const length = parseLength(state);\n    state.pos += length;\n    if (count > 1) {\n        skipElement(state, count - 1);\n    }\n};\nconst expectTag = (state, expectedTag, errorMessage) => {\n    if (state.data[state.pos++] !== expectedTag) {\n        throw new Error(errorMessage);\n    }\n};\nconst getSubarray = (state, length) => {\n    const result = state.data.subarray(state.pos, state.pos + length);\n    state.pos += length;\n    return result;\n};\nconst parseAlgorithmOID = (state) => {\n    expectTag(state, 0x06, 'Expected algorithm OID');\n    const oidLen = parseLength(state);\n    return getSubarray(state, oidLen);\n};\nfunction parsePKCS8Header(state) {\n    expectTag(state, 0x30, 'Invalid PKCS#8 structure');\n    parseLength(state);\n    expectTag(state, 0x02, 'Expected version field');\n    const verLen = parseLength(state);\n    state.pos += verLen;\n    expectTag(state, 0x30, 'Expected algorithm identifier');\n    const algIdLen = parseLength(state);\n    const algIdStart = state.pos;\n    return { algIdStart, algIdLength: algIdLen };\n}\nfunction parseSPKIHeader(state) {\n    expectTag(state, 0x30, 'Invalid SPKI structure');\n    parseLength(state);\n    expectTag(state, 0x30, 'Expected algorithm identifier');\n    const algIdLen = parseLength(state);\n    const algIdStart = state.pos;\n    return { algIdStart, algIdLength: algIdLen };\n}\nconst parseECAlgorithmIdentifier = (state) => {\n    const algOid = parseAlgorithmOID(state);\n    if (bytesEqual(algOid, [0x2b, 0x65, 0x6e])) {\n        return 'X25519';\n    }\n    if (!bytesEqual(algOid, [0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01])) {\n        throw new Error('Unsupported key algorithm');\n    }\n    expectTag(state, 0x06, 'Expected curve OID');\n    const curveOidLen = parseLength(state);\n    const curveOid = getSubarray(state, curveOidLen);\n    for (const { name, oid } of [\n        { name: 'P-256', oid: [0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07] },\n        { name: 'P-384', oid: [0x2b, 0x81, 0x04, 0x00, 0x22] },\n        { name: 'P-521', oid: [0x2b, 0x81, 0x04, 0x00, 0x23] },\n    ]) {\n        if (bytesEqual(curveOid, oid)) {\n            return name;\n        }\n    }\n    throw new Error('Unsupported named curve');\n};\nconst genericImport = async (keyFormat, keyData, alg, options) => {\n    let algorithm;\n    let keyUsages;\n    const isPublic = keyFormat === 'spki';\n    const getSigUsages = () => (isPublic ? ['verify'] : ['sign']);\n    const getEncUsages = () => isPublic ? ['encrypt', 'wrapKey'] : ['decrypt', 'unwrapKey'];\n    switch (alg) {\n        case 'PS256':\n        case 'PS384':\n        case 'PS512':\n            algorithm = { name: 'RSA-PSS', hash: `SHA-${alg.slice(-3)}` };\n            keyUsages = getSigUsages();\n            break;\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n            algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${alg.slice(-3)}` };\n            keyUsages = getSigUsages();\n            break;\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512':\n            algorithm = {\n                name: 'RSA-OAEP',\n                hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,\n            };\n            keyUsages = getEncUsages();\n            break;\n        case 'ES256':\n        case 'ES384':\n        case 'ES512': {\n            const curveMap = { ES256: 'P-256', ES384: 'P-384', ES512: 'P-521' };\n            algorithm = { name: 'ECDSA', namedCurve: curveMap[alg] };\n            keyUsages = getSigUsages();\n            break;\n        }\n        case 'ECDH-ES':\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            try {\n                const namedCurve = options.getNamedCurve(keyData);\n                algorithm = namedCurve === 'X25519' ? { name: 'X25519' } : { name: 'ECDH', namedCurve };\n            }\n            catch (cause) {\n                throw new JOSENotSupported('Invalid or unsupported key format');\n            }\n            keyUsages = isPublic ? [] : ['deriveBits'];\n            break;\n        }\n        case 'Ed25519':\n        case 'EdDSA':\n            algorithm = { name: 'Ed25519' };\n            keyUsages = getSigUsages();\n            break;\n        case 'ML-DSA-44':\n        case 'ML-DSA-65':\n        case 'ML-DSA-87':\n            algorithm = { name: alg };\n            keyUsages = getSigUsages();\n            break;\n        default:\n            throw new JOSENotSupported('Invalid or unsupported \"alg\" (Algorithm) value');\n    }\n    return crypto.subtle.importKey(keyFormat, keyData, algorithm, options?.extractable ?? (isPublic ? true : false), keyUsages);\n};\nconst processPEMData = (pem, pattern) => {\n    return decodeBase64(pem.replace(pattern, ''));\n};\nexport const fromPKCS8 = (pem, alg, options) => {\n    const keyData = processPEMData(pem, /(?:-----(?:BEGIN|END) PRIVATE KEY-----|\\s)/g);\n    let opts = options;\n    if (alg?.startsWith?.('ECDH-ES')) {\n        opts ||= {};\n        opts.getNamedCurve = (keyData) => {\n            const state = createASN1State(keyData);\n            parsePKCS8Header(state);\n            return parseECAlgorithmIdentifier(state);\n        };\n    }\n    return genericImport('pkcs8', keyData, alg, opts);\n};\nexport const fromSPKI = (pem, alg, options) => {\n    const keyData = processPEMData(pem, /(?:-----(?:BEGIN|END) PUBLIC KEY-----|\\s)/g);\n    let opts = options;\n    if (alg?.startsWith?.('ECDH-ES')) {\n        opts ||= {};\n        opts.getNamedCurve = (keyData) => {\n            const state = createASN1State(keyData);\n            parseSPKIHeader(state);\n            return parseECAlgorithmIdentifier(state);\n        };\n    }\n    return genericImport('spki', keyData, alg, opts);\n};\nfunction spkiFromX509(buf) {\n    const state = createASN1State(buf);\n    expectTag(state, 0x30, 'Invalid certificate structure');\n    parseLength(state);\n    expectTag(state, 0x30, 'Invalid tbsCertificate structure');\n    parseLength(state);\n    if (buf[state.pos] === 0xa0) {\n        skipElement(state, 6);\n    }\n    else {\n        skipElement(state, 5);\n    }\n    const spkiStart = state.pos;\n    expectTag(state, 0x30, 'Invalid SPKI structure');\n    const spkiContentLen = parseLength(state);\n    return buf.subarray(spkiStart, spkiStart + spkiContentLen + (state.pos - spkiStart));\n}\nfunction extractX509SPKI(x509) {\n    const derBytes = processPEMData(x509, /(?:-----(?:BEGIN|END) CERTIFICATE-----|\\s)/g);\n    return spkiFromX509(derBytes);\n}\nexport const fromX509 = (pem, alg, options) => {\n    let spki;\n    try {\n        spki = extractX509SPKI(pem);\n    }\n    catch (cause) {\n        throw new TypeError('Failed to parse the X.509 certificate', { cause });\n    }\n    return fromSPKI(formatPEM(encodeBase64(spki), 'PUBLIC KEY'), alg, options);\n};\n","import { decode as decodeBase64URL } from '../util/base64url.js';\nimport { fromSPKI, fromPKCS8, fromX509 } from '../lib/asn1.js';\nimport { jwkToKey } from '../lib/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { isObject } from '../lib/type_checks.js';\nexport async function importSPKI(spki, alg, options) {\n    if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n        throw new TypeError('\"spki\" must be SPKI formatted string');\n    }\n    return fromSPKI(spki, alg, options);\n}\nexport async function importX509(x509, alg, options) {\n    if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n        throw new TypeError('\"x509\" must be X.509 formatted string');\n    }\n    return fromX509(x509, alg, options);\n}\nexport async function importPKCS8(pkcs8, alg, options) {\n    if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n        throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n    }\n    return fromPKCS8(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg, options) {\n    if (!isObject(jwk)) {\n        throw new TypeError('JWK must be an object');\n    }\n    let ext;\n    alg ??= jwk.alg;\n    ext ??= options?.extractable ?? jwk.ext;\n    switch (jwk.kty) {\n        case 'oct':\n            if (typeof jwk.k !== 'string' || !jwk.k) {\n                throw new TypeError('missing \"k\" (Key Value) Parameter value');\n            }\n            return decodeBase64URL(jwk.k);\n        case 'RSA':\n            if ('oth' in jwk && jwk.oth !== undefined) {\n                throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n            }\n            return jwkToKey({ ...jwk, alg, ext });\n        case 'AKP': {\n            if (typeof jwk.alg !== 'string' || !jwk.alg) {\n                throw new TypeError('missing \"alg\" (Algorithm) Parameter value');\n            }\n            if (alg !== undefined && alg !== jwk.alg) {\n                throw new TypeError('JWK alg and alg option value mismatch');\n            }\n            return jwkToKey({ ...jwk, ext });\n        }\n        case 'EC':\n        case 'OKP':\n            return jwkToKey({ ...jwk, alg, ext });\n        default:\n            throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n    }\n}\n","import { invalidKeyInput } from './invalid_key_input.js';\nimport { encode as b64u } from '../util/base64url.js';\nimport { isCryptoKey, isKeyObject } from './is_key_like.js';\nexport async function keyToJWK(key) {\n    if (isKeyObject(key)) {\n        if (key.type === 'secret') {\n            key = key.export();\n        }\n        else {\n            return key.export({ format: 'jwk' });\n        }\n    }\n    if (key instanceof Uint8Array) {\n        return {\n            kty: 'oct',\n            k: b64u(key),\n        };\n    }\n    if (!isCryptoKey(key)) {\n        throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'Uint8Array'));\n    }\n    if (!key.extractable) {\n        throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');\n    }\n    const { ext, key_ops, alg, use, ...jwk } = await crypto.subtle.exportKey('jwk', key);\n    if (jwk.kty === 'AKP') {\n        ;\n        jwk.alg = alg;\n    }\n    return jwk;\n}\n","import { toSPKI as exportPublic, toPKCS8 as exportPrivate } from '../lib/asn1.js';\nimport { keyToJWK } from '../lib/key_to_jwk.js';\nexport async function exportSPKI(key) {\n    return exportPublic(key);\n}\nexport async function exportPKCS8(key) {\n    return exportPrivate(key);\n}\nexport async function exportJWK(key) {\n    return keyToJWK(key);\n}\n","import { encrypt, decrypt } from './content_encryption.js';\nimport { encode as b64u } from '../util/base64url.js';\nexport async function wrap(alg, key, cek, iv) {\n    const jweAlgorithm = alg.slice(0, 7);\n    const wrapped = await encrypt(jweAlgorithm, cek, key, iv, new Uint8Array());\n    return {\n        encryptedKey: wrapped.ciphertext,\n        iv: b64u(wrapped.iv),\n        tag: b64u(wrapped.tag),\n    };\n}\nexport async function unwrap(alg, key, encryptedKey, iv, tag) {\n    const jweAlgorithm = alg.slice(0, 7);\n    return decrypt(jweAlgorithm, key, encryptedKey, iv, tag, new Uint8Array());\n}\n","import * as aeskw from './aeskw.js';\nimport * as ecdhes from './ecdhes.js';\nimport * as pbes2kw from './pbes2kw.js';\nimport * as rsaes from './rsaes.js';\nimport { encode as b64u } from '../util/base64url.js';\nimport { normalizeKey } from './normalize_key.js';\nimport { JOSENotSupported, JWEInvalid } from '../util/errors.js';\nimport { decodeBase64url } from './helpers.js';\nimport { generateCek, cekLength } from './content_encryption.js';\nimport { importJWK } from '../key/import.js';\nimport { exportJWK } from '../key/export.js';\nimport { isObject } from './type_checks.js';\nimport { wrap as aesGcmKwWrap, unwrap as aesGcmKwUnwrap } from './aesgcmkw.js';\nimport { assertCryptoKey } from './is_key_like.js';\nconst unsupportedAlgHeader = 'Invalid or unsupported \"alg\" (JWE Algorithm) header value';\nfunction assertEncryptedKey(encryptedKey) {\n    if (encryptedKey === undefined)\n        throw new JWEInvalid('JWE Encrypted Key missing');\n}\nexport async function decryptKeyManagement(alg, key, encryptedKey, joseHeader, options) {\n    switch (alg) {\n        case 'dir': {\n            if (encryptedKey !== undefined)\n                throw new JWEInvalid('Encountered unexpected JWE Encrypted Key');\n            return key;\n        }\n        case 'ECDH-ES':\n            if (encryptedKey !== undefined)\n                throw new JWEInvalid('Encountered unexpected JWE Encrypted Key');\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            if (!isObject(joseHeader.epk))\n                throw new JWEInvalid(`JOSE Header \"epk\" (Ephemeral Public Key) missing or invalid`);\n            assertCryptoKey(key);\n            if (!ecdhes.allowed(key))\n                throw new JOSENotSupported('ECDH with the provided key is not allowed or not supported by your javascript runtime');\n            const epk = await importJWK(joseHeader.epk, alg);\n            assertCryptoKey(epk);\n            let partyUInfo;\n            let partyVInfo;\n            if (joseHeader.apu !== undefined) {\n                if (typeof joseHeader.apu !== 'string')\n                    throw new JWEInvalid(`JOSE Header \"apu\" (Agreement PartyUInfo) invalid`);\n                partyUInfo = decodeBase64url(joseHeader.apu, 'apu', JWEInvalid);\n            }\n            if (joseHeader.apv !== undefined) {\n                if (typeof joseHeader.apv !== 'string')\n                    throw new JWEInvalid(`JOSE Header \"apv\" (Agreement PartyVInfo) invalid`);\n                partyVInfo = decodeBase64url(joseHeader.apv, 'apv', JWEInvalid);\n            }\n            const sharedSecret = await ecdhes.deriveKey(epk, key, alg === 'ECDH-ES' ? joseHeader.enc : alg, alg === 'ECDH-ES' ? cekLength(joseHeader.enc) : parseInt(alg.slice(-5, -2), 10), partyUInfo, partyVInfo);\n            if (alg === 'ECDH-ES')\n                return sharedSecret;\n            assertEncryptedKey(encryptedKey);\n            return aeskw.unwrap(alg.slice(-6), sharedSecret, encryptedKey);\n        }\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            assertEncryptedKey(encryptedKey);\n            assertCryptoKey(key);\n            return rsaes.decrypt(alg, key, encryptedKey);\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW': {\n            assertEncryptedKey(encryptedKey);\n            if (typeof joseHeader.p2c !== 'number')\n                throw new JWEInvalid(`JOSE Header \"p2c\" (PBES2 Count) missing or invalid`);\n            const p2cLimit = options?.maxPBES2Count || 10_000;\n            if (joseHeader.p2c > p2cLimit)\n                throw new JWEInvalid(`JOSE Header \"p2c\" (PBES2 Count) out is of acceptable bounds`);\n            if (typeof joseHeader.p2s !== 'string')\n                throw new JWEInvalid(`JOSE Header \"p2s\" (PBES2 Salt) missing or invalid`);\n            let p2s;\n            p2s = decodeBase64url(joseHeader.p2s, 'p2s', JWEInvalid);\n            return pbes2kw.unwrap(alg, key, encryptedKey, joseHeader.p2c, p2s);\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            assertEncryptedKey(encryptedKey);\n            return aeskw.unwrap(alg, key, encryptedKey);\n        }\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW': {\n            assertEncryptedKey(encryptedKey);\n            if (typeof joseHeader.iv !== 'string')\n                throw new JWEInvalid(`JOSE Header \"iv\" (Initialization Vector) missing or invalid`);\n            if (typeof joseHeader.tag !== 'string')\n                throw new JWEInvalid(`JOSE Header \"tag\" (Authentication Tag) missing or invalid`);\n            let iv;\n            iv = decodeBase64url(joseHeader.iv, 'iv', JWEInvalid);\n            let tag;\n            tag = decodeBase64url(joseHeader.tag, 'tag', JWEInvalid);\n            return aesGcmKwUnwrap(alg, key, encryptedKey, iv, tag);\n        }\n        default: {\n            throw new JOSENotSupported(unsupportedAlgHeader);\n        }\n    }\n}\nexport async function encryptKeyManagement(alg, enc, key, providedCek, providedParameters = {}) {\n    let encryptedKey;\n    let parameters;\n    let cek;\n    switch (alg) {\n        case 'dir': {\n            cek = key;\n            break;\n        }\n        case 'ECDH-ES':\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            assertCryptoKey(key);\n            if (!ecdhes.allowed(key)) {\n                throw new JOSENotSupported('ECDH with the provided key is not allowed or not supported by your javascript runtime');\n            }\n            const { apu, apv } = providedParameters;\n            let ephemeralKey;\n            if (providedParameters.epk) {\n                ephemeralKey = (await normalizeKey(providedParameters.epk, alg));\n            }\n            else {\n                ephemeralKey = (await crypto.subtle.generateKey(key.algorithm, true, ['deriveBits'])).privateKey;\n            }\n            const { x, y, crv, kty } = await exportJWK(ephemeralKey);\n            const sharedSecret = await ecdhes.deriveKey(key, ephemeralKey, alg === 'ECDH-ES' ? enc : alg, alg === 'ECDH-ES' ? cekLength(enc) : parseInt(alg.slice(-5, -2), 10), apu, apv);\n            parameters = { epk: { x, crv, kty } };\n            if (kty === 'EC')\n                parameters.epk.y = y;\n            if (apu)\n                parameters.apu = b64u(apu);\n            if (apv)\n                parameters.apv = b64u(apv);\n            if (alg === 'ECDH-ES') {\n                cek = sharedSecret;\n                break;\n            }\n            cek = providedCek || generateCek(enc);\n            const kwAlg = alg.slice(-6);\n            encryptedKey = await aeskw.wrap(kwAlg, sharedSecret, cek);\n            break;\n        }\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            cek = providedCek || generateCek(enc);\n            assertCryptoKey(key);\n            encryptedKey = await rsaes.encrypt(alg, key, cek);\n            break;\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW': {\n            cek = providedCek || generateCek(enc);\n            const { p2c, p2s } = providedParameters;\n            ({ encryptedKey, ...parameters } = await pbes2kw.wrap(alg, key, cek, p2c, p2s));\n            break;\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            cek = providedCek || generateCek(enc);\n            encryptedKey = await aeskw.wrap(alg, key, cek);\n            break;\n        }\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW': {\n            cek = providedCek || generateCek(enc);\n            const { iv } = providedParameters;\n            ({ encryptedKey, ...parameters } = await aesGcmKwWrap(alg, key, cek, iv));\n            break;\n        }\n        default: {\n            throw new JOSENotSupported(unsupportedAlgHeader);\n        }\n    }\n    return { cek, encryptedKey, parameters };\n}\n","import { JOSENotSupported, JWEInvalid, JWSInvalid } from '../util/errors.js';\nexport function validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n    if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n        throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n    }\n    if (!protectedHeader || protectedHeader.crit === undefined) {\n        return new Set();\n    }\n    if (!Array.isArray(protectedHeader.crit) ||\n        protectedHeader.crit.length === 0 ||\n        protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n        throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n    }\n    let recognized;\n    if (recognizedOption !== undefined) {\n        recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n    }\n    else {\n        recognized = recognizedDefault;\n    }\n    for (const parameter of protectedHeader.crit) {\n        if (!recognized.has(parameter)) {\n            throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n        }\n        if (joseHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n        }\n        if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n        }\n    }\n    return new Set(protectedHeader.crit);\n}\n","export function validateAlgorithms(option, algorithms) {\n    if (algorithms !== undefined &&\n        (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n        throw new TypeError(`\"${option}\" option must be an array of strings`);\n    }\n    if (!algorithms) {\n        return undefined;\n    }\n    return new Set(algorithms);\n}\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport { isKeyLike } from './is_key_like.js';\nimport * as jwk from './type_checks.js';\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n    if (key.use !== undefined) {\n        let expected;\n        switch (usage) {\n            case 'sign':\n            case 'verify':\n                expected = 'sig';\n                break;\n            case 'encrypt':\n            case 'decrypt':\n                expected = 'enc';\n                break;\n        }\n        if (key.use !== expected) {\n            throw new TypeError(`Invalid key for this operation, its \"use\" must be \"${expected}\" when present`);\n        }\n    }\n    if (key.alg !== undefined && key.alg !== alg) {\n        throw new TypeError(`Invalid key for this operation, its \"alg\" must be \"${alg}\" when present`);\n    }\n    if (Array.isArray(key.key_ops)) {\n        let expectedKeyOp;\n        switch (true) {\n            case usage === 'sign' || usage === 'verify':\n            case alg === 'dir':\n            case alg.includes('CBC-HS'):\n                expectedKeyOp = usage;\n                break;\n            case alg.startsWith('PBES2'):\n                expectedKeyOp = 'deriveBits';\n                break;\n            case /^A\\d{3}(?:GCM)?(?:KW)?$/.test(alg):\n                if (!alg.includes('GCM') && alg.endsWith('KW')) {\n                    expectedKeyOp = usage === 'encrypt' ? 'wrapKey' : 'unwrapKey';\n                }\n                else {\n                    expectedKeyOp = usage;\n                }\n                break;\n            case usage === 'encrypt' && alg.startsWith('RSA'):\n                expectedKeyOp = 'wrapKey';\n                break;\n            case usage === 'decrypt':\n                expectedKeyOp = alg.startsWith('RSA') ? 'unwrapKey' : 'deriveBits';\n                break;\n        }\n        if (expectedKeyOp && key.key_ops?.includes?.(expectedKeyOp) === false) {\n            throw new TypeError(`Invalid key for this operation, its \"key_ops\" must include \"${expectedKeyOp}\" when present`);\n        }\n    }\n    return true;\n};\nconst symmetricTypeCheck = (alg, key, usage) => {\n    if (key instanceof Uint8Array)\n        return;\n    if (jwk.isJWK(key)) {\n        if (jwk.isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n            return;\n        throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n    }\n    if (!isKeyLike(key)) {\n        throw new TypeError(invalidKeyInput(alg, key, 'CryptoKey', 'KeyObject', 'JSON Web Key', 'Uint8Array'));\n    }\n    if (key.type !== 'secret') {\n        throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n    }\n};\nconst asymmetricTypeCheck = (alg, key, usage) => {\n    if (jwk.isJWK(key)) {\n        switch (usage) {\n            case 'decrypt':\n            case 'sign':\n                if (jwk.isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n                    return;\n                throw new TypeError(`JSON Web Key for this operation must be a private JWK`);\n            case 'encrypt':\n            case 'verify':\n                if (jwk.isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n                    return;\n                throw new TypeError(`JSON Web Key for this operation must be a public JWK`);\n        }\n    }\n    if (!isKeyLike(key)) {\n        throw new TypeError(invalidKeyInput(alg, key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n    }\n    if (key.type === 'secret') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n    }\n    if (key.type === 'public') {\n        switch (usage) {\n            case 'sign':\n                throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n            case 'decrypt':\n                throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n        }\n    }\n    if (key.type === 'private') {\n        switch (usage) {\n            case 'verify':\n                throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n            case 'encrypt':\n                throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n        }\n    }\n};\nexport function checkKeyType(alg, key, usage) {\n    switch (alg.substring(0, 2)) {\n        case 'A1':\n        case 'A2':\n        case 'di':\n        case 'HS':\n        case 'PB':\n            symmetricTypeCheck(alg, key, usage);\n            break;\n        default:\n            asymmetricTypeCheck(alg, key, usage);\n    }\n}\n","import { JOSENotSupported, JWEInvalid } from '../util/errors.js';\nimport { concat } from './buffer_utils.js';\nfunction supported(name) {\n    if (typeof globalThis[name] === 'undefined') {\n        throw new JOSENotSupported(`JWE \"zip\" (Compression Algorithm) Header Parameter requires the ${name} API.`);\n    }\n}\nexport async function compress(input) {\n    supported('CompressionStream');\n    const cs = new CompressionStream('deflate-raw');\n    const writer = cs.writable.getWriter();\n    writer.write(input).catch(() => { });\n    writer.close().catch(() => { });\n    const chunks = [];\n    const reader = cs.readable.getReader();\n    for (;;) {\n        const { value, done } = await reader.read();\n        if (done)\n            break;\n        chunks.push(value);\n    }\n    return concat(...chunks);\n}\nexport async function decompress(input, maxLength) {\n    supported('DecompressionStream');\n    const ds = new DecompressionStream('deflate-raw');\n    const writer = ds.writable.getWriter();\n    writer.write(input).catch(() => { });\n    writer.close().catch(() => { });\n    const chunks = [];\n    let length = 0;\n    const reader = ds.readable.getReader();\n    for (;;) {\n        const { value, done } = await reader.read();\n        if (done)\n            break;\n        chunks.push(value);\n        length += value.byteLength;\n        if (maxLength !== Infinity && length > maxLength) {\n            throw new JWEInvalid('Decompressed plaintext exceeded the configured limit');\n        }\n    }\n    return concat(...chunks);\n}\n","import { decode as b64u } from '../../util/base64url.js';\nimport { decrypt } from '../../lib/content_encryption.js';\nimport { decodeBase64url } from '../../lib/helpers.js';\nimport { JOSEAlgNotAllowed, JOSENotSupported, JWEInvalid } from '../../util/errors.js';\nimport { isDisjoint } from '../../lib/type_checks.js';\nimport { isObject } from '../../lib/type_checks.js';\nimport { decryptKeyManagement } from '../../lib/key_management.js';\nimport { decoder, concat, encode } from '../../lib/buffer_utils.js';\nimport { generateCek } from '../../lib/content_encryption.js';\nimport { validateCrit } from '../../lib/validate_crit.js';\nimport { validateAlgorithms } from '../../lib/validate_algorithms.js';\nimport { normalizeKey } from '../../lib/normalize_key.js';\nimport { checkKeyType } from '../../lib/check_key_type.js';\nimport { decompress } from '../../lib/deflate.js';\nexport async function flattenedDecrypt(jwe, key, options) {\n    if (!isObject(jwe)) {\n        throw new JWEInvalid('Flattened JWE must be an object');\n    }\n    if (jwe.protected === undefined && jwe.header === undefined && jwe.unprotected === undefined) {\n        throw new JWEInvalid('JOSE Header missing');\n    }\n    if (jwe.iv !== undefined && typeof jwe.iv !== 'string') {\n        throw new JWEInvalid('JWE Initialization Vector incorrect type');\n    }\n    if (typeof jwe.ciphertext !== 'string') {\n        throw new JWEInvalid('JWE Ciphertext missing or incorrect type');\n    }\n    if (jwe.tag !== undefined && typeof jwe.tag !== 'string') {\n        throw new JWEInvalid('JWE Authentication Tag incorrect type');\n    }\n    if (jwe.protected !== undefined && typeof jwe.protected !== 'string') {\n        throw new JWEInvalid('JWE Protected Header incorrect type');\n    }\n    if (jwe.encrypted_key !== undefined && typeof jwe.encrypted_key !== 'string') {\n        throw new JWEInvalid('JWE Encrypted Key incorrect type');\n    }\n    if (jwe.aad !== undefined && typeof jwe.aad !== 'string') {\n        throw new JWEInvalid('JWE AAD incorrect type');\n    }\n    if (jwe.header !== undefined && !isObject(jwe.header)) {\n        throw new JWEInvalid('JWE Shared Unprotected Header incorrect type');\n    }\n    if (jwe.unprotected !== undefined && !isObject(jwe.unprotected)) {\n        throw new JWEInvalid('JWE Per-Recipient Unprotected Header incorrect type');\n    }\n    let parsedProt;\n    if (jwe.protected) {\n        try {\n            const protectedHeader = b64u(jwe.protected);\n            parsedProt = JSON.parse(decoder.decode(protectedHeader));\n        }\n        catch {\n            throw new JWEInvalid('JWE Protected Header is invalid');\n        }\n    }\n    if (!isDisjoint(parsedProt, jwe.header, jwe.unprotected)) {\n        throw new JWEInvalid('JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint');\n    }\n    const joseHeader = {\n        ...parsedProt,\n        ...jwe.header,\n        ...jwe.unprotected,\n    };\n    validateCrit(JWEInvalid, new Map(), options?.crit, parsedProt, joseHeader);\n    if (joseHeader.zip !== undefined && joseHeader.zip !== 'DEF') {\n        throw new JOSENotSupported('Unsupported JWE \"zip\" (Compression Algorithm) Header Parameter value.');\n    }\n    if (joseHeader.zip !== undefined && !parsedProt?.zip) {\n        throw new JWEInvalid('JWE \"zip\" (Compression Algorithm) Header Parameter MUST be in a protected header.');\n    }\n    const { alg, enc } = joseHeader;\n    if (typeof alg !== 'string' || !alg) {\n        throw new JWEInvalid('missing JWE Algorithm (alg) in JWE Header');\n    }\n    if (typeof enc !== 'string' || !enc) {\n        throw new JWEInvalid('missing JWE Encryption Algorithm (enc) in JWE Header');\n    }\n    const keyManagementAlgorithms = options && validateAlgorithms('keyManagementAlgorithms', options.keyManagementAlgorithms);\n    const contentEncryptionAlgorithms = options &&\n        validateAlgorithms('contentEncryptionAlgorithms', options.contentEncryptionAlgorithms);\n    if ((keyManagementAlgorithms && !keyManagementAlgorithms.has(alg)) ||\n        (!keyManagementAlgorithms && alg.startsWith('PBES2'))) {\n        throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n    }\n    if (contentEncryptionAlgorithms && !contentEncryptionAlgorithms.has(enc)) {\n        throw new JOSEAlgNotAllowed('\"enc\" (Encryption Algorithm) Header Parameter value not allowed');\n    }\n    let encryptedKey;\n    if (jwe.encrypted_key !== undefined) {\n        encryptedKey = decodeBase64url(jwe.encrypted_key, 'encrypted_key', JWEInvalid);\n    }\n    let resolvedKey = false;\n    if (typeof key === 'function') {\n        key = await key(parsedProt, jwe);\n        resolvedKey = true;\n    }\n    checkKeyType(alg === 'dir' ? enc : alg, key, 'decrypt');\n    const k = await normalizeKey(key, alg);\n    let cek;\n    try {\n        cek = await decryptKeyManagement(alg, k, encryptedKey, joseHeader, options);\n    }\n    catch (err) {\n        if (err instanceof TypeError || err instanceof JWEInvalid || err instanceof JOSENotSupported) {\n            throw err;\n        }\n        cek = generateCek(enc);\n    }\n    let iv;\n    let tag;\n    if (jwe.iv !== undefined) {\n        iv = decodeBase64url(jwe.iv, 'iv', JWEInvalid);\n    }\n    if (jwe.tag !== undefined) {\n        tag = decodeBase64url(jwe.tag, 'tag', JWEInvalid);\n    }\n    const protectedHeader = jwe.protected !== undefined ? encode(jwe.protected) : new Uint8Array();\n    let additionalData;\n    if (jwe.aad !== undefined) {\n        additionalData = concat(protectedHeader, encode('.'), encode(jwe.aad));\n    }\n    else {\n        additionalData = protectedHeader;\n    }\n    const ciphertext = decodeBase64url(jwe.ciphertext, 'ciphertext', JWEInvalid);\n    const plaintext = await decrypt(enc, cek, ciphertext, iv, tag, additionalData);\n    const result = { plaintext };\n    if (joseHeader.zip === 'DEF') {\n        const maxDecompressedLength = options?.maxDecompressedLength ?? 250_000;\n        if (maxDecompressedLength === 0) {\n            throw new JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported.');\n        }\n        if (maxDecompressedLength !== Infinity &&\n            (!Number.isSafeInteger(maxDecompressedLength) || maxDecompressedLength < 1)) {\n            throw new TypeError('maxDecompressedLength must be 0, a positive safe integer, or Infinity');\n        }\n        result.plaintext = await decompress(plaintext, maxDecompressedLength).catch((cause) => {\n            if (cause instanceof JWEInvalid)\n                throw cause;\n            throw new JWEInvalid('Failed to decompress plaintext', { cause });\n        });\n    }\n    if (jwe.protected !== undefined) {\n        result.protectedHeader = parsedProt;\n    }\n    if (jwe.aad !== undefined) {\n        result.additionalAuthenticatedData = decodeBase64url(jwe.aad, 'aad', JWEInvalid);\n    }\n    if (jwe.unprotected !== undefined) {\n        result.sharedUnprotectedHeader = jwe.unprotected;\n    }\n    if (jwe.header !== undefined) {\n        result.unprotectedHeader = jwe.header;\n    }\n    if (resolvedKey) {\n        return { ...result, key: k };\n    }\n    return result;\n}\n","import { flattenedDecrypt } from '../flattened/decrypt.js';\nimport { JWEInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactDecrypt(jwe, key, options) {\n    if (jwe instanceof Uint8Array) {\n        jwe = decoder.decode(jwe);\n    }\n    if (typeof jwe !== 'string') {\n        throw new JWEInvalid('Compact JWE must be a string or Uint8Array');\n    }\n    const { 0: protectedHeader, 1: encryptedKey, 2: iv, 3: ciphertext, 4: tag, length, } = jwe.split('.');\n    if (length !== 5) {\n        throw new JWEInvalid('Invalid Compact JWE');\n    }\n    const decrypted = await flattenedDecrypt({\n        ciphertext,\n        iv: iv || undefined,\n        protected: protectedHeader,\n        tag: tag || undefined,\n        encrypted_key: encryptedKey || undefined,\n    }, key, options);\n    const result = { plaintext: decrypted.plaintext, protectedHeader: decrypted.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: decrypted.key };\n    }\n    return result;\n}\n","import { flattenedDecrypt } from '../flattened/decrypt.js';\nimport { JWEDecryptionFailed, JWEInvalid } from '../../util/errors.js';\nimport { isObject } from '../../lib/type_checks.js';\nexport async function generalDecrypt(jwe, key, options) {\n    if (!isObject(jwe)) {\n        throw new JWEInvalid('General JWE must be an object');\n    }\n    if (!Array.isArray(jwe.recipients) || !jwe.recipients.every(isObject)) {\n        throw new JWEInvalid('JWE Recipients missing or incorrect type');\n    }\n    if (!jwe.recipients.length) {\n        throw new JWEInvalid('JWE Recipients has no members');\n    }\n    for (const recipient of jwe.recipients) {\n        try {\n            return await flattenedDecrypt({\n                aad: jwe.aad,\n                ciphertext: jwe.ciphertext,\n                encrypted_key: recipient.encrypted_key,\n                header: recipient.header,\n                iv: jwe.iv,\n                protected: jwe.protected,\n                tag: jwe.tag,\n                unprotected: jwe.unprotected,\n            }, key, options);\n        }\n        catch {\n        }\n    }\n    throw new JWEDecryptionFailed();\n}\n","import { encode as b64u } from '../../util/base64url.js';\nimport { unprotected, assertNotSet } from '../../lib/helpers.js';\nimport { encrypt } from '../../lib/content_encryption.js';\nimport { encryptKeyManagement } from '../../lib/key_management.js';\nimport { JOSENotSupported, JWEInvalid } from '../../util/errors.js';\nimport { isDisjoint } from '../../lib/type_checks.js';\nimport { concat, encode } from '../../lib/buffer_utils.js';\nimport { validateCrit } from '../../lib/validate_crit.js';\nimport { normalizeKey } from '../../lib/normalize_key.js';\nimport { checkKeyType } from '../../lib/check_key_type.js';\nimport { compress } from '../../lib/deflate.js';\nexport class FlattenedEncrypt {\n    #plaintext;\n    #protectedHeader;\n    #sharedUnprotectedHeader;\n    #unprotectedHeader;\n    #aad;\n    #cek;\n    #iv;\n    #keyManagementParameters;\n    constructor(plaintext) {\n        if (!(plaintext instanceof Uint8Array)) {\n            throw new TypeError('plaintext must be an instance of Uint8Array');\n        }\n        this.#plaintext = plaintext;\n    }\n    setKeyManagementParameters(parameters) {\n        assertNotSet(this.#keyManagementParameters, 'setKeyManagementParameters');\n        this.#keyManagementParameters = parameters;\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        assertNotSet(this.#protectedHeader, 'setProtectedHeader');\n        this.#protectedHeader = protectedHeader;\n        return this;\n    }\n    setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n        assertNotSet(this.#sharedUnprotectedHeader, 'setSharedUnprotectedHeader');\n        this.#sharedUnprotectedHeader = sharedUnprotectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        assertNotSet(this.#unprotectedHeader, 'setUnprotectedHeader');\n        this.#unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    setAdditionalAuthenticatedData(aad) {\n        this.#aad = aad;\n        return this;\n    }\n    setContentEncryptionKey(cek) {\n        assertNotSet(this.#cek, 'setContentEncryptionKey');\n        this.#cek = cek;\n        return this;\n    }\n    setInitializationVector(iv) {\n        assertNotSet(this.#iv, 'setInitializationVector');\n        this.#iv = iv;\n        return this;\n    }\n    async encrypt(key, options) {\n        if (!this.#protectedHeader && !this.#unprotectedHeader && !this.#sharedUnprotectedHeader) {\n            throw new JWEInvalid('either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()');\n        }\n        if (!isDisjoint(this.#protectedHeader, this.#unprotectedHeader, this.#sharedUnprotectedHeader)) {\n            throw new JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n        }\n        const joseHeader = {\n            ...this.#protectedHeader,\n            ...this.#unprotectedHeader,\n            ...this.#sharedUnprotectedHeader,\n        };\n        validateCrit(JWEInvalid, new Map(), options?.crit, this.#protectedHeader, joseHeader);\n        if (joseHeader.zip !== undefined && joseHeader.zip !== 'DEF') {\n            throw new JOSENotSupported('Unsupported JWE \"zip\" (Compression Algorithm) Header Parameter value.');\n        }\n        if (joseHeader.zip !== undefined && !this.#protectedHeader?.zip) {\n            throw new JWEInvalid('JWE \"zip\" (Compression Algorithm) Header Parameter MUST be in a protected header.');\n        }\n        const { alg, enc } = joseHeader;\n        if (typeof alg !== 'string' || !alg) {\n            throw new JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n        }\n        if (typeof enc !== 'string' || !enc) {\n            throw new JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n        }\n        let encryptedKey;\n        if (this.#cek && (alg === 'dir' || alg === 'ECDH-ES')) {\n            throw new TypeError(`setContentEncryptionKey cannot be called with JWE \"alg\" (Algorithm) Header ${alg}`);\n        }\n        checkKeyType(alg === 'dir' ? enc : alg, key, 'encrypt');\n        let cek;\n        {\n            let parameters;\n            const k = await normalizeKey(key, alg);\n            ({ cek, encryptedKey, parameters } = await encryptKeyManagement(alg, enc, k, this.#cek, this.#keyManagementParameters));\n            if (parameters) {\n                if (options && unprotected in options) {\n                    if (!this.#unprotectedHeader) {\n                        this.setUnprotectedHeader(parameters);\n                    }\n                    else {\n                        this.#unprotectedHeader = { ...this.#unprotectedHeader, ...parameters };\n                    }\n                }\n                else if (!this.#protectedHeader) {\n                    this.setProtectedHeader(parameters);\n                }\n                else {\n                    this.#protectedHeader = { ...this.#protectedHeader, ...parameters };\n                }\n            }\n        }\n        let additionalData;\n        let protectedHeaderS;\n        let protectedHeaderB;\n        let aadMember;\n        if (this.#protectedHeader) {\n            protectedHeaderS = b64u(JSON.stringify(this.#protectedHeader));\n            protectedHeaderB = encode(protectedHeaderS);\n        }\n        else {\n            protectedHeaderS = '';\n            protectedHeaderB = new Uint8Array();\n        }\n        if (this.#aad) {\n            aadMember = b64u(this.#aad);\n            const aadMemberBytes = encode(aadMember);\n            additionalData = concat(protectedHeaderB, encode('.'), aadMemberBytes);\n        }\n        else {\n            additionalData = protectedHeaderB;\n        }\n        let plaintext = this.#plaintext;\n        if (joseHeader.zip === 'DEF') {\n            plaintext = await compress(plaintext).catch((cause) => {\n                throw new JWEInvalid('Failed to compress plaintext', { cause });\n            });\n        }\n        const { ciphertext, tag, iv } = await encrypt(enc, plaintext, cek, this.#iv, additionalData);\n        const jwe = {\n            ciphertext: b64u(ciphertext),\n        };\n        if (iv) {\n            jwe.iv = b64u(iv);\n        }\n        if (tag) {\n            jwe.tag = b64u(tag);\n        }\n        if (encryptedKey) {\n            jwe.encrypted_key = b64u(encryptedKey);\n        }\n        if (aadMember) {\n            jwe.aad = aadMember;\n        }\n        if (this.#protectedHeader) {\n            jwe.protected = protectedHeaderS;\n        }\n        if (this.#sharedUnprotectedHeader) {\n            jwe.unprotected = this.#sharedUnprotectedHeader;\n        }\n        if (this.#unprotectedHeader) {\n            jwe.header = this.#unprotectedHeader;\n        }\n        return jwe;\n    }\n}\n","import { FlattenedEncrypt } from '../flattened/encrypt.js';\nimport { unprotected, assertNotSet } from '../../lib/helpers.js';\nimport { JOSENotSupported, JWEInvalid } from '../../util/errors.js';\nimport { generateCek } from '../../lib/content_encryption.js';\nimport { isDisjoint } from '../../lib/type_checks.js';\nimport { encryptKeyManagement } from '../../lib/key_management.js';\nimport { encode as b64u } from '../../util/base64url.js';\nimport { validateCrit } from '../../lib/validate_crit.js';\nimport { normalizeKey } from '../../lib/normalize_key.js';\nimport { checkKeyType } from '../../lib/check_key_type.js';\nclass IndividualRecipient {\n    #parent;\n    unprotectedHeader;\n    keyManagementParameters;\n    key;\n    options;\n    constructor(enc, key, options) {\n        this.#parent = enc;\n        this.key = key;\n        this.options = options;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        assertNotSet(this.unprotectedHeader, 'setUnprotectedHeader');\n        this.unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    setKeyManagementParameters(parameters) {\n        assertNotSet(this.keyManagementParameters, 'setKeyManagementParameters');\n        this.keyManagementParameters = parameters;\n        return this;\n    }\n    addRecipient(...args) {\n        return this.#parent.addRecipient(...args);\n    }\n    encrypt(...args) {\n        return this.#parent.encrypt(...args);\n    }\n    done() {\n        return this.#parent;\n    }\n}\nexport class GeneralEncrypt {\n    #plaintext;\n    #recipients = [];\n    #protectedHeader;\n    #unprotectedHeader;\n    #aad;\n    constructor(plaintext) {\n        this.#plaintext = plaintext;\n    }\n    addRecipient(key, options) {\n        const recipient = new IndividualRecipient(this, key, { crit: options?.crit });\n        this.#recipients.push(recipient);\n        return recipient;\n    }\n    setProtectedHeader(protectedHeader) {\n        assertNotSet(this.#protectedHeader, 'setProtectedHeader');\n        this.#protectedHeader = protectedHeader;\n        return this;\n    }\n    setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n        assertNotSet(this.#unprotectedHeader, 'setSharedUnprotectedHeader');\n        this.#unprotectedHeader = sharedUnprotectedHeader;\n        return this;\n    }\n    setAdditionalAuthenticatedData(aad) {\n        this.#aad = aad;\n        return this;\n    }\n    async encrypt() {\n        if (!this.#recipients.length) {\n            throw new JWEInvalid('at least one recipient must be added');\n        }\n        if (this.#recipients.length === 1) {\n            const [recipient] = this.#recipients;\n            const flattened = await new FlattenedEncrypt(this.#plaintext)\n                .setAdditionalAuthenticatedData(this.#aad)\n                .setProtectedHeader(this.#protectedHeader)\n                .setSharedUnprotectedHeader(this.#unprotectedHeader)\n                .setUnprotectedHeader(recipient.unprotectedHeader)\n                .encrypt(recipient.key, { ...recipient.options });\n            const jwe = {\n                ciphertext: flattened.ciphertext,\n                iv: flattened.iv,\n                recipients: [{}],\n                tag: flattened.tag,\n            };\n            if (flattened.aad)\n                jwe.aad = flattened.aad;\n            if (flattened.protected)\n                jwe.protected = flattened.protected;\n            if (flattened.unprotected)\n                jwe.unprotected = flattened.unprotected;\n            if (flattened.encrypted_key)\n                jwe.recipients[0].encrypted_key = flattened.encrypted_key;\n            if (flattened.header)\n                jwe.recipients[0].header = flattened.header;\n            return jwe;\n        }\n        let enc;\n        for (let i = 0; i < this.#recipients.length; i++) {\n            const recipient = this.#recipients[i];\n            if (!isDisjoint(this.#protectedHeader, this.#unprotectedHeader, recipient.unprotectedHeader)) {\n                throw new JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n            }\n            const joseHeader = {\n                ...this.#protectedHeader,\n                ...this.#unprotectedHeader,\n                ...recipient.unprotectedHeader,\n            };\n            const { alg } = joseHeader;\n            if (typeof alg !== 'string' || !alg) {\n                throw new JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n            }\n            if (alg === 'dir' || alg === 'ECDH-ES') {\n                throw new JWEInvalid('\"dir\" and \"ECDH-ES\" alg may only be used with a single recipient');\n            }\n            if (typeof joseHeader.enc !== 'string' || !joseHeader.enc) {\n                throw new JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n            }\n            if (!enc) {\n                enc = joseHeader.enc;\n            }\n            else if (enc !== joseHeader.enc) {\n                throw new JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter must be the same for all recipients');\n            }\n            validateCrit(JWEInvalid, new Map(), recipient.options.crit, this.#protectedHeader, joseHeader);\n            if (joseHeader.zip !== undefined && joseHeader.zip !== 'DEF') {\n                throw new JOSENotSupported('Unsupported JWE \"zip\" (Compression Algorithm) Header Parameter value.');\n            }\n            if (joseHeader.zip !== undefined && !this.#protectedHeader?.zip) {\n                throw new JWEInvalid('JWE \"zip\" (Compression Algorithm) Header Parameter MUST be in a protected header.');\n            }\n        }\n        const cek = generateCek(enc);\n        const jwe = {\n            ciphertext: '',\n            recipients: [],\n        };\n        for (let i = 0; i < this.#recipients.length; i++) {\n            const recipient = this.#recipients[i];\n            const target = {};\n            jwe.recipients.push(target);\n            if (i === 0) {\n                const flattened = await new FlattenedEncrypt(this.#plaintext)\n                    .setAdditionalAuthenticatedData(this.#aad)\n                    .setContentEncryptionKey(cek)\n                    .setProtectedHeader(this.#protectedHeader)\n                    .setSharedUnprotectedHeader(this.#unprotectedHeader)\n                    .setUnprotectedHeader(recipient.unprotectedHeader)\n                    .setKeyManagementParameters(recipient.keyManagementParameters)\n                    .encrypt(recipient.key, {\n                    ...recipient.options,\n                    [unprotected]: true,\n                });\n                jwe.ciphertext = flattened.ciphertext;\n                jwe.iv = flattened.iv;\n                jwe.tag = flattened.tag;\n                if (flattened.aad)\n                    jwe.aad = flattened.aad;\n                if (flattened.protected)\n                    jwe.protected = flattened.protected;\n                if (flattened.unprotected)\n                    jwe.unprotected = flattened.unprotected;\n                target.encrypted_key = flattened.encrypted_key;\n                if (flattened.header)\n                    target.header = flattened.header;\n                continue;\n            }\n            const alg = recipient.unprotectedHeader?.alg ||\n                this.#protectedHeader?.alg ||\n                this.#unprotectedHeader?.alg;\n            checkKeyType(alg === 'dir' ? enc : alg, recipient.key, 'encrypt');\n            const k = await normalizeKey(recipient.key, alg);\n            const { encryptedKey, parameters } = await encryptKeyManagement(alg, enc, k, cek, recipient.keyManagementParameters);\n            target.encrypted_key = b64u(encryptedKey);\n            if (recipient.unprotectedHeader || parameters)\n                target.header = { ...recipient.unprotectedHeader, ...parameters };\n        }\n        return jwe;\n    }\n}\n","import { decode as b64u } from '../../util/base64url.js';\nimport { verify } from '../../lib/signing.js';\nimport { JOSEAlgNotAllowed, JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';\nimport { concat, encoder, decoder, encode } from '../../lib/buffer_utils.js';\nimport { decodeBase64url } from '../../lib/helpers.js';\nimport { isDisjoint } from '../../lib/type_checks.js';\nimport { isObject } from '../../lib/type_checks.js';\nimport { checkKeyType } from '../../lib/check_key_type.js';\nimport { validateCrit } from '../../lib/validate_crit.js';\nimport { validateAlgorithms } from '../../lib/validate_algorithms.js';\nimport { normalizeKey } from '../../lib/normalize_key.js';\nexport async function flattenedVerify(jws, key, options) {\n    if (!isObject(jws)) {\n        throw new JWSInvalid('Flattened JWS must be an object');\n    }\n    if (jws.protected === undefined && jws.header === undefined) {\n        throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n    }\n    if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n        throw new JWSInvalid('JWS Protected Header incorrect type');\n    }\n    if (jws.payload === undefined) {\n        throw new JWSInvalid('JWS Payload missing');\n    }\n    if (typeof jws.signature !== 'string') {\n        throw new JWSInvalid('JWS Signature missing or incorrect type');\n    }\n    if (jws.header !== undefined && !isObject(jws.header)) {\n        throw new JWSInvalid('JWS Unprotected Header incorrect type');\n    }\n    let parsedProt = {};\n    if (jws.protected) {\n        try {\n            const protectedHeader = b64u(jws.protected);\n            parsedProt = JSON.parse(decoder.decode(protectedHeader));\n        }\n        catch {\n            throw new JWSInvalid('JWS Protected Header is invalid');\n        }\n    }\n    if (!isDisjoint(parsedProt, jws.header)) {\n        throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n    }\n    const joseHeader = {\n        ...parsedProt,\n        ...jws.header,\n    };\n    const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n    let b64 = true;\n    if (extensions.has('b64')) {\n        b64 = parsedProt.b64;\n        if (typeof b64 !== 'boolean') {\n            throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n        }\n    }\n    const { alg } = joseHeader;\n    if (typeof alg !== 'string' || !alg) {\n        throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n    }\n    const algorithms = options && validateAlgorithms('algorithms', options.algorithms);\n    if (algorithms && !algorithms.has(alg)) {\n        throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n    }\n    if (b64) {\n        if (typeof jws.payload !== 'string') {\n            throw new JWSInvalid('JWS Payload must be a string');\n        }\n    }\n    else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n        throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n    }\n    let resolvedKey = false;\n    if (typeof key === 'function') {\n        key = await key(parsedProt, jws);\n        resolvedKey = true;\n    }\n    checkKeyType(alg, key, 'verify');\n    const data = concat(jws.protected !== undefined ? encode(jws.protected) : new Uint8Array(), encode('.'), typeof jws.payload === 'string'\n        ? b64\n            ? encode(jws.payload)\n            : encoder.encode(jws.payload)\n        : jws.payload);\n    const signature = decodeBase64url(jws.signature, 'signature', JWSInvalid);\n    const k = await normalizeKey(key, alg);\n    const verified = await verify(alg, k, signature, data);\n    if (!verified) {\n        throw new JWSSignatureVerificationFailed();\n    }\n    let payload;\n    if (b64) {\n        payload = decodeBase64url(jws.payload, 'payload', JWSInvalid);\n    }\n    else if (typeof jws.payload === 'string') {\n        payload = encoder.encode(jws.payload);\n    }\n    else {\n        payload = jws.payload;\n    }\n    const result = { payload };\n    if (jws.protected !== undefined) {\n        result.protectedHeader = parsedProt;\n    }\n    if (jws.header !== undefined) {\n        result.unprotectedHeader = jws.header;\n    }\n    if (resolvedKey) {\n        return { ...result, key: k };\n    }\n    return result;\n}\n","import { flattenedVerify } from '../flattened/verify.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactVerify(jws, key, options) {\n    if (jws instanceof Uint8Array) {\n        jws = decoder.decode(jws);\n    }\n    if (typeof jws !== 'string') {\n        throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n    }\n    const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n    if (length !== 3) {\n        throw new JWSInvalid('Invalid Compact JWS');\n    }\n    const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n    const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\n","import { flattenedVerify } from '../flattened/verify.js';\nimport { JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';\nimport { isObject } from '../../lib/type_checks.js';\nexport async function generalVerify(jws, key, options) {\n    if (!isObject(jws)) {\n        throw new JWSInvalid('General JWS must be an object');\n    }\n    if (!Array.isArray(jws.signatures) || !jws.signatures.every(isObject)) {\n        throw new JWSInvalid('JWS Signatures missing or incorrect type');\n    }\n    for (const signature of jws.signatures) {\n        try {\n            return await flattenedVerify({\n                header: signature.header,\n                payload: jws.payload,\n                protected: signature.protected,\n                signature: signature.signature,\n            }, key, options);\n        }\n        catch {\n        }\n    }\n    throw new JWSSignatureVerificationFailed();\n}\n","import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';\nimport { encoder, decoder } from './buffer_utils.js';\nimport { isObject } from './type_checks.js';\nconst epoch = (date) => Math.floor(date.getTime() / 1000);\nconst minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nexport function secs(str) {\n    const matched = REGEX.exec(str);\n    if (!matched || (matched[4] && matched[1])) {\n        throw new TypeError('Invalid time period format');\n    }\n    const value = parseFloat(matched[2]);\n    const unit = matched[3].toLowerCase();\n    let numericDate;\n    switch (unit) {\n        case 'sec':\n        case 'secs':\n        case 'second':\n        case 'seconds':\n        case 's':\n            numericDate = Math.round(value);\n            break;\n        case 'minute':\n        case 'minutes':\n        case 'min':\n        case 'mins':\n        case 'm':\n            numericDate = Math.round(value * minute);\n            break;\n        case 'hour':\n        case 'hours':\n        case 'hr':\n        case 'hrs':\n        case 'h':\n            numericDate = Math.round(value * hour);\n            break;\n        case 'day':\n        case 'days':\n        case 'd':\n            numericDate = Math.round(value * day);\n            break;\n        case 'week':\n        case 'weeks':\n        case 'w':\n            numericDate = Math.round(value * week);\n            break;\n        default:\n            numericDate = Math.round(value * year);\n            break;\n    }\n    if (matched[1] === '-' || matched[4] === 'ago') {\n        return -numericDate;\n    }\n    return numericDate;\n}\nfunction validateInput(label, input) {\n    if (!Number.isFinite(input)) {\n        throw new TypeError(`Invalid ${label} input`);\n    }\n    return input;\n}\nconst normalizeTyp = (value) => {\n    if (value.includes('/')) {\n        return value.toLowerCase();\n    }\n    return `application/${value.toLowerCase()}`;\n};\nconst checkAudiencePresence = (audPayload, audOption) => {\n    if (typeof audPayload === 'string') {\n        return audOption.includes(audPayload);\n    }\n    if (Array.isArray(audPayload)) {\n        return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n    }\n    return false;\n};\nexport function validateClaimsSet(protectedHeader, encodedPayload, options = {}) {\n    let payload;\n    try {\n        payload = JSON.parse(decoder.decode(encodedPayload));\n    }\n    catch {\n    }\n    if (!isObject(payload)) {\n        throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n    }\n    const { typ } = options;\n    if (typ &&\n        (typeof protectedHeader.typ !== 'string' ||\n            normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n        throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n    }\n    const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n    const presenceCheck = [...requiredClaims];\n    if (maxTokenAge !== undefined)\n        presenceCheck.push('iat');\n    if (audience !== undefined)\n        presenceCheck.push('aud');\n    if (subject !== undefined)\n        presenceCheck.push('sub');\n    if (issuer !== undefined)\n        presenceCheck.push('iss');\n    for (const claim of new Set(presenceCheck.reverse())) {\n        if (!(claim in payload)) {\n            throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n        }\n    }\n    if (issuer &&\n        !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n        throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n    }\n    if (subject && payload.sub !== subject) {\n        throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n    }\n    if (audience &&\n        !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n        throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n    }\n    let tolerance;\n    switch (typeof options.clockTolerance) {\n        case 'string':\n            tolerance = secs(options.clockTolerance);\n            break;\n        case 'number':\n            tolerance = options.clockTolerance;\n            break;\n        case 'undefined':\n            tolerance = 0;\n            break;\n        default:\n            throw new TypeError('Invalid clockTolerance option type');\n    }\n    const { currentDate } = options;\n    const now = epoch(currentDate || new Date());\n    if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n        throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n    }\n    if (payload.nbf !== undefined) {\n        if (typeof payload.nbf !== 'number') {\n            throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n        }\n        if (payload.nbf > now + tolerance) {\n            throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n        }\n    }\n    if (payload.exp !== undefined) {\n        if (typeof payload.exp !== 'number') {\n            throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n        }\n        if (payload.exp <= now - tolerance) {\n            throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n        }\n    }\n    if (maxTokenAge) {\n        const age = now - payload.iat;\n        const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n        if (age - tolerance > max) {\n            throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n        }\n        if (age < 0 - tolerance) {\n            throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n        }\n    }\n    return payload;\n}\nexport class JWTClaimsBuilder {\n    #payload;\n    constructor(payload) {\n        if (!isObject(payload)) {\n            throw new TypeError('JWT Claims Set MUST be an object');\n        }\n        this.#payload = structuredClone(payload);\n    }\n    data() {\n        return encoder.encode(JSON.stringify(this.#payload));\n    }\n    get iss() {\n        return this.#payload.iss;\n    }\n    set iss(value) {\n        this.#payload.iss = value;\n    }\n    get sub() {\n        return this.#payload.sub;\n    }\n    set sub(value) {\n        this.#payload.sub = value;\n    }\n    get aud() {\n        return this.#payload.aud;\n    }\n    set aud(value) {\n        this.#payload.aud = value;\n    }\n    set jti(value) {\n        this.#payload.jti = value;\n    }\n    set nbf(value) {\n        if (typeof value === 'number') {\n            this.#payload.nbf = validateInput('setNotBefore', value);\n        }\n        else if (value instanceof Date) {\n            this.#payload.nbf = validateInput('setNotBefore', epoch(value));\n        }\n        else {\n            this.#payload.nbf = epoch(new Date()) + secs(value);\n        }\n    }\n    set exp(value) {\n        if (typeof value === 'number') {\n            this.#payload.exp = validateInput('setExpirationTime', value);\n        }\n        else if (value instanceof Date) {\n            this.#payload.exp = validateInput('setExpirationTime', epoch(value));\n        }\n        else {\n            this.#payload.exp = epoch(new Date()) + secs(value);\n        }\n    }\n    set iat(value) {\n        if (value === undefined) {\n            this.#payload.iat = epoch(new Date());\n        }\n        else if (value instanceof Date) {\n            this.#payload.iat = validateInput('setIssuedAt', epoch(value));\n        }\n        else if (typeof value === 'string') {\n            this.#payload.iat = validateInput('setIssuedAt', epoch(new Date()) + secs(value));\n        }\n        else {\n            this.#payload.iat = validateInput('setIssuedAt', value);\n        }\n    }\n}\n","import { compactVerify } from '../jws/compact/verify.js';\nimport { validateClaimsSet } from '../lib/jwt_claims_set.js';\nimport { JWTInvalid } from '../util/errors.js';\nexport async function jwtVerify(jwt, key, options) {\n    const verified = await compactVerify(jwt, key, options);\n    if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n        throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n    }\n    const payload = validateClaimsSet(verified.protectedHeader, verified.payload, options);\n    const result = { payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\n","import { compactDecrypt } from '../jwe/compact/decrypt.js';\nimport { validateClaimsSet } from '../lib/jwt_claims_set.js';\nimport { JWTClaimValidationFailed } from '../util/errors.js';\nexport async function jwtDecrypt(jwt, key, options) {\n    const decrypted = await compactDecrypt(jwt, key, options);\n    const payload = validateClaimsSet(decrypted.protectedHeader, decrypted.plaintext, options);\n    const { protectedHeader } = decrypted;\n    if (protectedHeader.iss !== undefined && protectedHeader.iss !== payload.iss) {\n        throw new JWTClaimValidationFailed('replicated \"iss\" claim header parameter mismatch', payload, 'iss', 'mismatch');\n    }\n    if (protectedHeader.sub !== undefined && protectedHeader.sub !== payload.sub) {\n        throw new JWTClaimValidationFailed('replicated \"sub\" claim header parameter mismatch', payload, 'sub', 'mismatch');\n    }\n    if (protectedHeader.aud !== undefined &&\n        JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud)) {\n        throw new JWTClaimValidationFailed('replicated \"aud\" claim header parameter mismatch', payload, 'aud', 'mismatch');\n    }\n    const result = { payload, protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: decrypted.key };\n    }\n    return result;\n}\n","import { FlattenedEncrypt } from '../flattened/encrypt.js';\nexport class CompactEncrypt {\n    #flattened;\n    constructor(plaintext) {\n        this.#flattened = new FlattenedEncrypt(plaintext);\n    }\n    setContentEncryptionKey(cek) {\n        this.#flattened.setContentEncryptionKey(cek);\n        return this;\n    }\n    setInitializationVector(iv) {\n        this.#flattened.setInitializationVector(iv);\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        this.#flattened.setProtectedHeader(protectedHeader);\n        return this;\n    }\n    setKeyManagementParameters(parameters) {\n        this.#flattened.setKeyManagementParameters(parameters);\n        return this;\n    }\n    async encrypt(key, options) {\n        const jwe = await this.#flattened.encrypt(key, options);\n        return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join('.');\n    }\n}\n","import { encode as b64u } from '../../util/base64url.js';\nimport { sign } from '../../lib/signing.js';\nimport { isDisjoint } from '../../lib/type_checks.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { concat, encode } from '../../lib/buffer_utils.js';\nimport { checkKeyType } from '../../lib/check_key_type.js';\nimport { validateCrit } from '../../lib/validate_crit.js';\nimport { normalizeKey } from '../../lib/normalize_key.js';\nimport { assertNotSet } from '../../lib/helpers.js';\nexport class FlattenedSign {\n    #payload;\n    #protectedHeader;\n    #unprotectedHeader;\n    constructor(payload) {\n        if (!(payload instanceof Uint8Array)) {\n            throw new TypeError('payload must be an instance of Uint8Array');\n        }\n        this.#payload = payload;\n    }\n    setProtectedHeader(protectedHeader) {\n        assertNotSet(this.#protectedHeader, 'setProtectedHeader');\n        this.#protectedHeader = protectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        assertNotSet(this.#unprotectedHeader, 'setUnprotectedHeader');\n        this.#unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    async sign(key, options) {\n        if (!this.#protectedHeader && !this.#unprotectedHeader) {\n            throw new JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n        }\n        if (!isDisjoint(this.#protectedHeader, this.#unprotectedHeader)) {\n            throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n        }\n        const joseHeader = {\n            ...this.#protectedHeader,\n            ...this.#unprotectedHeader,\n        };\n        const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, this.#protectedHeader, joseHeader);\n        let b64 = true;\n        if (extensions.has('b64')) {\n            b64 = this.#protectedHeader.b64;\n            if (typeof b64 !== 'boolean') {\n                throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n            }\n        }\n        const { alg } = joseHeader;\n        if (typeof alg !== 'string' || !alg) {\n            throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n        }\n        checkKeyType(alg, key, 'sign');\n        let payloadS;\n        let payloadB;\n        if (b64) {\n            payloadS = b64u(this.#payload);\n            payloadB = encode(payloadS);\n        }\n        else {\n            payloadB = this.#payload;\n            payloadS = '';\n        }\n        let protectedHeaderString;\n        let protectedHeaderBytes;\n        if (this.#protectedHeader) {\n            protectedHeaderString = b64u(JSON.stringify(this.#protectedHeader));\n            protectedHeaderBytes = encode(protectedHeaderString);\n        }\n        else {\n            protectedHeaderString = '';\n            protectedHeaderBytes = new Uint8Array();\n        }\n        const data = concat(protectedHeaderBytes, encode('.'), payloadB);\n        const k = await normalizeKey(key, alg);\n        const signature = await sign(alg, k, data);\n        const jws = {\n            signature: b64u(signature),\n            payload: payloadS,\n        };\n        if (this.#unprotectedHeader) {\n            jws.header = this.#unprotectedHeader;\n        }\n        if (this.#protectedHeader) {\n            jws.protected = protectedHeaderString;\n        }\n        return jws;\n    }\n}\n","import { FlattenedSign } from '../flattened/sign.js';\nexport class CompactSign {\n    #flattened;\n    constructor(payload) {\n        this.#flattened = new FlattenedSign(payload);\n    }\n    setProtectedHeader(protectedHeader) {\n        this.#flattened.setProtectedHeader(protectedHeader);\n        return this;\n    }\n    async sign(key, options) {\n        const jws = await this.#flattened.sign(key, options);\n        if (jws.payload === undefined) {\n            throw new TypeError('use the flattened module for creating JWS with b64: false');\n        }\n        return `${jws.protected}.${jws.payload}.${jws.signature}`;\n    }\n}\n","import { FlattenedSign } from '../flattened/sign.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { assertNotSet } from '../../lib/helpers.js';\nclass IndividualSignature {\n    #parent;\n    protectedHeader;\n    unprotectedHeader;\n    options;\n    key;\n    constructor(sig, key, options) {\n        this.#parent = sig;\n        this.key = key;\n        this.options = options;\n    }\n    setProtectedHeader(protectedHeader) {\n        assertNotSet(this.protectedHeader, 'setProtectedHeader');\n        this.protectedHeader = protectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        assertNotSet(this.unprotectedHeader, 'setUnprotectedHeader');\n        this.unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    addSignature(...args) {\n        return this.#parent.addSignature(...args);\n    }\n    sign(...args) {\n        return this.#parent.sign(...args);\n    }\n    done() {\n        return this.#parent;\n    }\n}\nexport class GeneralSign {\n    #payload;\n    #signatures = [];\n    constructor(payload) {\n        this.#payload = payload;\n    }\n    addSignature(key, options) {\n        const signature = new IndividualSignature(this, key, options);\n        this.#signatures.push(signature);\n        return signature;\n    }\n    async sign() {\n        if (!this.#signatures.length) {\n            throw new JWSInvalid('at least one signature must be added');\n        }\n        const jws = {\n            signatures: [],\n            payload: '',\n        };\n        for (let i = 0; i < this.#signatures.length; i++) {\n            const signature = this.#signatures[i];\n            const flattened = new FlattenedSign(this.#payload);\n            flattened.setProtectedHeader(signature.protectedHeader);\n            flattened.setUnprotectedHeader(signature.unprotectedHeader);\n            const { payload, ...rest } = await flattened.sign(signature.key, signature.options);\n            if (i === 0) {\n                jws.payload = payload;\n            }\n            else if (jws.payload !== payload) {\n                throw new JWSInvalid('inconsistent use of JWS Unencoded Payload (RFC7797)');\n            }\n            jws.signatures.push(rest);\n        }\n        return jws;\n    }\n}\n","import { CompactSign } from '../jws/compact/sign.js';\nimport { JWTInvalid } from '../util/errors.js';\nimport { JWTClaimsBuilder } from '../lib/jwt_claims_set.js';\nexport class SignJWT {\n    #protectedHeader;\n    #jwt;\n    constructor(payload = {}) {\n        this.#jwt = new JWTClaimsBuilder(payload);\n    }\n    setIssuer(issuer) {\n        this.#jwt.iss = issuer;\n        return this;\n    }\n    setSubject(subject) {\n        this.#jwt.sub = subject;\n        return this;\n    }\n    setAudience(audience) {\n        this.#jwt.aud = audience;\n        return this;\n    }\n    setJti(jwtId) {\n        this.#jwt.jti = jwtId;\n        return this;\n    }\n    setNotBefore(input) {\n        this.#jwt.nbf = input;\n        return this;\n    }\n    setExpirationTime(input) {\n        this.#jwt.exp = input;\n        return this;\n    }\n    setIssuedAt(input) {\n        this.#jwt.iat = input;\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        this.#protectedHeader = protectedHeader;\n        return this;\n    }\n    async sign(key, options) {\n        const sig = new CompactSign(this.#jwt.data());\n        sig.setProtectedHeader(this.#protectedHeader);\n        if (Array.isArray(this.#protectedHeader?.crit) &&\n            this.#protectedHeader.crit.includes('b64') &&\n            this.#protectedHeader.b64 === false) {\n            throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n        }\n        return sig.sign(key, options);\n    }\n}\n","import { CompactEncrypt } from '../jwe/compact/encrypt.js';\nimport { JWTClaimsBuilder } from '../lib/jwt_claims_set.js';\nimport { assertNotSet } from '../lib/helpers.js';\nexport class EncryptJWT {\n    #cek;\n    #iv;\n    #keyManagementParameters;\n    #protectedHeader;\n    #replicateIssuerAsHeader;\n    #replicateSubjectAsHeader;\n    #replicateAudienceAsHeader;\n    #jwt;\n    constructor(payload = {}) {\n        this.#jwt = new JWTClaimsBuilder(payload);\n    }\n    setIssuer(issuer) {\n        this.#jwt.iss = issuer;\n        return this;\n    }\n    setSubject(subject) {\n        this.#jwt.sub = subject;\n        return this;\n    }\n    setAudience(audience) {\n        this.#jwt.aud = audience;\n        return this;\n    }\n    setJti(jwtId) {\n        this.#jwt.jti = jwtId;\n        return this;\n    }\n    setNotBefore(input) {\n        this.#jwt.nbf = input;\n        return this;\n    }\n    setExpirationTime(input) {\n        this.#jwt.exp = input;\n        return this;\n    }\n    setIssuedAt(input) {\n        this.#jwt.iat = input;\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        assertNotSet(this.#protectedHeader, 'setProtectedHeader');\n        this.#protectedHeader = protectedHeader;\n        return this;\n    }\n    setKeyManagementParameters(parameters) {\n        assertNotSet(this.#keyManagementParameters, 'setKeyManagementParameters');\n        this.#keyManagementParameters = parameters;\n        return this;\n    }\n    setContentEncryptionKey(cek) {\n        assertNotSet(this.#cek, 'setContentEncryptionKey');\n        this.#cek = cek;\n        return this;\n    }\n    setInitializationVector(iv) {\n        assertNotSet(this.#iv, 'setInitializationVector');\n        this.#iv = iv;\n        return this;\n    }\n    replicateIssuerAsHeader() {\n        this.#replicateIssuerAsHeader = true;\n        return this;\n    }\n    replicateSubjectAsHeader() {\n        this.#replicateSubjectAsHeader = true;\n        return this;\n    }\n    replicateAudienceAsHeader() {\n        this.#replicateAudienceAsHeader = true;\n        return this;\n    }\n    async encrypt(key, options) {\n        const enc = new CompactEncrypt(this.#jwt.data());\n        if (this.#protectedHeader &&\n            (this.#replicateIssuerAsHeader ||\n                this.#replicateSubjectAsHeader ||\n                this.#replicateAudienceAsHeader)) {\n            this.#protectedHeader = {\n                ...this.#protectedHeader,\n                iss: this.#replicateIssuerAsHeader ? this.#jwt.iss : undefined,\n                sub: this.#replicateSubjectAsHeader ? this.#jwt.sub : undefined,\n                aud: this.#replicateAudienceAsHeader ? this.#jwt.aud : undefined,\n            };\n        }\n        enc.setProtectedHeader(this.#protectedHeader);\n        if (this.#iv) {\n            enc.setInitializationVector(this.#iv);\n        }\n        if (this.#cek) {\n            enc.setContentEncryptionKey(this.#cek);\n        }\n        if (this.#keyManagementParameters) {\n            enc.setKeyManagementParameters(this.#keyManagementParameters);\n        }\n        return enc.encrypt(key, options);\n    }\n}\n","import { digest } from '../lib/helpers.js';\nimport { encode as b64u } from '../util/base64url.js';\nimport { JOSENotSupported, JWKInvalid } from '../util/errors.js';\nimport { encode } from '../lib/buffer_utils.js';\nimport { isKeyLike } from '../lib/is_key_like.js';\nimport { isJWK } from '../lib/type_checks.js';\nimport { exportJWK } from '../key/export.js';\nimport { invalidKeyInput } from '../lib/invalid_key_input.js';\nconst check = (value, description) => {\n    if (typeof value !== 'string' || !value) {\n        throw new JWKInvalid(`${description} missing or invalid`);\n    }\n};\nexport async function calculateJwkThumbprint(key, digestAlgorithm) {\n    let jwk;\n    if (isJWK(key)) {\n        jwk = key;\n    }\n    else if (isKeyLike(key)) {\n        jwk = await exportJWK(key);\n    }\n    else {\n        throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n    }\n    digestAlgorithm ??= 'sha256';\n    if (digestAlgorithm !== 'sha256' &&\n        digestAlgorithm !== 'sha384' &&\n        digestAlgorithm !== 'sha512') {\n        throw new TypeError('digestAlgorithm must one of \"sha256\", \"sha384\", or \"sha512\"');\n    }\n    let components;\n    switch (jwk.kty) {\n        case 'AKP':\n            check(jwk.alg, '\"alg\" (Algorithm) Parameter');\n            check(jwk.pub, '\"pub\" (Public key) Parameter');\n            components = { alg: jwk.alg, kty: jwk.kty, pub: jwk.pub };\n            break;\n        case 'EC':\n            check(jwk.crv, '\"crv\" (Curve) Parameter');\n            check(jwk.x, '\"x\" (X Coordinate) Parameter');\n            check(jwk.y, '\"y\" (Y Coordinate) Parameter');\n            components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y };\n            break;\n        case 'OKP':\n            check(jwk.crv, '\"crv\" (Subtype of Key Pair) Parameter');\n            check(jwk.x, '\"x\" (Public Key) Parameter');\n            components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x };\n            break;\n        case 'RSA':\n            check(jwk.e, '\"e\" (Exponent) Parameter');\n            check(jwk.n, '\"n\" (Modulus) Parameter');\n            components = { e: jwk.e, kty: jwk.kty, n: jwk.n };\n            break;\n        case 'oct':\n            check(jwk.k, '\"k\" (Key Value) Parameter');\n            components = { k: jwk.k, kty: jwk.kty };\n            break;\n        default:\n            throw new JOSENotSupported('\"kty\" (Key Type) Parameter missing or unsupported');\n    }\n    const data = encode(JSON.stringify(components));\n    return b64u(await digest(digestAlgorithm, data));\n}\nexport async function calculateJwkThumbprintUri(key, digestAlgorithm) {\n    digestAlgorithm ??= 'sha256';\n    const thumbprint = await calculateJwkThumbprint(key, digestAlgorithm);\n    return `urn:ietf:params:oauth:jwk-thumbprint:sha-${digestAlgorithm.slice(-3)}:${thumbprint}`;\n}\n","import { importJWK } from '../key/import.js';\nimport { isObject } from '../lib/type_checks.js';\nimport { JWSInvalid } from '../util/errors.js';\nexport async function EmbeddedJWK(protectedHeader, token) {\n    const joseHeader = {\n        ...protectedHeader,\n        ...token?.header,\n    };\n    if (!isObject(joseHeader.jwk)) {\n        throw new JWSInvalid('\"jwk\" (JSON Web Key) Header Parameter must be a JSON object');\n    }\n    const key = await importJWK({ ...joseHeader.jwk, ext: true }, joseHeader.alg);\n    if (key instanceof Uint8Array || key.type !== 'public') {\n        throw new JWSInvalid('\"jwk\" (JSON Web Key) Header Parameter must be a public key');\n    }\n    return key;\n}\n","import { importJWK } from '../key/import.js';\nimport { JWKSInvalid, JOSENotSupported, JWKSNoMatchingKey, JWKSMultipleMatchingKeys, } from '../util/errors.js';\nimport { isObject } from '../lib/type_checks.js';\nfunction getKtyFromAlg(alg) {\n    switch (typeof alg === 'string' && alg.slice(0, 2)) {\n        case 'RS':\n        case 'PS':\n            return 'RSA';\n        case 'ES':\n            return 'EC';\n        case 'Ed':\n            return 'OKP';\n        case 'ML':\n            return 'AKP';\n        default:\n            throw new JOSENotSupported('Unsupported \"alg\" value for a JSON Web Key Set');\n    }\n}\nfunction isJWKSLike(jwks) {\n    return (jwks &&\n        typeof jwks === 'object' &&\n        Array.isArray(jwks.keys) &&\n        jwks.keys.every(isJWKLike));\n}\nfunction isJWKLike(key) {\n    return isObject(key);\n}\nclass LocalJWKSet {\n    #jwks;\n    #cached = new WeakMap();\n    constructor(jwks) {\n        if (!isJWKSLike(jwks)) {\n            throw new JWKSInvalid('JSON Web Key Set malformed');\n        }\n        this.#jwks = structuredClone(jwks);\n    }\n    jwks() {\n        return this.#jwks;\n    }\n    async getKey(protectedHeader, token) {\n        const { alg, kid } = { ...protectedHeader, ...token?.header };\n        const kty = getKtyFromAlg(alg);\n        const candidates = this.#jwks.keys.filter((jwk) => {\n            let candidate = kty === jwk.kty;\n            if (candidate && typeof kid === 'string') {\n                candidate = kid === jwk.kid;\n            }\n            if (candidate && (typeof jwk.alg === 'string' || kty === 'AKP')) {\n                candidate = alg === jwk.alg;\n            }\n            if (candidate && typeof jwk.use === 'string') {\n                candidate = jwk.use === 'sig';\n            }\n            if (candidate && Array.isArray(jwk.key_ops)) {\n                candidate = jwk.key_ops.includes('verify');\n            }\n            if (candidate) {\n                switch (alg) {\n                    case 'ES256':\n                        candidate = jwk.crv === 'P-256';\n                        break;\n                    case 'ES384':\n                        candidate = jwk.crv === 'P-384';\n                        break;\n                    case 'ES512':\n                        candidate = jwk.crv === 'P-521';\n                        break;\n                    case 'Ed25519':\n                    case 'EdDSA':\n                        candidate = jwk.crv === 'Ed25519';\n                        break;\n                }\n            }\n            return candidate;\n        });\n        const { 0: jwk, length } = candidates;\n        if (length === 0) {\n            throw new JWKSNoMatchingKey();\n        }\n        if (length !== 1) {\n            const error = new JWKSMultipleMatchingKeys();\n            const _cached = this.#cached;\n            error[Symbol.asyncIterator] = async function* () {\n                for (const jwk of candidates) {\n                    try {\n                        yield await importWithAlgCache(_cached, jwk, alg);\n                    }\n                    catch { }\n                }\n            };\n            throw error;\n        }\n        return importWithAlgCache(this.#cached, jwk, alg);\n    }\n}\nasync function importWithAlgCache(cache, jwk, alg) {\n    const cached = cache.get(jwk) || cache.set(jwk, {}).get(jwk);\n    if (cached[alg] === undefined) {\n        const key = await importJWK({ ...jwk, ext: true }, alg);\n        if (key instanceof Uint8Array || key.type !== 'public') {\n            throw new JWKSInvalid('JSON Web Key Set members must be public keys');\n        }\n        cached[alg] = key;\n    }\n    return cached[alg];\n}\nexport function createLocalJWKSet(jwks) {\n    const set = new LocalJWKSet(jwks);\n    const localJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n    Object.defineProperties(localJWKSet, {\n        jwks: {\n            value: () => structuredClone(set.jwks()),\n            enumerable: false,\n            configurable: false,\n            writable: false,\n        },\n    });\n    return localJWKSet;\n}\n","import { JOSEError, JWKSNoMatchingKey, JWKSTimeout } from '../util/errors.js';\nimport { createLocalJWKSet } from './local.js';\nimport { isObject } from '../lib/type_checks.js';\nfunction isCloudflareWorkers() {\n    return (typeof WebSocketPair !== 'undefined' ||\n        (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') ||\n        (typeof EdgeRuntime !== 'undefined' && EdgeRuntime === 'vercel'));\n}\nlet USER_AGENT;\nif (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {\n    const NAME = 'jose';\n    const VERSION = 'v6.2.3';\n    USER_AGENT = `${NAME}/${VERSION}`;\n}\nexport const customFetch = Symbol();\nasync function fetchJwks(url, headers, signal, fetchImpl = fetch) {\n    const response = await fetchImpl(url, {\n        method: 'GET',\n        signal,\n        redirect: 'manual',\n        headers,\n    }).catch((err) => {\n        if (err.name === 'TimeoutError') {\n            throw new JWKSTimeout();\n        }\n        throw err;\n    });\n    if (response.status !== 200) {\n        throw new JOSEError('Expected 200 OK from the JSON Web Key Set HTTP response');\n    }\n    try {\n        return await response.json();\n    }\n    catch {\n        throw new JOSEError('Failed to parse the JSON Web Key Set HTTP response as JSON');\n    }\n}\nexport const jwksCache = Symbol();\nfunction isFreshJwksCache(input, cacheMaxAge) {\n    if (typeof input !== 'object' || input === null) {\n        return false;\n    }\n    if (!('uat' in input) || typeof input.uat !== 'number' || Date.now() - input.uat >= cacheMaxAge) {\n        return false;\n    }\n    if (!('jwks' in input) ||\n        !isObject(input.jwks) ||\n        !Array.isArray(input.jwks.keys) ||\n        !Array.prototype.every.call(input.jwks.keys, isObject)) {\n        return false;\n    }\n    return true;\n}\nclass RemoteJWKSet {\n    #url;\n    #timeoutDuration;\n    #cooldownDuration;\n    #cacheMaxAge;\n    #jwksTimestamp;\n    #pendingFetch;\n    #headers;\n    #customFetch;\n    #local;\n    #cache;\n    constructor(url, options) {\n        if (!(url instanceof URL)) {\n            throw new TypeError('url must be an instance of URL');\n        }\n        this.#url = new URL(url.href);\n        this.#timeoutDuration =\n            typeof options?.timeoutDuration === 'number' ? options?.timeoutDuration : 5000;\n        this.#cooldownDuration =\n            typeof options?.cooldownDuration === 'number' ? options?.cooldownDuration : 30000;\n        this.#cacheMaxAge = typeof options?.cacheMaxAge === 'number' ? options?.cacheMaxAge : 600000;\n        this.#headers = new Headers(options?.headers);\n        if (USER_AGENT && !this.#headers.has('User-Agent')) {\n            this.#headers.set('User-Agent', USER_AGENT);\n        }\n        if (!this.#headers.has('accept')) {\n            this.#headers.set('accept', 'application/json');\n            this.#headers.append('accept', 'application/jwk-set+json');\n        }\n        this.#customFetch = options?.[customFetch];\n        if (options?.[jwksCache] !== undefined) {\n            this.#cache = options?.[jwksCache];\n            if (isFreshJwksCache(options?.[jwksCache], this.#cacheMaxAge)) {\n                this.#jwksTimestamp = this.#cache.uat;\n                this.#local = createLocalJWKSet(this.#cache.jwks);\n            }\n        }\n    }\n    pendingFetch() {\n        return !!this.#pendingFetch;\n    }\n    coolingDown() {\n        return typeof this.#jwksTimestamp === 'number'\n            ? Date.now() < this.#jwksTimestamp + this.#cooldownDuration\n            : false;\n    }\n    fresh() {\n        return typeof this.#jwksTimestamp === 'number'\n            ? Date.now() < this.#jwksTimestamp + this.#cacheMaxAge\n            : false;\n    }\n    jwks() {\n        return this.#local?.jwks();\n    }\n    async getKey(protectedHeader, token) {\n        if (!this.#local || !this.fresh()) {\n            await this.reload();\n        }\n        try {\n            return await this.#local(protectedHeader, token);\n        }\n        catch (err) {\n            if (err instanceof JWKSNoMatchingKey) {\n                if (this.coolingDown() === false) {\n                    await this.reload();\n                    return this.#local(protectedHeader, token);\n                }\n            }\n            throw err;\n        }\n    }\n    async reload() {\n        if (this.#pendingFetch && isCloudflareWorkers()) {\n            this.#pendingFetch = undefined;\n        }\n        this.#pendingFetch ||= fetchJwks(this.#url.href, this.#headers, AbortSignal.timeout(this.#timeoutDuration), this.#customFetch)\n            .then((json) => {\n            this.#local = createLocalJWKSet(json);\n            if (this.#cache) {\n                this.#cache.uat = Date.now();\n                this.#cache.jwks = json;\n            }\n            this.#jwksTimestamp = Date.now();\n            this.#pendingFetch = undefined;\n        })\n            .catch((err) => {\n            this.#pendingFetch = undefined;\n            throw err;\n        });\n        await this.#pendingFetch;\n    }\n}\nexport function createRemoteJWKSet(url, options) {\n    const set = new RemoteJWKSet(url, options);\n    const remoteJWKSet = async (protectedHeader, token) => set.getKey(protectedHeader, token);\n    Object.defineProperties(remoteJWKSet, {\n        coolingDown: {\n            get: () => set.coolingDown(),\n            enumerable: true,\n            configurable: false,\n        },\n        fresh: {\n            get: () => set.fresh(),\n            enumerable: true,\n            configurable: false,\n        },\n        reload: {\n            value: () => set.reload(),\n            enumerable: true,\n            configurable: false,\n            writable: false,\n        },\n        reloading: {\n            get: () => set.pendingFetch(),\n            enumerable: true,\n            configurable: false,\n        },\n        jwks: {\n            value: () => set.jwks(),\n            enumerable: true,\n            configurable: false,\n            writable: false,\n        },\n    });\n    return remoteJWKSet;\n}\n","import * as b64u from '../util/base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport { JWTInvalid } from '../util/errors.js';\nimport { validateClaimsSet, JWTClaimsBuilder } from '../lib/jwt_claims_set.js';\nexport class UnsecuredJWT {\n    #jwt;\n    constructor(payload = {}) {\n        this.#jwt = new JWTClaimsBuilder(payload);\n    }\n    encode() {\n        const header = b64u.encode(JSON.stringify({ alg: 'none' }));\n        const payload = b64u.encode(this.#jwt.data());\n        return `${header}.${payload}.`;\n    }\n    setIssuer(issuer) {\n        this.#jwt.iss = issuer;\n        return this;\n    }\n    setSubject(subject) {\n        this.#jwt.sub = subject;\n        return this;\n    }\n    setAudience(audience) {\n        this.#jwt.aud = audience;\n        return this;\n    }\n    setJti(jwtId) {\n        this.#jwt.jti = jwtId;\n        return this;\n    }\n    setNotBefore(input) {\n        this.#jwt.nbf = input;\n        return this;\n    }\n    setExpirationTime(input) {\n        this.#jwt.exp = input;\n        return this;\n    }\n    setIssuedAt(input) {\n        this.#jwt.iat = input;\n        return this;\n    }\n    static decode(jwt, options) {\n        if (typeof jwt !== 'string') {\n            throw new JWTInvalid('Unsecured JWT must be a string');\n        }\n        const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split('.');\n        if (length !== 3 || signature !== '') {\n            throw new JWTInvalid('Invalid Unsecured JWT');\n        }\n        let header;\n        try {\n            header = JSON.parse(decoder.decode(b64u.decode(encodedHeader)));\n            if (header.alg !== 'none')\n                throw new Error();\n        }\n        catch {\n            throw new JWTInvalid('Invalid Unsecured JWT');\n        }\n        const payload = validateClaimsSet(header, b64u.decode(encodedPayload), options);\n        return { payload, header };\n    }\n}\n","import { decode as b64u } from './base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport { isObject } from '../lib/type_checks.js';\nexport function decodeProtectedHeader(token) {\n    let protectedB64u;\n    if (typeof token === 'string') {\n        const parts = token.split('.');\n        if (parts.length === 3 || parts.length === 5) {\n            ;\n            [protectedB64u] = parts;\n        }\n    }\n    else if (typeof token === 'object' && token) {\n        if ('protected' in token) {\n            protectedB64u = token.protected;\n        }\n        else {\n            throw new TypeError('Token does not contain a Protected Header');\n        }\n    }\n    try {\n        if (typeof protectedB64u !== 'string' || !protectedB64u) {\n            throw new Error();\n        }\n        const result = JSON.parse(decoder.decode(b64u(protectedB64u)));\n        if (!isObject(result)) {\n            throw new Error();\n        }\n        return result;\n    }\n    catch {\n        throw new TypeError('Invalid Token or Protected Header formatting');\n    }\n}\n","import { decode as b64u } from './base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport { isObject } from '../lib/type_checks.js';\nimport { JWTInvalid } from './errors.js';\nexport function decodeJwt(jwt) {\n    if (typeof jwt !== 'string')\n        throw new JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');\n    const { 1: payload, length } = jwt.split('.');\n    if (length === 5)\n        throw new JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');\n    if (length !== 3)\n        throw new JWTInvalid('Invalid JWT');\n    if (!payload)\n        throw new JWTInvalid('JWTs must contain a payload');\n    let decoded;\n    try {\n        decoded = b64u(payload);\n    }\n    catch {\n        throw new JWTInvalid('Failed to base64url decode the payload');\n    }\n    let result;\n    try {\n        result = JSON.parse(decoder.decode(decoded));\n    }\n    catch {\n        throw new JWTInvalid('Failed to parse the decoded payload as JSON');\n    }\n    if (!isObject(result))\n        throw new JWTInvalid('Invalid JWT Claims Set');\n    return result;\n}\n","import { JOSENotSupported } from '../util/errors.js';\nfunction getModulusLengthOption(options) {\n    const modulusLength = options?.modulusLength ?? 2048;\n    if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n        throw new JOSENotSupported('Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used');\n    }\n    return modulusLength;\n}\nexport async function generateKeyPair(alg, options) {\n    let algorithm;\n    let keyUsages;\n    switch (alg) {\n        case 'PS256':\n        case 'PS384':\n        case 'PS512':\n            algorithm = {\n                name: 'RSA-PSS',\n                hash: `SHA-${alg.slice(-3)}`,\n                publicExponent: Uint8Array.of(0x01, 0x00, 0x01),\n                modulusLength: getModulusLengthOption(options),\n            };\n            keyUsages = ['sign', 'verify'];\n            break;\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n            algorithm = {\n                name: 'RSASSA-PKCS1-v1_5',\n                hash: `SHA-${alg.slice(-3)}`,\n                publicExponent: Uint8Array.of(0x01, 0x00, 0x01),\n                modulusLength: getModulusLengthOption(options),\n            };\n            keyUsages = ['sign', 'verify'];\n            break;\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512':\n            algorithm = {\n                name: 'RSA-OAEP',\n                hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,\n                publicExponent: Uint8Array.of(0x01, 0x00, 0x01),\n                modulusLength: getModulusLengthOption(options),\n            };\n            keyUsages = ['decrypt', 'unwrapKey', 'encrypt', 'wrapKey'];\n            break;\n        case 'ES256':\n            algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n            keyUsages = ['sign', 'verify'];\n            break;\n        case 'ES384':\n            algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n            keyUsages = ['sign', 'verify'];\n            break;\n        case 'ES512':\n            algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n            keyUsages = ['sign', 'verify'];\n            break;\n        case 'Ed25519':\n        case 'EdDSA': {\n            keyUsages = ['sign', 'verify'];\n            algorithm = { name: 'Ed25519' };\n            break;\n        }\n        case 'ML-DSA-44':\n        case 'ML-DSA-65':\n        case 'ML-DSA-87': {\n            keyUsages = ['sign', 'verify'];\n            algorithm = { name: alg };\n            break;\n        }\n        case 'ECDH-ES':\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            keyUsages = ['deriveBits'];\n            const crv = options?.crv ?? 'P-256';\n            switch (crv) {\n                case 'P-256':\n                case 'P-384':\n                case 'P-521': {\n                    algorithm = { name: 'ECDH', namedCurve: crv };\n                    break;\n                }\n                case 'X25519':\n                    algorithm = { name: 'X25519' };\n                    break;\n                default:\n                    throw new JOSENotSupported('Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, and X25519');\n            }\n            break;\n        }\n        default:\n            throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n    }\n    return crypto.subtle.generateKey(algorithm, options?.extractable ?? false, keyUsages);\n}\n","import { JOSENotSupported } from '../util/errors.js';\nexport async function generateSecret(alg, options) {\n    let length;\n    let algorithm;\n    let keyUsages;\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512':\n            length = parseInt(alg.slice(-3), 10);\n            algorithm = { name: 'HMAC', hash: `SHA-${length}`, length };\n            keyUsages = ['sign', 'verify'];\n            break;\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            length = parseInt(alg.slice(-3), 10);\n            return crypto.getRandomValues(new Uint8Array(length >> 3));\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW':\n            length = parseInt(alg.slice(1, 4), 10);\n            algorithm = { name: 'AES-KW', length };\n            keyUsages = ['wrapKey', 'unwrapKey'];\n            break;\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW':\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            length = parseInt(alg.slice(1, 4), 10);\n            algorithm = { name: 'AES-GCM', length };\n            keyUsages = ['encrypt', 'decrypt'];\n            break;\n        default:\n            throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n    }\n    return crypto.subtle.generateKey(algorithm, options?.extractable ?? false, keyUsages);\n}\n","export { compactDecrypt } from './jwe/compact/decrypt.js';\nexport { flattenedDecrypt } from './jwe/flattened/decrypt.js';\nexport { generalDecrypt } from './jwe/general/decrypt.js';\nexport { GeneralEncrypt } from './jwe/general/encrypt.js';\nexport { compactVerify } from './jws/compact/verify.js';\nexport { flattenedVerify } from './jws/flattened/verify.js';\nexport { generalVerify } from './jws/general/verify.js';\nexport { jwtVerify } from './jwt/verify.js';\nexport { jwtDecrypt } from './jwt/decrypt.js';\nexport { CompactEncrypt } from './jwe/compact/encrypt.js';\nexport { FlattenedEncrypt } from './jwe/flattened/encrypt.js';\nexport { CompactSign } from './jws/compact/sign.js';\nexport { FlattenedSign } from './jws/flattened/sign.js';\nexport { GeneralSign } from './jws/general/sign.js';\nexport { SignJWT } from './jwt/sign.js';\nexport { EncryptJWT } from './jwt/encrypt.js';\nexport { calculateJwkThumbprint, calculateJwkThumbprintUri } from './jwk/thumbprint.js';\nexport { EmbeddedJWK } from './jwk/embedded.js';\nexport { createLocalJWKSet } from './jwks/local.js';\nexport { createRemoteJWKSet, jwksCache, customFetch } from './jwks/remote.js';\nexport { UnsecuredJWT } from './jwt/unsecured.js';\nexport { exportPKCS8, exportSPKI, exportJWK } from './key/export.js';\nexport { importSPKI, importPKCS8, importX509, importJWK } from './key/import.js';\nexport { decodeProtectedHeader } from './util/decode_protected_header.js';\nexport { decodeJwt } from './util/decode_jwt.js';\nimport * as errors from './util/errors.js';\nexport { errors };\nexport { generateKeyPair } from './key/generate_key_pair.js';\nexport { generateSecret } from './key/generate_secret.js';\nimport * as base64url from './util/base64url.js';\nexport { base64url };\nexport const cryptoRuntime = 'WebCryptoAPI';\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],"mappings":"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"}