@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,44 +1,50 @@
1
- import { prepareVerify, verifySignature, verifyResult } from '../../lib/jws_verify.js';
2
- import { JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';
3
- import { isObject } from '../../lib/type_checks.js';
4
- export async function generalVerify(jws, key, options) {
5
- if (!isObject(jws)) {
6
- throw new JWSInvalid('General JWS must be an object');
7
- }
8
- const { signatures, payload } = jws;
9
- if (!Array.isArray(signatures) || !signatures.every(isObject)) {
10
- throw new JWSInvalid('JWS Signatures missing or incorrect type');
11
- }
12
- let shared;
1
+ import { encodeJsonUnencodedPayload, parseProtectedHeader, prepareVerify, snapshotJws, verifySignature, verifyResult } from "../../lib/jws_verify.js";
2
+ import { JWSInvalid, JWSSignatureVerificationFailed } from "../../util/errors.js";
3
+ import { isObject } from "../../lib/type_checks.js";
4
+ function snapshotSignature(signature, payload) {
5
+ try {
6
+ const jws = snapshotJws(signature, [payload]), { protected: encodedProtected, header, signature: encodedSignature } = jws;
7
+ if (encodedProtected === void 0 && header === void 0 || encodedProtected !== void 0 && typeof encodedProtected != "string" || typeof encodedSignature != "string" || header !== void 0 && !isObject(header))
8
+ return;
9
+ const protectedHeader = parseProtectedHeader(encodedProtected), { b64, crit } = protectedHeader;
10
+ return [
11
+ jws,
12
+ protectedHeader,
13
+ Array.isArray(crit) && crit.includes("b64") ? typeof b64 == "boolean" ? b64 ? 1 : 2 : 0 : 1
14
+ ];
15
+ } catch {
16
+ return;
17
+ }
18
+ }
19
+ async function generalVerify(jws, key, options) {
20
+ if (!isObject(jws))
21
+ throw new JWSInvalid("General JWS must be an object");
22
+ const { signatures, payload: inputPayload } = jws;
23
+ if (!Array.isArray(signatures))
24
+ throw new JWSInvalid("JWS Signatures missing or incorrect type");
25
+ const signatureEntries = Array.from(signatures);
26
+ if (!signatureEntries.every(isObject))
27
+ throw new JWSInvalid("JWS Signatures missing or incorrect type");
28
+ let shared;
29
+ try {
30
+ if (inputPayload === void 0)
31
+ throw new Error();
32
+ shared = prepareVerify(options);
33
+ } catch {
34
+ throw new JWSSignatureVerificationFailed();
35
+ }
36
+ const payload = inputPayload instanceof Uint8Array ? new Uint8Array(inputPayload) : inputPayload, candidates = signatureEntries.map((signature) => snapshotSignature(signature, payload)).filter((candidate) => candidate !== void 0);
37
+ let modes = 0;
38
+ for (const [, , mode] of candidates)
39
+ if (modes |= mode, modes === 3)
40
+ throw new JWSInvalid("inconsistent use of JWS Unencoded Payload (RFC7797)");
41
+ for (const candidate of candidates)
13
42
  try {
14
- if (payload === undefined)
15
- throw new Error();
16
- shared = prepareVerify(options);
43
+ return verifyResult(candidate[0], await verifySignature(candidate[0], shared, key, encodeJsonUnencodedPayload, candidate[1]));
44
+ } catch {
17
45
  }
18
- catch {
19
- throw new JWSSignatureVerificationFailed();
20
- }
21
- for (const signature of signatures) {
22
- try {
23
- const { protected: encodedProtected, header, signature: encodedSignature } = signature;
24
- if (encodedProtected === undefined && header === undefined)
25
- throw new Error();
26
- if (encodedProtected !== undefined && typeof encodedProtected !== 'string') {
27
- throw new Error();
28
- }
29
- if (typeof encodedSignature !== 'string')
30
- throw new Error();
31
- if (header !== undefined && !isObject(header))
32
- throw new Error();
33
- return verifyResult(signature, await verifySignature({
34
- header,
35
- payload,
36
- protected: encodedProtected,
37
- signature: encodedSignature,
38
- }, shared, key));
39
- }
40
- catch {
41
- }
42
- }
43
- throw new JWSSignatureVerificationFailed();
46
+ throw new JWSSignatureVerificationFailed();
44
47
  }
48
+ export {
49
+ generalVerify
50
+ };
@@ -1,23 +1,14 @@
1
- import { prepareDecrypt, decryptCompact } from '../lib/jwe_decrypt.js';
2
- import { validateClaimsSet } from '../lib/jwt_claims_set.js';
3
- import { JWTClaimValidationFailed } from '../util/errors.js';
4
- export async function jwtDecrypt(jwt, key, options) {
5
- const decrypted = await decryptCompact(jwt, prepareDecrypt(options), key);
6
- const protectedHeader = decrypted[1];
7
- const payload = validateClaimsSet(protectedHeader, decrypted[0], options);
8
- if (protectedHeader.iss !== undefined && protectedHeader.iss !== payload.iss) {
9
- throw new JWTClaimValidationFailed('replicated "iss" claim header parameter mismatch', payload, 'iss', 'mismatch');
10
- }
11
- if (protectedHeader.sub !== undefined && protectedHeader.sub !== payload.sub) {
12
- throw new JWTClaimValidationFailed('replicated "sub" claim header parameter mismatch', payload, 'sub', 'mismatch');
13
- }
14
- if (protectedHeader.aud !== undefined &&
15
- JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud)) {
16
- throw new JWTClaimValidationFailed('replicated "aud" claim header parameter mismatch', payload, 'aud', 'mismatch');
17
- }
18
- const result = { payload, protectedHeader };
19
- if (typeof key === 'function') {
20
- return { ...result, key: decrypted[2] };
21
- }
22
- return result;
1
+ import { prepareDecrypt, decryptCompact } from "../lib/jwe_decrypt.js";
2
+ import { validateClaimsSet } from "../lib/jwt_claims_set.js";
3
+ import { JWTClaimValidationFailed } from "../util/errors.js";
4
+ async function jwtDecrypt(jwt, key, options) {
5
+ const decrypted = await decryptCompact(jwt, prepareDecrypt(options), key), protectedHeader = decrypted[1], payload = validateClaimsSet(protectedHeader, decrypted[0], options);
6
+ for (const claim of ["iss", "sub", "aud"])
7
+ if (protectedHeader[claim] !== void 0 && (claim === "aud" ? JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud) : protectedHeader[claim] !== payload[claim]))
8
+ throw new JWTClaimValidationFailed(`replicated "${claim}" claim header parameter mismatch`, payload, claim, "mismatch");
9
+ const result = { payload, protectedHeader };
10
+ return typeof key == "function" ? { ...result, key: decrypted[2] } : result;
23
11
  }
12
+ export {
13
+ jwtDecrypt
14
+ };
@@ -1,101 +1,59 @@
1
- import { CompactEncrypt } from '../jwe/compact/encrypt.js';
2
- import { JWTClaimsBuilder } from '../lib/jwt_claims_set.js';
3
- import { assertNotSet } from '../lib/helpers.js';
4
- export class EncryptJWT {
5
- #cek;
6
- #iv;
7
- #keyManagementParameters;
8
- #protectedHeader;
9
- #replicateIssuerAsHeader;
10
- #replicateSubjectAsHeader;
11
- #replicateAudienceAsHeader;
12
- #jwt;
13
- constructor(payload = {}) {
14
- this.#jwt = new JWTClaimsBuilder(payload);
15
- }
16
- setIssuer(issuer) {
17
- this.#jwt.iss = issuer;
18
- return this;
19
- }
20
- setSubject(subject) {
21
- this.#jwt.sub = subject;
22
- return this;
23
- }
24
- setAudience(audience) {
25
- this.#jwt.aud = audience;
26
- return this;
27
- }
28
- setJti(jwtId) {
29
- this.#jwt.jti = jwtId;
30
- return this;
31
- }
32
- setNotBefore(input) {
33
- this.#jwt.nbf = input;
34
- return this;
35
- }
36
- setExpirationTime(input) {
37
- this.#jwt.exp = input;
38
- return this;
39
- }
40
- setIssuedAt(input) {
41
- this.#jwt.iat = input;
42
- return this;
43
- }
44
- setProtectedHeader(protectedHeader) {
45
- assertNotSet(this.#protectedHeader, 'setProtectedHeader');
46
- this.#protectedHeader = protectedHeader;
47
- return this;
48
- }
49
- setKeyManagementParameters(parameters) {
50
- assertNotSet(this.#keyManagementParameters, 'setKeyManagementParameters');
51
- this.#keyManagementParameters = parameters;
52
- return this;
53
- }
54
- setContentEncryptionKey(cek) {
55
- assertNotSet(this.#cek, 'setContentEncryptionKey');
56
- this.#cek = cek;
57
- return this;
58
- }
59
- setInitializationVector(iv) {
60
- assertNotSet(this.#iv, 'setInitializationVector');
61
- this.#iv = iv;
62
- return this;
63
- }
64
- replicateIssuerAsHeader() {
65
- this.#replicateIssuerAsHeader = true;
66
- return this;
67
- }
68
- replicateSubjectAsHeader() {
69
- this.#replicateSubjectAsHeader = true;
70
- return this;
71
- }
72
- replicateAudienceAsHeader() {
73
- this.#replicateAudienceAsHeader = true;
74
- return this;
75
- }
76
- async encrypt(key, options) {
77
- const enc = new CompactEncrypt(this.#jwt.data());
78
- if (this.#protectedHeader &&
79
- (this.#replicateIssuerAsHeader ||
80
- this.#replicateSubjectAsHeader ||
81
- this.#replicateAudienceAsHeader)) {
82
- this.#protectedHeader = {
83
- ...this.#protectedHeader,
84
- iss: this.#replicateIssuerAsHeader ? this.#jwt.iss : undefined,
85
- sub: this.#replicateSubjectAsHeader ? this.#jwt.sub : undefined,
86
- aud: this.#replicateAudienceAsHeader ? this.#jwt.aud : undefined,
87
- };
88
- }
89
- enc.setProtectedHeader(this.#protectedHeader);
90
- if (this.#iv) {
91
- enc.setInitializationVector(this.#iv);
92
- }
93
- if (this.#cek) {
94
- enc.setContentEncryptionKey(this.#cek);
95
- }
96
- if (this.#keyManagementParameters) {
97
- enc.setKeyManagementParameters(this.#keyManagementParameters);
98
- }
99
- return enc.encrypt(key, options);
100
- }
1
+ import { createJWE } from "../lib/jwe_encrypt.js";
2
+ import { JWTClaimsBuilder, jwtClaim, jwtData } from "../lib/jwt_claims_set.js";
3
+ import { assertNotSet } from "../lib/helpers.js";
4
+ const EncryptJWT_base = JWTClaimsBuilder;
5
+ class EncryptJWT extends EncryptJWT_base {
6
+ #cek;
7
+ #iv;
8
+ #keyManagementParameters;
9
+ #protectedHeader;
10
+ #replicateIssuerAsHeader;
11
+ #replicateSubjectAsHeader;
12
+ #replicateAudienceAsHeader;
13
+ setProtectedHeader(protectedHeader) {
14
+ return assertNotSet(this.#protectedHeader, "setProtectedHeader"), this.#protectedHeader = protectedHeader, this;
15
+ }
16
+ setKeyManagementParameters(parameters) {
17
+ return assertNotSet(this.#keyManagementParameters, "setKeyManagementParameters"), this.#keyManagementParameters = parameters, this;
18
+ }
19
+ setContentEncryptionKey(cek) {
20
+ return assertNotSet(this.#cek, "setContentEncryptionKey"), this.#cek = cek, this;
21
+ }
22
+ setInitializationVector(iv) {
23
+ return assertNotSet(this.#iv, "setInitializationVector"), this.#iv = iv, this;
24
+ }
25
+ replicateIssuerAsHeader() {
26
+ return this.#replicateIssuerAsHeader = !0, this;
27
+ }
28
+ replicateSubjectAsHeader() {
29
+ return this.#replicateSubjectAsHeader = !0, this;
30
+ }
31
+ replicateAudienceAsHeader() {
32
+ return this.#replicateAudienceAsHeader = !0, this;
33
+ }
34
+ async encrypt(key, options) {
35
+ const plaintext = jwtData(this);
36
+ this.#protectedHeader && (this.#replicateIssuerAsHeader || this.#replicateSubjectAsHeader || this.#replicateAudienceAsHeader) && (this.#protectedHeader = {
37
+ ...this.#protectedHeader,
38
+ iss: this.#replicateIssuerAsHeader ? jwtClaim(this, "iss") : void 0,
39
+ sub: this.#replicateSubjectAsHeader ? jwtClaim(this, "sub") : void 0,
40
+ aud: this.#replicateAudienceAsHeader ? jwtClaim(this, "aud") : void 0
41
+ });
42
+ const jwe = await createJWE([
43
+ plaintext,
44
+ this.#protectedHeader,
45
+ void 0,
46
+ void 0,
47
+ void 0,
48
+ this.#cek,
49
+ this.#iv,
50
+ this.#keyManagementParameters,
51
+ void 0,
52
+ !1
53
+ ], key, options);
54
+ return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join(".");
55
+ }
101
56
  }
57
+ export {
58
+ EncryptJWT
59
+ };
@@ -1,51 +1,19 @@
1
- import { CompactSign } from '../jws/compact/sign.js';
2
- import { unencodedPayload } from '../lib/jws_sign.js';
3
- import { JWTInvalid } from '../util/errors.js';
4
- import { JWTClaimsBuilder } from '../lib/jwt_claims_set.js';
5
- export class SignJWT {
6
- #protectedHeader;
7
- #jwt;
8
- constructor(payload = {}) {
9
- this.#jwt = new JWTClaimsBuilder(payload);
10
- }
11
- setIssuer(issuer) {
12
- this.#jwt.iss = issuer;
13
- return this;
14
- }
15
- setSubject(subject) {
16
- this.#jwt.sub = subject;
17
- return this;
18
- }
19
- setAudience(audience) {
20
- this.#jwt.aud = audience;
21
- return this;
22
- }
23
- setJti(jwtId) {
24
- this.#jwt.jti = jwtId;
25
- return this;
26
- }
27
- setNotBefore(input) {
28
- this.#jwt.nbf = input;
29
- return this;
30
- }
31
- setExpirationTime(input) {
32
- this.#jwt.exp = input;
33
- return this;
34
- }
35
- setIssuedAt(input) {
36
- this.#jwt.iat = input;
37
- return this;
38
- }
39
- setProtectedHeader(protectedHeader) {
40
- this.#protectedHeader = protectedHeader;
41
- return this;
42
- }
43
- async sign(key, options) {
44
- const sig = new CompactSign(this.#jwt.data());
45
- sig.setProtectedHeader(this.#protectedHeader);
46
- if (unencodedPayload(this.#protectedHeader)) {
47
- throw new JWTInvalid('JWTs MUST NOT use unencoded payload');
48
- }
49
- return sig.sign(key, options);
50
- }
1
+ import { createCompactSignature } from "../lib/jws_sign.js";
2
+ import { JWTInvalid } from "../util/errors.js";
3
+ import { JWTClaimsBuilder, jwtData } from "../lib/jwt_claims_set.js";
4
+ import { assertNotSet } from "../lib/helpers.js";
5
+ const SignJWT_base = JWTClaimsBuilder;
6
+ class SignJWT extends SignJWT_base {
7
+ #protectedHeader;
8
+ setProtectedHeader(protectedHeader) {
9
+ return assertNotSet(this.#protectedHeader, "setProtectedHeader"), this.#protectedHeader = protectedHeader, this;
10
+ }
11
+ async sign(key, options) {
12
+ return createCompactSignature(jwtData(this), this.#protectedHeader, options?.crit, key, () => {
13
+ throw new JWTInvalid("JWTs MUST NOT use unencoded payload");
14
+ });
15
+ }
51
16
  }
17
+ export {
18
+ SignJWT
19
+ };
@@ -1,64 +1,35 @@
1
- import * as b64u from '../util/base64url.js';
2
- import { strictDecoder } from '../lib/buffer_utils.js';
3
- import { decodeBase64url } from '../lib/helpers.js';
4
- import { JWTInvalid } from '../util/errors.js';
5
- import { validateClaimsSet, JWTClaimsBuilder } from '../lib/jwt_claims_set.js';
6
- export class UnsecuredJWT {
7
- #jwt;
8
- constructor(payload = {}) {
9
- this.#jwt = new JWTClaimsBuilder(payload);
10
- }
11
- encode() {
12
- const header = b64u.encode(JSON.stringify({ alg: 'none' }));
13
- const payload = b64u.encode(this.#jwt.data());
14
- return `${header}.${payload}.`;
15
- }
16
- setIssuer(issuer) {
17
- this.#jwt.iss = issuer;
18
- return this;
19
- }
20
- setSubject(subject) {
21
- this.#jwt.sub = subject;
22
- return this;
23
- }
24
- setAudience(audience) {
25
- this.#jwt.aud = audience;
26
- return this;
27
- }
28
- setJti(jwtId) {
29
- this.#jwt.jti = jwtId;
30
- return this;
31
- }
32
- setNotBefore(input) {
33
- this.#jwt.nbf = input;
34
- return this;
35
- }
36
- setExpirationTime(input) {
37
- this.#jwt.exp = input;
38
- return this;
39
- }
40
- setIssuedAt(input) {
41
- this.#jwt.iat = input;
42
- return this;
43
- }
44
- static decode(jwt, options) {
45
- if (typeof jwt !== 'string') {
46
- throw new JWTInvalid('Unsecured JWT must be a string');
47
- }
48
- const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split('.');
49
- if (length !== 3 || signature !== '') {
50
- throw new JWTInvalid('Invalid Unsecured JWT');
51
- }
52
- let header;
53
- try {
54
- header = JSON.parse(strictDecoder.decode(b64u.decode(encodedHeader)));
55
- if (header.alg !== 'none')
56
- throw new Error();
57
- }
58
- catch {
59
- throw new JWTInvalid('Invalid Unsecured JWT');
60
- }
61
- const payload = validateClaimsSet(header, decodeBase64url(encodedPayload, 'payload', JWTInvalid), options);
62
- return { payload, header };
63
- }
1
+ import * as b64u from "../util/base64url.js";
2
+ import { decodeBase64url, parseJoseHeader } from "../lib/helpers.js";
3
+ import { JWSInvalid, JWTInvalid } from "../util/errors.js";
4
+ import { validateClaimsSet, JWTClaimsBuilder, jwtData } from "../lib/jwt_claims_set.js";
5
+ import { JWS_RECOGNIZED, validateB64, validateCrit } from "../lib/options.js";
6
+ const UnsecuredJWT_base = JWTClaimsBuilder;
7
+ class UnsecuredJWT extends UnsecuredJWT_base {
8
+ encode() {
9
+ const header = b64u.encode(JSON.stringify({ alg: "none" })), payload = b64u.encode(jwtData(this));
10
+ return `${header}.${payload}.`;
11
+ }
12
+ static decode(jwt, options) {
13
+ if (typeof jwt != "string")
14
+ throw new JWTInvalid("Unsecured JWT must be a string");
15
+ const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split(".");
16
+ if (length !== 3 || signature !== "")
17
+ throw new JWTInvalid("Invalid Unsecured JWT");
18
+ let header, b64;
19
+ try {
20
+ header = parseJoseHeader(encodedHeader, JWSInvalid, "JWS Protected Header is invalid");
21
+ const extensions = validateCrit(JWSInvalid, JWS_RECOGNIZED, void 0, header, header);
22
+ b64 = validateB64(header, extensions);
23
+ } catch (cause) {
24
+ throw cause instanceof JWSInvalid ? new JWTInvalid("Invalid Unsecured JWT", { cause }) : cause;
25
+ }
26
+ if (header.alg !== "none")
27
+ throw new JWTInvalid("Invalid Unsecured JWT");
28
+ if (!b64)
29
+ throw new JWTInvalid("JWTs MUST NOT use unencoded payload");
30
+ return { payload: validateClaimsSet(header, decodeBase64url(encodedPayload, "payload", JWTInvalid), options), header };
31
+ }
64
32
  }
33
+ export {
34
+ UnsecuredJWT
35
+ };
@@ -1,15 +1,13 @@
1
- import { prepareVerify, verifyCompact } from '../lib/jws_verify.js';
2
- import { validateClaimsSet } from '../lib/jwt_claims_set.js';
3
- import { JWTInvalid } from '../util/errors.js';
4
- export async function jwtVerify(jwt, key, options) {
5
- const verified = await verifyCompact(jwt, prepareVerify(options), key);
6
- if (!verified[2]) {
7
- throw new JWTInvalid('JWTs MUST NOT use unencoded payload');
8
- }
9
- const payload = validateClaimsSet(verified[1], verified[0], options);
10
- const result = { payload, protectedHeader: verified[1] };
11
- if (typeof key === 'function') {
12
- return { ...result, key: verified[3] };
13
- }
14
- return result;
1
+ import { prepareVerify, verifyCompact } from "../lib/jws_verify.js";
2
+ import { validateClaimsSet } from "../lib/jwt_claims_set.js";
3
+ import { JWTInvalid } from "../util/errors.js";
4
+ async function jwtVerify(jwt, key, options) {
5
+ const verified = await verifyCompact(jwt, prepareVerify(options), key);
6
+ if (!verified[2])
7
+ throw new JWTInvalid("JWTs MUST NOT use unencoded payload");
8
+ const result = { payload: validateClaimsSet(verified[1], verified[0], options), protectedHeader: verified[1] };
9
+ return typeof key == "function" ? { ...result, key: verified[3] } : result;
15
10
  }
11
+ export {
12
+ jwtVerify
13
+ };
@@ -1,44 +1,39 @@
1
- import { toSPKI as exportPublic, toPKCS8 as exportPrivate } from '../lib/asn1.js';
2
- import { invalidKeyInput } from '../lib/invalid_key_input.js';
3
- import { encode as b64u } from '../util/base64url.js';
4
- import { isCryptoKey, isKeyObject } from '../lib/is_key_like.js';
1
+ import { toSPKI as exportPublic, toPKCS8 as exportPrivate } from "../lib/asn1.js";
2
+ import { invalidKeyInput } from "../lib/invalid_key_input.js";
3
+ import { encode as b64u } from "../util/base64url.js";
4
+ import { isCryptoKey, isKeyObject } from "../lib/is_key_like.js";
5
5
  function omitUndefinedProperties(jwk) {
6
- return Object.fromEntries(Object.entries(jwk).filter(([, value]) => value !== undefined));
6
+ return Object.fromEntries(Object.entries(jwk).filter(([, value]) => value !== void 0));
7
7
  }
8
8
  async function keyToJWK(key) {
9
- if (isKeyObject(key)) {
10
- if (key.type === 'secret') {
11
- key = key.export();
12
- }
13
- else {
14
- return key.export({ format: 'jwk' });
15
- }
16
- }
17
- if (key instanceof Uint8Array) {
18
- return {
19
- kty: 'oct',
20
- k: b64u(key),
21
- };
22
- }
23
- if (!isCryptoKey(key)) {
24
- throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'Uint8Array'));
25
- }
26
- if (!key.extractable) {
27
- throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');
28
- }
29
- const { ext, key_ops, alg, use, ...jwk } = omitUndefinedProperties(await crypto.subtle.exportKey('jwk', key));
30
- if (jwk.kty === 'AKP') {
31
- ;
32
- jwk.alg = alg;
33
- }
34
- return jwk;
9
+ if (isKeyObject(key))
10
+ if (key.type === "secret")
11
+ key = key.export();
12
+ else
13
+ return key.export({ format: "jwk" });
14
+ if (key instanceof Uint8Array)
15
+ return {
16
+ kty: "oct",
17
+ k: b64u(key)
18
+ };
19
+ if (!isCryptoKey(key))
20
+ throw new TypeError(invalidKeyInput(key, "CryptoKey", "KeyObject", "Uint8Array"));
21
+ if (!key.extractable)
22
+ throw new TypeError("non-extractable CryptoKey cannot be exported as a JWK");
23
+ const { ext, key_ops, alg, use, ...jwk } = omitUndefinedProperties(await crypto.subtle.exportKey("jwk", key));
24
+ return jwk.kty === "AKP" && (jwk.alg = alg), jwk;
35
25
  }
36
- export function exportSPKI(key) {
37
- return exportPublic(key);
26
+ function exportSPKI(key) {
27
+ return exportPublic(key);
38
28
  }
39
- export function exportPKCS8(key) {
40
- return exportPrivate(key);
29
+ function exportPKCS8(key) {
30
+ return exportPrivate(key);
41
31
  }
42
- export function exportJWK(key) {
43
- return keyToJWK(key);
32
+ function exportJWK(key) {
33
+ return keyToJWK(key);
44
34
  }
35
+ export {
36
+ exportJWK,
37
+ exportPKCS8,
38
+ exportSPKI
39
+ };