@suveren/gateway 0.7.6 → 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 (161) hide show
  1. package/content/integrations/mollie.json +103 -28
  2. package/dist/mcp-server/http.mjs +228 -118
  3. package/dist/ui/assets/{index-CsrM6RQr.js → index-BFnSVa9N.js} +22 -22
  4. package/dist/ui/index.html +1 -1
  5. package/node_modules/@hap/core/dist/index.d.mts +29 -6
  6. package/node_modules/@hap/core/dist/index.d.ts +29 -6
  7. package/node_modules/@hap/core/dist/index.js +54 -8
  8. package/node_modules/@hap/core/dist/index.mjs +53 -8
  9. package/node_modules/@hap/core/package.json +2 -1
  10. package/node_modules/@hap/core/src/frame.ts +115 -14
  11. package/node_modules/@hap/core/src/gatekeeper.ts +26 -0
  12. package/node_modules/@hap/core/src/types.ts +7 -1
  13. package/node_modules/@types/node/README.md +1 -1
  14. package/node_modules/@types/node/buffer.buffer.d.ts +5 -0
  15. package/node_modules/@types/node/crypto.d.ts +0 -2
  16. package/node_modules/@types/node/dgram.d.ts +119 -4
  17. package/node_modules/@types/node/ffi.d.ts +1 -1
  18. package/node_modules/@types/node/fs/promises.d.ts +61 -65
  19. package/node_modules/@types/node/fs.d.ts +86 -76
  20. package/node_modules/@types/node/http.d.ts +1 -1
  21. package/node_modules/@types/node/http2.d.ts +2 -2
  22. package/node_modules/@types/node/index.d.ts +1 -0
  23. package/node_modules/@types/node/inspector.d.ts +2 -1
  24. package/node_modules/@types/node/net.d.ts +108 -16
  25. package/node_modules/@types/node/package.json +2 -2
  26. package/node_modules/@types/node/quic.d.ts +37 -11
  27. package/node_modules/@types/node/stream/iter.d.ts +4 -4
  28. package/node_modules/@types/node/tls.d.ts +24 -0
  29. package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +5 -0
  30. package/node_modules/@types/node/ts5.6/index.d.ts +1 -0
  31. package/node_modules/@types/node/ts5.7/index.d.ts +1 -0
  32. package/node_modules/@types/node/tty.d.ts +4 -3
  33. package/node_modules/@types/node/vfs.d.ts +210 -0
  34. package/node_modules/@types/node/vm.d.ts +1 -1
  35. package/node_modules/express-rate-limit/dist/index.cjs +6 -3
  36. package/node_modules/express-rate-limit/dist/index.d.cts +11 -0
  37. package/node_modules/express-rate-limit/dist/index.d.mts +11 -0
  38. package/node_modules/express-rate-limit/dist/index.d.ts +11 -0
  39. package/node_modules/express-rate-limit/dist/index.mjs +6 -3
  40. package/node_modules/express-rate-limit/{license.md → license} +7 -6
  41. package/node_modules/express-rate-limit/package.json +5 -5
  42. package/node_modules/express-rate-limit/readme.md +1 -0
  43. package/node_modules/fast-uri/index.js +20 -5
  44. package/node_modules/fast-uri/lib/utils.js +8 -1
  45. package/node_modules/fast-uri/package.json +1 -1
  46. package/node_modules/fast-uri/test/component-safe-serialization.test.js +58 -0
  47. package/node_modules/fast-uri/test/ipv6-validation.test.js +34 -0
  48. package/node_modules/ip-address/README.md +92 -82
  49. package/node_modules/ip-address/dist/common.d.ts +20 -0
  50. package/node_modules/ip-address/dist/common.js +36 -0
  51. package/node_modules/ip-address/dist/common.js.map +1 -1
  52. package/node_modules/ip-address/dist/ipv4.d.ts +50 -0
  53. package/node_modules/ip-address/dist/ipv4.js +75 -0
  54. package/node_modules/ip-address/dist/ipv4.js.map +1 -1
  55. package/node_modules/ip-address/dist/ipv6.d.ts +79 -10
  56. package/node_modules/ip-address/dist/ipv6.js +120 -30
  57. package/node_modules/ip-address/dist/ipv6.js.map +1 -1
  58. package/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
  59. package/node_modules/ip-address/dist/v4/constants.js +40 -1
  60. package/node_modules/ip-address/dist/v4/constants.js.map +1 -1
  61. package/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
  62. package/node_modules/ip-address/dist/v6/constants.js +47 -1
  63. package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
  64. package/node_modules/ip-address/package.json +1 -1
  65. package/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +7 -16
  66. package/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +6 -17
  67. package/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +7 -16
  68. package/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +11 -34
  69. package/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +7 -16
  70. package/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +15 -35
  71. package/node_modules/jose/dist/types/jwk/embedded.d.ts +3 -8
  72. package/node_modules/jose/dist/types/jwk/thumbprint.d.ts +5 -5
  73. package/node_modules/jose/dist/types/jwks/local.d.ts +6 -10
  74. package/node_modules/jose/dist/types/jwks/remote.d.ts +13 -24
  75. package/node_modules/jose/dist/types/jws/compact/sign.d.ts +5 -10
  76. package/node_modules/jose/dist/types/jws/compact/verify.d.ts +9 -18
  77. package/node_modules/jose/dist/types/jws/flattened/sign.d.ts +7 -16
  78. package/node_modules/jose/dist/types/jws/flattened/verify.d.ts +9 -18
  79. package/node_modules/jose/dist/types/jws/general/sign.d.ts +11 -21
  80. package/node_modules/jose/dist/types/jws/general/verify.d.ts +9 -18
  81. package/node_modules/jose/dist/types/jwt/decrypt.d.ts +10 -20
  82. package/node_modules/jose/dist/types/jwt/encrypt.d.ts +6 -13
  83. package/node_modules/jose/dist/types/jwt/sign.d.ts +5 -6
  84. package/node_modules/jose/dist/types/jwt/unsecured.d.ts +9 -14
  85. package/node_modules/jose/dist/types/jwt/verify.d.ts +9 -19
  86. package/node_modules/jose/dist/types/key/export.d.ts +4 -4
  87. package/node_modules/jose/dist/types/key/generate_key_pair.d.ts +6 -8
  88. package/node_modules/jose/dist/types/key/generate_secret.d.ts +4 -11
  89. package/node_modules/jose/dist/types/key/import.d.ts +10 -17
  90. package/node_modules/jose/dist/types/types.d.ts +44 -84
  91. package/node_modules/jose/dist/types/util/base64url.d.ts +2 -2
  92. package/node_modules/jose/dist/types/util/decode_jwt.d.ts +3 -10
  93. package/node_modules/jose/dist/types/util/decode_protected_header.d.ts +4 -4
  94. package/node_modules/jose/dist/types/util/errors.d.ts +26 -53
  95. package/node_modules/jose/dist/webapi/index.js +70 -32
  96. package/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +7 -8
  97. package/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +42 -48
  98. package/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +14 -14
  99. package/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +53 -64
  100. package/node_modules/jose/dist/webapi/jwe/general/decrypt.js +38 -49
  101. package/node_modules/jose/dist/webapi/jwe/general/encrypt.js +121 -169
  102. package/node_modules/jose/dist/webapi/jwk/embedded.js +30 -32
  103. package/node_modules/jose/dist/webapi/jwk/thumbprint.js +54 -70
  104. package/node_modules/jose/dist/webapi/jwks/local.js +47 -64
  105. package/node_modules/jose/dist/webapi/jwks/remote.js +88 -136
  106. package/node_modules/jose/dist/webapi/jws/compact/sign.js +21 -21
  107. package/node_modules/jose/dist/webapi/jws/compact/verify.js +7 -8
  108. package/node_modules/jose/dist/webapi/jws/flattened/sign.js +29 -31
  109. package/node_modules/jose/dist/webapi/jws/flattened/verify.js +21 -24
  110. package/node_modules/jose/dist/webapi/jws/general/sign.js +61 -72
  111. package/node_modules/jose/dist/webapi/jws/general/verify.js +45 -69
  112. package/node_modules/jose/dist/webapi/jwt/decrypt.js +13 -20
  113. package/node_modules/jose/dist/webapi/jwt/encrypt.js +57 -70
  114. package/node_modules/jose/dist/webapi/jwt/sign.js +17 -16
  115. package/node_modules/jose/dist/webapi/jwt/unsecured.js +32 -40
  116. package/node_modules/jose/dist/webapi/jwt/verify.js +12 -14
  117. package/node_modules/jose/dist/webapi/key/export.js +32 -37
  118. package/node_modules/jose/dist/webapi/key/generate_key_pair.js +40 -48
  119. package/node_modules/jose/dist/webapi/key/generate_secret.js +35 -40
  120. package/node_modules/jose/dist/webapi/key/import.js +52 -56
  121. package/node_modules/jose/dist/webapi/lib/asn1.js +130 -169
  122. package/node_modules/jose/dist/webapi/lib/base64.js +18 -20
  123. package/node_modules/jose/dist/webapi/lib/buffer_utils.js +34 -38
  124. package/node_modules/jose/dist/webapi/lib/content_encryption.js +79 -115
  125. package/node_modules/jose/dist/webapi/lib/crypto_key.js +24 -25
  126. package/node_modules/jose/dist/webapi/lib/deflate.js +45 -47
  127. package/node_modules/jose/dist/webapi/lib/helpers.js +40 -37
  128. package/node_modules/jose/dist/webapi/lib/invalid_key_input.js +10 -24
  129. package/node_modules/jose/dist/webapi/lib/is_key_like.js +17 -15
  130. package/node_modules/jose/dist/webapi/lib/jwe_algorithms.js +106 -93
  131. package/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +207 -230
  132. package/node_modules/jose/dist/webapi/lib/jwe_encrypt.js +104 -138
  133. package/node_modules/jose/dist/webapi/lib/jwk_metadata.js +17 -18
  134. package/node_modules/jose/dist/webapi/lib/jwk_to_key.js +9 -16
  135. package/node_modules/jose/dist/webapi/lib/jws_algorithms.js +62 -61
  136. package/node_modules/jose/dist/webapi/lib/jws_sign.js +50 -75
  137. package/node_modules/jose/dist/webapi/lib/jws_verify.js +80 -125
  138. package/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +123 -209
  139. package/node_modules/jose/dist/webapi/lib/key.js +84 -136
  140. package/node_modules/jose/dist/webapi/lib/key_algorithm.js +13 -8
  141. package/node_modules/jose/dist/webapi/lib/key_descriptor.js +8 -6
  142. package/node_modules/jose/dist/webapi/lib/key_management.js +200 -231
  143. package/node_modules/jose/dist/webapi/lib/key_options.js +7 -5
  144. package/node_modules/jose/dist/webapi/lib/options.js +55 -68
  145. package/node_modules/jose/dist/webapi/lib/signing.js +18 -22
  146. package/node_modules/jose/dist/webapi/lib/type_checks.js +26 -29
  147. package/node_modules/jose/dist/webapi/util/base64url.js +26 -35
  148. package/node_modules/jose/dist/webapi/util/decode_jwt.js +32 -31
  149. package/node_modules/jose/dist/webapi/util/decode_protected_header.js +18 -23
  150. package/node_modules/jose/dist/webapi/util/errors.js +94 -84
  151. package/node_modules/jose/package.json +17 -81
  152. package/package.json +2 -2
  153. package/profiles/calendar/0.5.profile.json +190 -0
  154. package/profiles/charge/0.5.profile.json +210 -0
  155. package/profiles/customers/0.7.profile.json +157 -0
  156. package/profiles/deploy/0.9.profile.json +176 -0
  157. package/profiles/email/0.6.profile.json +208 -0
  158. package/profiles/index.json +9 -1
  159. package/profiles/publish/0.5.profile.json +186 -0
  160. package/profiles/purchase/0.5.profile.json +231 -0
  161. package/profiles/records/0.5.profile.json +117 -0
