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