@suveren/gateway 0.7.4 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/content/integrations/mollie.json +103 -28
- package/dist/control-plane/index.mjs +248 -58
- package/dist/mcp-server/http.mjs +577 -124
- package/dist/ui/assets/index-BFnSVa9N.js +110 -0
- package/dist/ui/assets/{index-CkWaRck1.css → index-BYVb_0oG.css} +1 -1
- package/dist/ui/index.html +2 -2
- package/node_modules/@hap/core/dist/index.d.mts +285 -13
- package/node_modules/@hap/core/dist/index.d.ts +285 -13
- package/node_modules/@hap/core/dist/index.js +281 -13
- package/node_modules/@hap/core/dist/index.mjs +266 -12
- package/node_modules/@hap/core/package.json +4 -2
- package/node_modules/@hap/core/src/did-key.ts +126 -0
- package/node_modules/@hap/core/src/frame.ts +115 -14
- package/node_modules/@hap/core/src/gatekeeper.ts +26 -0
- package/node_modules/@hap/core/src/identity.ts +21 -5
- package/node_modules/@hap/core/src/index.ts +3 -0
- package/node_modules/@hap/core/src/mandate.ts +207 -0
- package/node_modules/@hap/core/src/receipt.ts +74 -0
- package/node_modules/@hap/core/src/types.ts +87 -5
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/accept.js +54 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/charset.js +10 -34
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/encoding.js +9 -30
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/language.js +15 -36
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/lib/mediaType.js +16 -134
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/node_modules/content-type/LICENSE +22 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/node_modules/content-type/README.md +71 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/node_modules/content-type/package.json +52 -0
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/package.json +16 -10
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/buffer.buffer.d.ts +10 -5
- package/node_modules/@types/node/crypto.d.ts +2 -4
- package/node_modules/@types/node/dgram.d.ts +119 -4
- package/node_modules/@types/node/ffi.d.ts +1 -1
- package/node_modules/@types/node/fs/promises.d.ts +61 -65
- package/node_modules/@types/node/fs.d.ts +86 -76
- package/node_modules/@types/node/http.d.ts +17 -1
- package/node_modules/@types/node/http2.d.ts +12 -4
- package/node_modules/@types/node/index.d.ts +1 -0
- package/node_modules/@types/node/inspector.d.ts +2 -1
- package/node_modules/@types/node/net.d.ts +108 -16
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/node/process.d.ts +52 -0
- package/node_modules/@types/node/quic.d.ts +246 -38
- package/node_modules/@types/node/sqlite.d.ts +6 -2
- package/node_modules/@types/node/stream/iter.d.ts +4 -4
- package/node_modules/@types/node/test.d.ts +36 -0
- package/node_modules/@types/node/tls.d.ts +24 -0
- package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +5 -0
- package/node_modules/@types/node/ts5.6/index.d.ts +1 -0
- package/node_modules/@types/node/ts5.7/index.d.ts +1 -0
- package/node_modules/@types/node/tty.d.ts +4 -3
- package/node_modules/@types/node/vfs.d.ts +210 -0
- package/node_modules/@types/node/vm.d.ts +1 -1
- package/node_modules/express-rate-limit/dist/index.cjs +6 -3
- package/node_modules/express-rate-limit/dist/index.d.cts +11 -0
- package/node_modules/express-rate-limit/dist/index.d.mts +11 -0
- package/node_modules/express-rate-limit/dist/index.d.ts +11 -0
- package/node_modules/express-rate-limit/dist/index.mjs +6 -3
- package/node_modules/express-rate-limit/{license.md → license} +7 -6
- package/node_modules/express-rate-limit/package.json +5 -5
- package/node_modules/express-rate-limit/readme.md +1 -0
- package/node_modules/fast-uri/index.js +215 -47
- package/node_modules/fast-uri/lib/schemes.js +9 -4
- package/node_modules/fast-uri/lib/utils.js +396 -92
- package/node_modules/fast-uri/package.json +1 -1
- package/node_modules/fast-uri/test/component-safe-serialization.test.js +163 -0
- package/node_modules/fast-uri/test/equal.test.js +31 -3
- package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
- package/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
- package/node_modules/fast-uri/test/ipv6-validation.test.js +124 -0
- package/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
- package/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
- package/node_modules/fast-uri/test/parse.test.js +7 -3
- package/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
- package/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
- package/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
- package/node_modules/fast-uri/test/security-normalization.test.js +101 -0
- package/node_modules/fast-uri/test/security.test.js +75 -3
- package/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
- package/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
- package/node_modules/hono/dist/cjs/client/client.js +25 -11
- package/node_modules/hono/dist/cjs/client/utils.js +4 -1
- package/node_modules/hono/dist/cjs/context.js +4 -0
- package/node_modules/hono/dist/cjs/helper/accepts/accepts.js +36 -2
- package/node_modules/hono/dist/cjs/helper/ssg/ssg.js +1 -1
- package/node_modules/hono/dist/cjs/helper/ssg/utils.js +30 -10
- package/node_modules/hono/dist/cjs/jsx/dom/render.js +2 -0
- package/node_modules/hono/dist/cjs/middleware/cache/index.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/cors/index.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/csrf/index.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/etag/digest.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/etag/index.js +3 -3
- package/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +3 -1
- package/node_modules/hono/dist/cjs/request.js +8 -4
- package/node_modules/hono/dist/cjs/router/linear-router/router.js +7 -2
- package/node_modules/hono/dist/cjs/router/pattern-router/router.js +3 -9
- package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +10 -3
- package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +47 -83
- package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +2 -1
- package/node_modules/hono/dist/cjs/router/trie-router/node.js +46 -69
- package/node_modules/hono/dist/cjs/router/trie-router/router.js +3 -11
- package/node_modules/hono/dist/cjs/router/utils.js +27 -0
- package/node_modules/hono/dist/cjs/utils/body.js +15 -3
- package/node_modules/hono/dist/cjs/utils/cookie.js +1 -1
- package/node_modules/hono/dist/cjs/utils/ipaddr.js +5 -3
- package/node_modules/hono/dist/cjs/utils/stream.js +7 -1
- package/node_modules/hono/dist/cjs/utils/url.js +9 -1
- package/node_modules/hono/dist/client/client.js +25 -11
- package/node_modules/hono/dist/client/utils.js +4 -1
- package/node_modules/hono/dist/context.js +4 -0
- package/node_modules/hono/dist/helper/accepts/accepts.js +36 -2
- package/node_modules/hono/dist/helper/ssg/ssg.js +1 -1
- package/node_modules/hono/dist/helper/ssg/utils.js +30 -10
- package/node_modules/hono/dist/jsx/dom/render.js +2 -0
- package/node_modules/hono/dist/middleware/cache/index.js +1 -1
- package/node_modules/hono/dist/middleware/cors/index.js +1 -1
- package/node_modules/hono/dist/middleware/csrf/index.js +1 -1
- package/node_modules/hono/dist/middleware/etag/digest.js +1 -1
- package/node_modules/hono/dist/middleware/etag/index.js +3 -3
- package/node_modules/hono/dist/middleware/pretty-json/index.js +3 -1
- package/node_modules/hono/dist/request.js +8 -4
- package/node_modules/hono/dist/router/linear-router/router.js +7 -2
- package/node_modules/hono/dist/router/pattern-router/router.js +3 -9
- package/node_modules/hono/dist/router/reg-exp-router/node.js +6 -2
- package/node_modules/hono/dist/router/reg-exp-router/router.js +53 -84
- package/node_modules/hono/dist/router/reg-exp-router/trie.js +2 -1
- package/node_modules/hono/dist/router/trie-router/node.js +46 -69
- package/node_modules/hono/dist/router/trie-router/router.js +3 -11
- package/node_modules/hono/dist/router/utils.js +5 -0
- package/node_modules/hono/dist/types/context.d.ts +4 -0
- package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +3 -0
- package/node_modules/hono/dist/types/router/trie-router/node.d.ts +1 -2
- package/node_modules/hono/dist/types/router/trie-router/router.d.ts +0 -1
- package/node_modules/hono/dist/types/router/utils.d.ts +1 -0
- package/node_modules/hono/dist/types/utils/url.d.ts +4 -0
- package/node_modules/hono/dist/utils/body.js +15 -3
- package/node_modules/hono/dist/utils/cookie.js +1 -1
- package/node_modules/hono/dist/utils/ipaddr.js +5 -3
- package/node_modules/hono/dist/utils/stream.js +7 -1
- package/node_modules/hono/dist/utils/url.js +9 -1
- package/node_modules/hono/package.json +1 -1
- package/node_modules/ip-address/README.md +92 -82
- package/node_modules/ip-address/dist/common.d.ts +20 -0
- package/node_modules/ip-address/dist/common.js +36 -0
- package/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/ip-address/dist/ipv4.d.ts +50 -0
- package/node_modules/ip-address/dist/ipv4.js +75 -0
- package/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/ip-address/dist/ipv6.d.ts +79 -10
- package/node_modules/ip-address/dist/ipv6.js +120 -30
- package/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/ip-address/dist/v4/constants.js +40 -1
- package/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/ip-address/dist/v6/constants.js +47 -1
- package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/ip-address/package.json +1 -1
- package/node_modules/is-plain-object/README.md +39 -95
- package/node_modules/is-plain-object/dist/is-plain-object.js +0 -2
- package/node_modules/is-plain-object/is-plain-object.d.ts +6 -1
- package/node_modules/is-plain-object/package.json +8 -34
- package/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +7 -16
- package/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +10 -20
- package/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +7 -16
- package/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +16 -38
- package/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +7 -16
- package/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +19 -38
- package/node_modules/jose/dist/types/jwk/embedded.d.ts +3 -8
- package/node_modules/jose/dist/types/jwk/thumbprint.d.ts +5 -5
- package/node_modules/jose/dist/types/jwks/local.d.ts +6 -10
- package/node_modules/jose/dist/types/jwks/remote.d.ts +17 -28
- package/node_modules/jose/dist/types/jws/compact/sign.d.ts +5 -10
- package/node_modules/jose/dist/types/jws/compact/verify.d.ts +9 -18
- package/node_modules/jose/dist/types/jws/flattened/sign.d.ts +7 -16
- package/node_modules/jose/dist/types/jws/flattened/verify.d.ts +9 -18
- package/node_modules/jose/dist/types/jws/general/sign.d.ts +11 -21
- package/node_modules/jose/dist/types/jws/general/verify.d.ts +12 -21
- package/node_modules/jose/dist/types/jwt/decrypt.d.ts +10 -20
- package/node_modules/jose/dist/types/jwt/encrypt.d.ts +17 -29
- package/node_modules/jose/dist/types/jwt/sign.d.ts +12 -19
- package/node_modules/jose/dist/types/jwt/unsecured.d.ts +17 -28
- package/node_modules/jose/dist/types/jwt/verify.d.ts +9 -19
- package/node_modules/jose/dist/types/key/export.d.ts +4 -4
- package/node_modules/jose/dist/types/key/generate_key_pair.d.ts +6 -8
- package/node_modules/jose/dist/types/key/generate_secret.d.ts +4 -11
- package/node_modules/jose/dist/types/key/import.d.ts +10 -17
- package/node_modules/jose/dist/types/types.d.ts +48 -86
- package/node_modules/jose/dist/types/util/base64url.d.ts +2 -2
- package/node_modules/jose/dist/types/util/decode_jwt.d.ts +3 -10
- package/node_modules/jose/dist/types/util/decode_protected_header.d.ts +4 -4
- package/node_modules/jose/dist/types/util/errors.d.ts +26 -53
- package/node_modules/jose/dist/webapi/index.js +70 -32
- package/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +7 -8
- package/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +42 -26
- package/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +14 -10
- package/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +53 -71
- package/node_modules/jose/dist/webapi/jwe/general/decrypt.js +38 -49
- package/node_modules/jose/dist/webapi/jwe/general/encrypt.js +121 -158
- package/node_modules/jose/dist/webapi/jwk/embedded.js +30 -18
- package/node_modules/jose/dist/webapi/jwk/thumbprint.js +54 -64
- package/node_modules/jose/dist/webapi/jwks/local.js +49 -74
- package/node_modules/jose/dist/webapi/jwks/remote.js +91 -160
- package/node_modules/jose/dist/webapi/jws/compact/sign.js +21 -20
- package/node_modules/jose/dist/webapi/jws/compact/verify.js +7 -8
- package/node_modules/jose/dist/webapi/jws/flattened/sign.js +29 -30
- package/node_modules/jose/dist/webapi/jws/flattened/verify.js +21 -23
- package/node_modules/jose/dist/webapi/jws/general/sign.js +61 -70
- package/node_modules/jose/dist/webapi/jws/general/verify.js +47 -41
- package/node_modules/jose/dist/webapi/jwt/decrypt.js +13 -22
- package/node_modules/jose/dist/webapi/jwt/encrypt.js +58 -100
- package/node_modules/jose/dist/webapi/jwt/sign.js +18 -50
- package/node_modules/jose/dist/webapi/jwt/unsecured.js +34 -63
- package/node_modules/jose/dist/webapi/jwt/verify.js +12 -14
- package/node_modules/jose/dist/webapi/key/export.js +32 -37
- package/node_modules/jose/dist/webapi/key/generate_key_pair.js +40 -44
- package/node_modules/jose/dist/webapi/key/generate_secret.js +35 -39
- package/node_modules/jose/dist/webapi/key/import.js +52 -52
- package/node_modules/jose/dist/webapi/lib/asn1.js +130 -164
- package/node_modules/jose/dist/webapi/lib/base64.js +18 -20
- package/node_modules/jose/dist/webapi/lib/buffer_utils.js +34 -38
- package/node_modules/jose/dist/webapi/lib/content_encryption.js +79 -123
- package/node_modules/jose/dist/webapi/lib/crypto_key.js +24 -25
- package/node_modules/jose/dist/webapi/lib/deflate.js +46 -40
- package/node_modules/jose/dist/webapi/lib/helpers.js +40 -37
- package/node_modules/jose/dist/webapi/lib/invalid_key_input.js +10 -24
- package/node_modules/jose/dist/webapi/lib/is_key_like.js +17 -15
- package/node_modules/jose/dist/webapi/lib/jwe_algorithms.js +106 -93
- package/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +210 -176
- package/node_modules/jose/dist/webapi/lib/jwe_encrypt.js +105 -107
- package/node_modules/jose/dist/webapi/lib/jwk_metadata.js +19 -0
- package/node_modules/jose/dist/webapi/lib/jwk_to_key.js +9 -16
- package/node_modules/jose/dist/webapi/lib/jws_algorithms.js +62 -61
- package/node_modules/jose/dist/webapi/lib/jws_sign.js +58 -72
- package/node_modules/jose/dist/webapi/lib/jws_verify.js +90 -103
- package/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +134 -185
- package/node_modules/jose/dist/webapi/lib/key.js +84 -121
- package/node_modules/jose/dist/webapi/lib/key_algorithm.js +13 -8
- package/node_modules/jose/dist/webapi/lib/key_descriptor.js +8 -6
- package/node_modules/jose/dist/webapi/lib/key_management.js +200 -225
- package/node_modules/jose/dist/webapi/lib/key_options.js +8 -0
- package/node_modules/jose/dist/webapi/lib/options.js +57 -44
- package/node_modules/jose/dist/webapi/lib/signing.js +18 -22
- package/node_modules/jose/dist/webapi/lib/type_checks.js +28 -33
- package/node_modules/jose/dist/webapi/util/base64url.js +26 -35
- package/node_modules/jose/dist/webapi/util/decode_jwt.js +32 -31
- package/node_modules/jose/dist/webapi/util/decode_protected_header.js +18 -23
- package/node_modules/jose/dist/webapi/util/errors.js +94 -84
- package/node_modules/jose/package.json +17 -81
- package/package.json +2 -2
- package/profiles/calendar/0.5.profile.json +190 -0
- package/profiles/charge/0.5.profile.json +210 -0
- package/profiles/customers/0.7.profile.json +157 -0
- package/profiles/deploy/0.9.profile.json +176 -0
- package/profiles/email/0.6.profile.json +208 -0
- package/profiles/index.json +9 -1
- package/profiles/publish/0.5.profile.json +186 -0
- package/profiles/purchase/0.5.profile.json +231 -0
- package/profiles/records/0.5.profile.json +117 -0
- package/dist/ui/assets/index-0Q2eNytX.js +0 -110
- package/node_modules/@modelcontextprotocol/sdk/node_modules/negotiator/HISTORY.md +0 -114
|
@@ -1,107 +1,120 @@
|
|
|
1
|
-
import { JOSENotSupported } from
|
|
2
|
-
import { table } from
|
|
1
|
+
import { JOSENotSupported } from "../util/errors.js";
|
|
2
|
+
import { table } from "./key_descriptor.js";
|
|
3
3
|
const wrap = [
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
];
|
|
7
|
-
const derive = [[], ['deriveBits']];
|
|
8
|
-
const none = [[], []];
|
|
4
|
+
["encrypt", "wrapKey"],
|
|
5
|
+
["decrypt", "unwrapKey"]
|
|
6
|
+
], derive = [[], ["deriveBits"]], none = [[], []];
|
|
9
7
|
function rsaes(bits) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
return {
|
|
9
|
+
kty: ["RSA"],
|
|
10
|
+
mode: "key-encryption",
|
|
11
|
+
subtle: { name: "RSA-OAEP", hash: `SHA-${bits}` },
|
|
12
|
+
usages: wrap,
|
|
13
|
+
ops: ["wrapKey", "unwrapKey"]
|
|
14
|
+
};
|
|
16
15
|
}
|
|
17
|
-
function ecdh() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
16
|
+
function ecdh(mode) {
|
|
17
|
+
return {
|
|
18
|
+
kty: ["EC", "OKP"],
|
|
19
|
+
mode,
|
|
20
|
+
subtle: { name: "ECDH" },
|
|
21
|
+
resolve: ({ kty, crv, asymmetricKeyType }) => {
|
|
22
|
+
if (crv === "X25519" || asymmetricKeyType === "x25519")
|
|
23
|
+
return { name: "X25519" };
|
|
24
|
+
if (kty === "OKP")
|
|
25
|
+
throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');
|
|
26
|
+
return { name: "ECDH", namedCurve: crv };
|
|
27
|
+
},
|
|
28
|
+
usages: derive,
|
|
29
|
+
ops: [void 0, "deriveBits"]
|
|
30
|
+
};
|
|
33
31
|
}
|
|
34
|
-
function aeskw(bits, gcm =
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
function aeskw(bits, gcm = !1) {
|
|
33
|
+
return {
|
|
34
|
+
kty: ["oct"],
|
|
35
|
+
mode: "key-wrapping",
|
|
36
|
+
secret: !0,
|
|
37
|
+
subtle: { name: gcm ? "AES-GCM" : "AES-KW", length: bits },
|
|
38
|
+
usages: none,
|
|
39
|
+
ops: gcm ? ["encrypt", "decrypt"] : ["wrapKey", "unwrapKey"]
|
|
40
|
+
};
|
|
42
41
|
}
|
|
43
42
|
function pbes2() {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
return {
|
|
44
|
+
kty: ["oct"],
|
|
45
|
+
mode: "key-wrapping",
|
|
46
|
+
secret: !0,
|
|
47
|
+
subtle: { name: "PBKDF2" },
|
|
48
|
+
usages: none,
|
|
49
|
+
ops: ["deriveBits", "deriveBits"]
|
|
50
|
+
};
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
function contentEncryption(bits, cbc =
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
52
|
+
const JWE = table({
|
|
53
|
+
dir: {
|
|
54
|
+
kty: ["oct"],
|
|
55
|
+
mode: "direct-encryption",
|
|
56
|
+
secret: !0,
|
|
57
|
+
subtle: { name: "AES-GCM" },
|
|
58
|
+
usages: none,
|
|
59
|
+
ops: ["encrypt", "decrypt"]
|
|
60
|
+
},
|
|
61
|
+
"RSA-OAEP": rsaes(1),
|
|
62
|
+
"RSA-OAEP-256": rsaes(256),
|
|
63
|
+
"RSA-OAEP-384": rsaes(384),
|
|
64
|
+
"RSA-OAEP-512": rsaes(512),
|
|
65
|
+
"ECDH-ES": ecdh("direct-key-agreement"),
|
|
66
|
+
"ECDH-ES+A128KW": ecdh("key-agreement-with-key-wrapping"),
|
|
67
|
+
"ECDH-ES+A192KW": ecdh("key-agreement-with-key-wrapping"),
|
|
68
|
+
"ECDH-ES+A256KW": ecdh("key-agreement-with-key-wrapping"),
|
|
69
|
+
A128KW: aeskw(128),
|
|
70
|
+
A192KW: aeskw(192),
|
|
71
|
+
A256KW: aeskw(256),
|
|
72
|
+
A128GCMKW: aeskw(128, !0),
|
|
73
|
+
A192GCMKW: aeskw(192, !0),
|
|
74
|
+
A256GCMKW: aeskw(256, !0),
|
|
75
|
+
"PBES2-HS256+A128KW": pbes2(),
|
|
76
|
+
"PBES2-HS384+A192KW": pbes2(),
|
|
77
|
+
"PBES2-HS512+A256KW": pbes2()
|
|
78
|
+
}), contentOps = ["encrypt", "decrypt"];
|
|
79
|
+
function contentEncryption(bits, cbc = !1) {
|
|
80
|
+
return {
|
|
81
|
+
kty: ["oct"],
|
|
82
|
+
secret: !0,
|
|
83
|
+
subtle: { name: cbc ? "AES-CBC" : "AES-GCM", length: bits },
|
|
84
|
+
usages: none,
|
|
85
|
+
ops: contentOps,
|
|
86
|
+
cekBits: bits,
|
|
87
|
+
ivBits: cbc ? 128 : 96,
|
|
88
|
+
cbc
|
|
89
|
+
};
|
|
90
90
|
}
|
|
91
91
|
const ENC = table({
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
A128GCM: contentEncryption(128),
|
|
93
|
+
A192GCM: contentEncryption(192),
|
|
94
|
+
A256GCM: contentEncryption(256),
|
|
95
|
+
"A128CBC-HS256": contentEncryption(256, !0),
|
|
96
|
+
"A192CBC-HS384": contentEncryption(384, !0),
|
|
97
|
+
"A256CBC-HS512": contentEncryption(512, !0)
|
|
98
98
|
});
|
|
99
99
|
function unsupported(parameter, name) {
|
|
100
|
-
|
|
100
|
+
throw new JOSENotSupported(`Invalid or unsupported "${parameter}" (JWE ${name}) header value`);
|
|
101
|
+
}
|
|
102
|
+
function jweAlgorithm(alg) {
|
|
103
|
+
return (typeof alg == "string" ? JWE[alg] : void 0) ?? unsupported("alg", "Algorithm");
|
|
104
|
+
}
|
|
105
|
+
function isJWECEKTransport(algorithm) {
|
|
106
|
+
return algorithm.mode === "key-wrapping" || algorithm.mode === "key-encryption" || algorithm.mode === "key-agreement-with-key-wrapping";
|
|
101
107
|
}
|
|
102
|
-
|
|
103
|
-
|
|
108
|
+
function invalidJWEKeyManagementMode(_mode) {
|
|
109
|
+
throw new TypeError("Invalid JWE key management mode");
|
|
104
110
|
}
|
|
105
|
-
|
|
106
|
-
|
|
111
|
+
function jweEncryption(enc) {
|
|
112
|
+
return (typeof enc == "string" ? ENC[enc] : void 0) ?? unsupported("enc", "Encryption Algorithm");
|
|
107
113
|
}
|
|
114
|
+
export {
|
|
115
|
+
JWE,
|
|
116
|
+
invalidJWEKeyManagementMode,
|
|
117
|
+
isJWECEKTransport,
|
|
118
|
+
jweAlgorithm,
|
|
119
|
+
jweEncryption
|
|
120
|
+
};
|
|
@@ -1,186 +1,220 @@
|
|
|
1
|
-
import { decrypt, generateCek } from
|
|
2
|
-
import { decodeBase64url, encodeBase64url, parseJoseHeader } from
|
|
3
|
-
import { JOSEAlgNotAllowed, JOSENotSupported, JWEInvalid } from
|
|
4
|
-
import { isDisjoint, isObject } from
|
|
5
|
-
import { decryptKeyManagement } from
|
|
6
|
-
import { concat, decoder, encode } from
|
|
7
|
-
import { validateCrit, validateAlgorithms, JWE_RECOGNIZED } from
|
|
8
|
-
import { prepareKey } from
|
|
9
|
-
import { jweAlgorithm, jweEncryption } from
|
|
10
|
-
import { decompress } from
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
1
|
+
import { decrypt, generateCek } from "./content_encryption.js";
|
|
2
|
+
import { decodeBase64url, encodeBase64url, parseJoseHeader } from "./helpers.js";
|
|
3
|
+
import { JOSEAlgNotAllowed, JOSENotSupported, JWEInvalid } from "../util/errors.js";
|
|
4
|
+
import { isDisjoint, isObject } from "./type_checks.js";
|
|
5
|
+
import { decryptKeyManagement } from "./key_management.js";
|
|
6
|
+
import { concat, decoder, encode } from "./buffer_utils.js";
|
|
7
|
+
import { validateCrit, validateAlgorithms, JWE_RECOGNIZED } from "./options.js";
|
|
8
|
+
import { prepareKey } from "./key.js";
|
|
9
|
+
import { JWE, invalidJWEKeyManagementMode, isJWECEKTransport, jweAlgorithm, jweEncryption } from "./jwe_algorithms.js";
|
|
10
|
+
import { decompress, validateZip } from "./deflate.js";
|
|
11
|
+
function snapshotSharedJWE(jwe) {
|
|
12
|
+
const { aad, ciphertext, iv, protected: encodedProtected, tag, unprotected } = jwe;
|
|
13
|
+
if (iv !== void 0 && (typeof iv != "string" || !iv))
|
|
14
|
+
throw new JWEInvalid("JWE Initialization Vector incorrect type");
|
|
15
|
+
if (typeof ciphertext != "string")
|
|
16
|
+
throw new JWEInvalid("JWE Ciphertext missing or incorrect type");
|
|
17
|
+
if (tag !== void 0 && (typeof tag != "string" || !tag))
|
|
18
|
+
throw new JWEInvalid("JWE Authentication Tag incorrect type");
|
|
19
|
+
if (encodedProtected !== void 0 && typeof encodedProtected != "string")
|
|
20
|
+
throw new JWEInvalid("JWE Protected Header incorrect type");
|
|
21
|
+
if (aad !== void 0 && (typeof aad != "string" || !aad))
|
|
22
|
+
throw new JWEInvalid("JWE AAD incorrect type");
|
|
23
|
+
if (unprotected !== void 0 && !isObject(unprotected))
|
|
24
|
+
throw new JWEInvalid("JWE Shared Unprotected Header incorrect type");
|
|
25
|
+
return {
|
|
26
|
+
aad,
|
|
27
|
+
ciphertext,
|
|
28
|
+
iv,
|
|
29
|
+
protected: encodedProtected,
|
|
30
|
+
tag,
|
|
31
|
+
unprotected: unprotected === void 0 ? void 0 : { ...unprotected }
|
|
32
|
+
};
|
|
31
33
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
function snapshotRecipientJWE(recipient) {
|
|
35
|
+
let header, headerAlg;
|
|
36
|
+
try {
|
|
37
|
+
const { header: inputHeader } = recipient;
|
|
38
|
+
if (isObject(inputHeader)) {
|
|
39
|
+
headerAlg = inputHeader.alg;
|
|
40
|
+
const parameters = Object.keys(inputHeader);
|
|
41
|
+
parameters.includes("alg") || (headerAlg = void 0), header = Object.fromEntries(parameters.map((parameter) => [
|
|
42
|
+
parameter,
|
|
43
|
+
parameter === "alg" ? headerAlg : inputHeader[parameter]
|
|
44
|
+
]));
|
|
45
|
+
} else
|
|
46
|
+
header = inputHeader;
|
|
47
|
+
} catch (error) {
|
|
48
|
+
return [void 0, headerAlg, error];
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const { encrypted_key: encryptedKey } = recipient;
|
|
52
|
+
return [{ encrypted_key: encryptedKey, header }, headerAlg];
|
|
53
|
+
} catch (error) {
|
|
54
|
+
return [void 0, headerAlg, error];
|
|
55
|
+
}
|
|
43
56
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
parsedProt,
|
|
53
|
-
decodeBase64url(ciphertext, 'ciphertext', JWEInvalid),
|
|
54
|
-
iv !== undefined ? decodeBase64url(iv, 'iv', JWEInvalid) : undefined,
|
|
55
|
-
tag !== undefined ? decodeBase64url(tag, 'tag', JWEInvalid) : undefined,
|
|
56
|
-
aad !== undefined
|
|
57
|
-
? concat(protectedHeader, encode('.'), encodeBase64url(aad, 'aad', JWEInvalid))
|
|
58
|
-
: protectedHeader,
|
|
59
|
-
];
|
|
57
|
+
function checkRecipient(jwe) {
|
|
58
|
+
const { encrypted_key: encryptedKey, header } = jwe;
|
|
59
|
+
if (encryptedKey !== void 0 && typeof encryptedKey != "string")
|
|
60
|
+
throw new JWEInvalid("JWE Encrypted Key incorrect type");
|
|
61
|
+
if (header !== void 0 && !isObject(header))
|
|
62
|
+
throw new JWEInvalid("JWE Per-Recipient Unprotected Header incorrect type");
|
|
63
|
+
if (jwe.protected === void 0 && header === void 0 && jwe.unprotected === void 0)
|
|
64
|
+
throw new JWEInvalid("JOSE Header missing");
|
|
60
65
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
if (header !== undefined) {
|
|
75
|
-
result.unprotectedHeader = header;
|
|
76
|
-
}
|
|
77
|
-
if (resolvedKey) {
|
|
78
|
-
return { ...result, key };
|
|
79
|
-
}
|
|
80
|
-
return result;
|
|
66
|
+
function shareJWE(jwe) {
|
|
67
|
+
const { protected: encodedProtected, ciphertext, iv, tag, aad } = jwe;
|
|
68
|
+
let parsedProt;
|
|
69
|
+
encodedProtected !== void 0 && (parsedProt = parseJoseHeader(encodedProtected, JWEInvalid, "JWE Protected Header is invalid"));
|
|
70
|
+
const protectedHeader = encodedProtected !== void 0 ? encode(encodedProtected) : new Uint8Array();
|
|
71
|
+
return [
|
|
72
|
+
parsedProt,
|
|
73
|
+
decodeBase64url(ciphertext, "ciphertext", JWEInvalid),
|
|
74
|
+
iv !== void 0 ? decodeBase64url(iv, "iv", JWEInvalid) : void 0,
|
|
75
|
+
tag !== void 0 ? decodeBase64url(tag, "tag", JWEInvalid) : void 0,
|
|
76
|
+
aad !== void 0 ? concat(protectedHeader, encode("."), encodeBase64url(aad, "aad", JWEInvalid)) : protectedHeader
|
|
77
|
+
];
|
|
81
78
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
options &&
|
|
86
|
-
validateAlgorithms('contentEncryptionAlgorithms', options.contentEncryptionAlgorithms),
|
|
87
|
-
options,
|
|
88
|
-
];
|
|
79
|
+
function decryptResult(jwe, decrypted) {
|
|
80
|
+
const [plaintext, parsedProt, key, resolvedKey] = decrypted, { protected: encodedProtected, aad, unprotected, header } = jwe, result = { plaintext };
|
|
81
|
+
return encodedProtected !== void 0 && (result.protectedHeader = parsedProt), aad !== void 0 && (result.additionalAuthenticatedData = decodeBase64url(aad, "aad", JWEInvalid)), unprotected !== void 0 && (result.sharedUnprotectedHeader = unprotected), header !== void 0 && (result.unprotectedHeader = header), resolvedKey ? { ...result, key } : result;
|
|
89
82
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
83
|
+
function prepareDecrypt(options) {
|
|
84
|
+
return [
|
|
85
|
+
options && validateAlgorithms("keyManagementAlgorithms", options.keyManagementAlgorithms),
|
|
86
|
+
options && validateAlgorithms("contentEncryptionAlgorithms", options.contentEncryptionAlgorithms),
|
|
87
|
+
options?.crit,
|
|
88
|
+
options?.maxPBES2Count,
|
|
89
|
+
options?.maxDecompressedLength
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
async function decryptRecipient(jwe, token, shared, key) {
|
|
93
|
+
const [parsedProt] = token, { header, unprotected } = jwe;
|
|
94
|
+
let joseHeader;
|
|
95
|
+
if (header !== void 0 || unprotected !== void 0) {
|
|
96
|
+
if (!isDisjoint(parsedProt, header, unprotected))
|
|
97
|
+
throw new JWEInvalid("JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint");
|
|
98
|
+
joseHeader = { ...parsedProt, ...header, ...unprotected };
|
|
99
|
+
} else
|
|
100
|
+
joseHeader = parsedProt ?? {};
|
|
101
|
+
return decryptRecipientCore(jwe, token, shared, key, joseHeader);
|
|
102
|
+
}
|
|
103
|
+
async function decryptRecipientCore(jwe, token, shared, key, joseHeader) {
|
|
104
|
+
const [keyManagementAlgorithms, contentEncryptionAlgorithms, crit, maxPBES2Count, maxDecompressedLength] = shared, [parsedProt, ciphertext, iv, tag, additionalData] = token, { encrypted_key: encodedKey } = jwe;
|
|
105
|
+
validateCrit(JWEInvalid, JWE_RECOGNIZED, crit, parsedProt, joseHeader), validateZip(joseHeader, parsedProt);
|
|
106
|
+
const { alg, enc } = joseHeader;
|
|
107
|
+
if (typeof alg != "string" || !alg)
|
|
108
|
+
throw new JWEInvalid("missing JWE Algorithm (alg) in JWE Header");
|
|
109
|
+
const selected = JWE[alg];
|
|
110
|
+
if (encodedKey === "" && (!selected || !isJWECEKTransport(selected)))
|
|
111
|
+
throw new JWEInvalid("JWE Encrypted Key incorrect type");
|
|
112
|
+
const integrated = selected?.mode === "integrated-encryption";
|
|
113
|
+
if (!integrated && (typeof enc != "string" || !enc))
|
|
114
|
+
throw new JWEInvalid("missing JWE Encryption Algorithm (enc) in JWE Header");
|
|
115
|
+
if (keyManagementAlgorithms && !keyManagementAlgorithms.has(alg) || !keyManagementAlgorithms && alg.startsWith("PBES2"))
|
|
116
|
+
throw new JOSEAlgNotAllowed('"alg" (Algorithm) Header Parameter value not allowed');
|
|
117
|
+
let encEntry;
|
|
118
|
+
if (integrated) {
|
|
119
|
+
if (enc !== void 0)
|
|
120
|
+
throw new JWEInvalid('JWE "enc" (Encryption Algorithm) Header Parameter must not be present for integrated encryption');
|
|
121
|
+
if (iv?.byteLength)
|
|
122
|
+
throw new JWEInvalid("JWE Initialization Vector must be empty for integrated encryption");
|
|
123
|
+
if (tag?.byteLength)
|
|
124
|
+
throw new JWEInvalid("JWE Authentication Tag must be empty for integrated encryption");
|
|
125
|
+
} else {
|
|
126
|
+
if (contentEncryptionAlgorithms && !contentEncryptionAlgorithms.has(enc))
|
|
127
|
+
throw new JOSEAlgNotAllowed('"enc" (Encryption Algorithm) Header Parameter value not allowed');
|
|
128
|
+
encEntry = jweEncryption(enc);
|
|
129
|
+
}
|
|
130
|
+
let encryptedKey;
|
|
131
|
+
if (encodedKey !== void 0)
|
|
132
|
+
try {
|
|
133
|
+
encryptedKey = decodeBase64url(encodedKey, "encrypted_key", JWEInvalid);
|
|
134
|
+
} catch (error) {
|
|
135
|
+
if (!selected || !isJWECEKTransport(selected))
|
|
136
|
+
throw error;
|
|
137
|
+
encryptedKey = new Uint8Array();
|
|
138
|
+
}
|
|
139
|
+
let resolvedKey = !1;
|
|
140
|
+
typeof key == "function" && (key = await key(parsedProt, jwe), resolvedKey = !0);
|
|
141
|
+
const algEntry = selected ?? jweAlgorithm(alg);
|
|
142
|
+
isJWECEKTransport(algEntry) && encryptedKey === void 0 && (encryptedKey = new Uint8Array());
|
|
143
|
+
let k;
|
|
144
|
+
const mode = algEntry.mode;
|
|
145
|
+
switch (mode) {
|
|
146
|
+
case "direct-encryption":
|
|
147
|
+
k = await prepareKey(encEntry, key, "decrypt");
|
|
148
|
+
break;
|
|
149
|
+
case "direct-key-agreement":
|
|
150
|
+
case "key-wrapping":
|
|
151
|
+
case "key-encryption":
|
|
152
|
+
case "key-agreement-with-key-wrapping":
|
|
153
|
+
case "integrated-encryption":
|
|
154
|
+
k = await prepareKey(algEntry, key, "decrypt");
|
|
155
|
+
break;
|
|
156
|
+
default:
|
|
157
|
+
invalidJWEKeyManagementMode(mode);
|
|
158
|
+
}
|
|
159
|
+
let plaintext;
|
|
160
|
+
if (algEntry.mode === "integrated-encryption")
|
|
161
|
+
plaintext = await algEntry.decrypt(k, encryptedKey, ciphertext, additionalData, parsedProt, joseHeader);
|
|
162
|
+
else {
|
|
163
|
+
const encryption = encEntry;
|
|
137
164
|
let cek;
|
|
138
165
|
try {
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
if (cause instanceof JWEInvalid)
|
|
159
|
-
throw cause;
|
|
160
|
-
throw new JWEInvalid('Failed to decompress plaintext', { cause });
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
return [plaintext, parsedProt, k, resolvedKey];
|
|
166
|
+
cek = await decryptKeyManagement(algEntry, encryption, k, encryptedKey, joseHeader, maxPBES2Count), isJWECEKTransport(algEntry) && cek instanceof Uint8Array && cek.byteLength << 3 !== encryption.cekBits && (cek = generateCek(encryption));
|
|
167
|
+
} catch (err) {
|
|
168
|
+
if (err instanceof TypeError || err instanceof JWEInvalid || err instanceof JOSENotSupported)
|
|
169
|
+
throw err;
|
|
170
|
+
cek = generateCek(encryption);
|
|
171
|
+
}
|
|
172
|
+
plaintext = await decrypt(encryption, cek, ciphertext, iv, tag, additionalData);
|
|
173
|
+
}
|
|
174
|
+
if (joseHeader.zip === "DEF") {
|
|
175
|
+
const decompressionLimit = maxDecompressedLength ?? 25e4;
|
|
176
|
+
if (decompressionLimit === 0)
|
|
177
|
+
throw new JOSENotSupported('JWE "zip" (Compression Algorithm) Header Parameter is not supported.');
|
|
178
|
+
if (decompressionLimit !== 1 / 0 && (!Number.isSafeInteger(decompressionLimit) || decompressionLimit < 1))
|
|
179
|
+
throw new TypeError("maxDecompressedLength must be 0, a positive safe integer, or Infinity");
|
|
180
|
+
plaintext = await decompress(plaintext, decompressionLimit).catch((cause) => {
|
|
181
|
+
throw cause instanceof JWEInvalid ? cause : new JWEInvalid("Failed to decompress plaintext", { cause });
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return [plaintext, parsedProt, k, resolvedKey];
|
|
164
185
|
}
|
|
165
|
-
|
|
166
|
-
|
|
186
|
+
async function decryptJWE(jwe, shared, key) {
|
|
187
|
+
return decryptRecipient(jwe, shareJWE(jwe), shared, key);
|
|
167
188
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
189
|
+
async function decryptCompact(jwe, shared, key) {
|
|
190
|
+
if (jwe instanceof Uint8Array && (jwe = decoder.decode(jwe)), typeof jwe != "string")
|
|
191
|
+
throw new JWEInvalid("Compact JWE must be a string or Uint8Array");
|
|
192
|
+
const { 0: protectedHeader, 1: encryptedKey, 2: iv, 3: ciphertext, 4: tag, length } = jwe.split(".");
|
|
193
|
+
if (length !== 5)
|
|
194
|
+
throw new JWEInvalid("Invalid Compact JWE");
|
|
195
|
+
const flattened = {
|
|
196
|
+
ciphertext,
|
|
197
|
+
iv: iv || void 0,
|
|
198
|
+
protected: protectedHeader,
|
|
199
|
+
tag: tag || void 0,
|
|
200
|
+
encrypted_key: encryptedKey || void 0
|
|
201
|
+
}, parsedProt = parseJoseHeader(protectedHeader, JWEInvalid, "JWE Protected Header is invalid"), protectedBytes = encode(protectedHeader), token = [
|
|
202
|
+
parsedProt,
|
|
203
|
+
decodeBase64url(ciphertext, "ciphertext", JWEInvalid),
|
|
204
|
+
iv ? decodeBase64url(iv, "iv", JWEInvalid) : void 0,
|
|
205
|
+
tag ? decodeBase64url(tag, "tag", JWEInvalid) : void 0,
|
|
206
|
+
protectedBytes
|
|
207
|
+
];
|
|
208
|
+
return decryptRecipientCore(flattened, token, shared, key, parsedProt);
|
|
186
209
|
}
|
|
210
|
+
export {
|
|
211
|
+
checkRecipient,
|
|
212
|
+
decryptCompact,
|
|
213
|
+
decryptJWE,
|
|
214
|
+
decryptRecipient,
|
|
215
|
+
decryptResult,
|
|
216
|
+
prepareDecrypt,
|
|
217
|
+
shareJWE,
|
|
218
|
+
snapshotRecipientJWE,
|
|
219
|
+
snapshotSharedJWE
|
|
220
|
+
};
|