@@ -1,76 +1,65 @@
1
- import { createSignature } from '../../lib/jws_sign.js';
2
- import { JWSInvalid } from '../../util/errors.js';
3
- import { assertNotSet } from '../../lib/helpers.js';
1
+ import { createSignature } from "../../lib/jws_sign.js";
2
+ import { JWSInvalid } from "../../util/errors.js";
3
+ import { assertNotSet } from "../../lib/helpers.js";
4
4
  class IndividualSignature {
5
- #parent;
6
- state;
7
- constructor(sig, key, options) {
8
- this.#parent = sig;
9
- this.state = [undefined, undefined, key, options?.crit];
10
- }
11
- setProtectedHeader(protectedHeader) {
12
- assertNotSet(this.state[0], 'setProtectedHeader');
13
- this.state[0] = protectedHeader;
14
- return this;
15
- }
16
- setUnprotectedHeader(unprotectedHeader) {
17
- assertNotSet(this.state[1], 'setUnprotectedHeader');
18
- this.state[1] = unprotectedHeader;
19
- return this;
20
- }
21
- addSignature(...args) {
22
- return this.#parent.addSignature(...args);
23
- }
24
- sign(...args) {
25
- return this.#parent.sign(...args);
26
- }
27
- done() {
28
- return this.#parent;
29
- }
5
+ #parent;
6
+ state;
7
+ constructor(sig, key, options) {
8
+ this.#parent = sig, this.state = [void 0, void 0, key, options?.crit];
9
+ }
10
+ setProtectedHeader(protectedHeader) {
11
+ return assertNotSet(this.state[0], "setProtectedHeader"), this.state[0] = protectedHeader, this;
12
+ }
13
+ setUnprotectedHeader(unprotectedHeader) {
14
+ return assertNotSet(this.state[1], "setUnprotectedHeader"), this.state[1] = unprotectedHeader, this;
15
+ }
16
+ addSignature(...args) {
17
+ return this.#parent.addSignature(...args);
18
+ }
19
+ sign(...args) {
20
+ return this.#parent.sign(...args);
21
+ }
22
+ done() {
23
+ return this.#parent;
24
+ }
30
25
  }
31
- export class GeneralSign {
32
- #payload;
33
- #signatures = [];
34
- constructor(payload) {
35
- this.#payload = payload;
36
- }
37
- addSignature(key, options) {
38
- const signature = new IndividualSignature(this, key, options);
39
- this.#signatures.push(signature);
40
- return signature;
41
- }
42
- async sign() {
43
- if (!this.#signatures.length) {
44
- throw new JWSInvalid('at least one signature must be added');
45
- }
46
- if (!(this.#payload instanceof Uint8Array)) {
47
- throw new TypeError('payload must be an instance of Uint8Array');
48
- }
49
- const jws = {
50
- signatures: [],
51
- payload: '',
52
- };
53
- const encoded = [];
54
- let b64;
55
- for (let i = 0; i < this.#signatures.length; i++) {
56
- const signature = this.#signatures[i];
57
- const [protectedHeader, unprotectedHeader, key, crit] = signature.state;
58
- const [{ payload, ...rest }, signatureB64] = await createSignature({
59
- payload: this.#payload,
60
- protectedHeader,
61
- unprotectedHeader,
62
- crit,
63
- encoded,
64
- }, key);
65
- if (b64 === undefined) {
66
- b64 = signatureB64;
67
- jws.payload = payload;
68
- }
69
- else if (b64 !== signatureB64) {
70
- throw new JWSInvalid('inconsistent use of JWS Unencoded Payload (RFC7797)');
71
- }
72
- jws.signatures.push(rest);
73
- }
74
- return jws;
26
+ class GeneralSign {
27
+ #payload;
28
+ #signatures = [];
29
+ constructor(payload) {
30
+ this.#payload = payload;
31
+ }
32
+ addSignature(key, options) {
33
+ const signature = new IndividualSignature(this, key, options);
34
+ return this.#signatures.push(signature), signature;
35
+ }
36
+ async sign() {
37
+ if (!this.#signatures.length)
38
+ throw new JWSInvalid("at least one signature must be added");
39
+ if (!(this.#payload instanceof Uint8Array))
40
+ throw new TypeError("payload must be an instance of Uint8Array");
41
+ const jws = {
42
+ signatures: [],
43
+ payload: ""
44
+ }, encoded = [];
45
+ let b64;
46
+ for (let i = 0; i < this.#signatures.length; i++) {
47
+ const signature = this.#signatures[i], [protectedHeader, unprotectedHeader, key, crit] = signature.state, [{ payload, ...rest }, signatureB64] = await createSignature({
48
+ payload: this.#payload,
49
+ protectedHeader,
50
+ unprotectedHeader,
51
+ crit,
52
+ encoded
53
+ }, key);
54
+ if (b64 === void 0)
55
+ b64 = signatureB64, jws.payload = payload;
56
+ else if (b64 !== signatureB64)
57
+ throw new JWSInvalid("inconsistent use of JWS Unencoded Payload (RFC7797)");
58
+ jws.signatures.push(rest);
75
59
  }
60
+ return jws;
61
+ }
76
62
  }
63
+ export {
64
+ GeneralSign
65
+ };
@@ -1,74 +1,50 @@
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';
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
4
  function snapshotSignature(signature, payload) {
5
- try {
6
- const jws = snapshotJws(signature, [payload]);
7
- const { protected: encodedProtected, header, signature: encodedSignature } = jws;
8
- if (encodedProtected === undefined && header === undefined)
9
- return undefined;
10
- if (encodedProtected !== undefined && typeof encodedProtected !== 'string')
11
- return undefined;
12
- if (typeof encodedSignature !== 'string')
13
- return undefined;
14
- if (header !== undefined && !isObject(header))
15
- return undefined;
16
- const protectedHeader = parseProtectedHeader(encodedProtected);
17
- const { b64, crit } = protectedHeader;
18
- return [
19
- jws,
20
- protectedHeader,
21
- Array.isArray(crit) && crit.includes('b64')
22
- ? typeof b64 === 'boolean'
23
- ? b64
24
- ? 1
25
- : 2
26
- : 0
27
- : 1,
28
- ];
29
- }
30
- catch {
31
- return undefined;
32
- }
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
+ }
33
18
  }
34
- export async function generalVerify(jws, key, options) {
35
- if (!isObject(jws)) {
36
- throw new JWSInvalid('General JWS must be an object');
37
- }
38
- const { signatures, payload: inputPayload } = jws;
39
- if (!Array.isArray(signatures)) {
40
- throw new JWSInvalid('JWS Signatures missing or incorrect type');
41
- }
42
- const signatureEntries = Array.from(signatures);
43
- if (!signatureEntries.every(isObject)) {
44
- throw new JWSInvalid('JWS Signatures missing or incorrect type');
45
- }
46
- let shared;
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)
47
42
  try {
48
- if (inputPayload === undefined)
49
- throw new Error();
50
- shared = prepareVerify(options);
51
- }
52
- catch {
53
- throw new JWSSignatureVerificationFailed();
54
- }
55
- const payload = inputPayload instanceof Uint8Array ? new Uint8Array(inputPayload) : inputPayload;
56
- const candidates = signatureEntries
57
- .map((signature) => snapshotSignature(signature, payload))
58
- .filter((candidate) => candidate !== undefined);
59
- let modes = 0;
60
- for (const [, , mode] of candidates) {
61
- modes |= mode;
62
- if (modes === 3) {
63
- throw new JWSInvalid('inconsistent use of JWS Unencoded Payload (RFC7797)');
64
- }
43
+ return verifyResult(candidate[0], await verifySignature(candidate[0], shared, key, encodeJsonUnencodedPayload, candidate[1]));
44
+ } catch {
65
45
  }
66
- for (const candidate of candidates) {
67
- try {
68
- return verifyResult(candidate[0], await verifySignature(candidate[0], shared, key, encodeJsonUnencodedPayload, candidate[1]));
69
- }
70
- catch {
71
- }
72
- }
73
- throw new JWSSignatureVerificationFailed();
46
+ throw new JWSSignatureVerificationFailed();
74
47
  }
48
+ export {
49
+ generalVerify
50
+ };
@@ -1,21 +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
- for (const claim of ['iss', 'sub', 'aud']) {
9
- if (protectedHeader[claim] !== undefined &&
10
- (claim === 'aud'
11
- ? JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud)
12
- : protectedHeader[claim] !== payload[claim])) {
13
- throw new JWTClaimValidationFailed(`replicated "${claim}" claim header parameter mismatch`, payload, claim, 'mismatch');
14
- }
15
- }
16
- const result = { payload, protectedHeader };
17
- if (typeof key === 'function') {
18
- return { ...result, key: decrypted[2] };
19
- }
20
- 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;
21
11
  }
12
+ export {
13
+ jwtDecrypt
14
+ };
@@ -1,72 +1,59 @@
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';
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
4
  const EncryptJWT_base = JWTClaimsBuilder;
5
- export class EncryptJWT extends EncryptJWT_base {
6
- #cek;
7
- #iv;
8
- #keyManagementParameters;
9
- #protectedHeader;
10
- #replicateIssuerAsHeader;
11
- #replicateSubjectAsHeader;
12
- #replicateAudienceAsHeader;
13
- setProtectedHeader(protectedHeader) {
14
- assertNotSet(this.#protectedHeader, 'setProtectedHeader');
15
- this.#protectedHeader = protectedHeader;
16
- return this;
17
- }
18
- setKeyManagementParameters(parameters) {
19
- assertNotSet(this.#keyManagementParameters, 'setKeyManagementParameters');
20
- this.#keyManagementParameters = parameters;
21
- return this;
22
- }
23
- setContentEncryptionKey(cek) {
24
- assertNotSet(this.#cek, 'setContentEncryptionKey');
25
- this.#cek = cek;
26
- return this;
27
- }
28
- setInitializationVector(iv) {
29
- assertNotSet(this.#iv, 'setInitializationVector');
30
- this.#iv = iv;
31
- return this;
32
- }
33
- replicateIssuerAsHeader() {
34
- this.#replicateIssuerAsHeader = true;
35
- return this;
36
- }
37
- replicateSubjectAsHeader() {
38
- this.#replicateSubjectAsHeader = true;
39
- return this;
40
- }
41
- replicateAudienceAsHeader() {
42
- this.#replicateAudienceAsHeader = true;
43
- return this;
44
- }
45
- async encrypt(key, options) {
46
- const plaintext = jwtData(this);
47
- if (this.#protectedHeader &&
48
- (this.#replicateIssuerAsHeader ||
49
- this.#replicateSubjectAsHeader ||
50
- this.#replicateAudienceAsHeader)) {
51
- this.#protectedHeader = {
52
- ...this.#protectedHeader,
53
- iss: this.#replicateIssuerAsHeader ? jwtClaim(this, 'iss') : undefined,
54
- sub: this.#replicateSubjectAsHeader ? jwtClaim(this, 'sub') : undefined,
55
- aud: this.#replicateAudienceAsHeader ? jwtClaim(this, 'aud') : undefined,
56
- };
57
- }
58
- const jwe = await createJWE([
59
- plaintext,
60
- this.#protectedHeader,
61
- undefined,
62
- undefined,
63
- undefined,
64
- this.#cek,
65
- this.#iv,
66
- this.#keyManagementParameters,
67
- undefined,
68
- false,
69
- ], key, options);
70
- return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join('.');
71
- }
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
+ }
72
56
  }
57
+ export {
58
+ EncryptJWT
59
+ };
@@ -1,18 +1,19 @@
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';
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
5
  const SignJWT_base = JWTClaimsBuilder;
6
- export class SignJWT extends SignJWT_base {
7
- #protectedHeader;
8
- setProtectedHeader(protectedHeader) {
9
- assertNotSet(this.#protectedHeader, 'setProtectedHeader');
10
- this.#protectedHeader = protectedHeader;
11
- return this;
12
- }
13
- async sign(key, options) {
14
- return createCompactSignature(jwtData(this), this.#protectedHeader, options?.crit, key, () => {
15
- throw new JWTInvalid('JWTs MUST NOT use unencoded payload');
16
- });
17
- }
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
+ }
18
16
  }
17
+ export {
18
+ SignJWT
19
+ };
@@ -1,43 +1,35 @@
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';
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
6
  const UnsecuredJWT_base = JWTClaimsBuilder;
7
- export class UnsecuredJWT extends UnsecuredJWT_base {
8
- encode() {
9
- const header = b64u.encode(JSON.stringify({ alg: 'none' }));
10
- const payload = b64u.encode(jwtData(this));
11
- return `${header}.${payload}.`;
12
- }
13
- static decode(jwt, options) {
14
- if (typeof jwt !== 'string') {
15
- throw new JWTInvalid('Unsecured JWT must be a string');
16
- }
17
- const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split('.');
18
- if (length !== 3 || signature !== '') {
19
- throw new JWTInvalid('Invalid Unsecured JWT');
20
- }
21
- let header;
22
- let b64;
23
- try {
24
- header = parseJoseHeader(encodedHeader, JWSInvalid, 'JWS Protected Header is invalid');
25
- const extensions = validateCrit(JWSInvalid, JWS_RECOGNIZED, undefined, header, header);
26
- b64 = validateB64(header, extensions);
27
- }
28
- catch (cause) {
29
- if (!(cause instanceof JWSInvalid)) {
30
- throw cause;
31
- }
32
- throw new JWTInvalid('Invalid Unsecured JWT', { cause });
33
- }
34
- if (header.alg !== 'none') {
35
- throw new JWTInvalid('Invalid Unsecured JWT');
36
- }
37
- if (!b64) {
38
- throw new JWTInvalid('JWTs MUST NOT use unencoded payload');
39
- }
40
- const payload = validateClaimsSet(header, decodeBase64url(encodedPayload, 'payload', JWTInvalid), options);
41
- return { payload, header };
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;
42
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
+ }
43
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
+ };