@opentdf/sdk 0.9.0-beta.91 → 0.9.0-beta.93

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 (182) hide show
  1. package/dist/cjs/src/access/access-fetch.js +1 -2
  2. package/dist/cjs/src/access/access-rpc.js +1 -3
  3. package/dist/cjs/src/access.js +1 -14
  4. package/dist/cjs/src/auth/auth.js +13 -10
  5. package/dist/cjs/src/auth/dpop.js +121 -0
  6. package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +37 -3
  7. package/dist/cjs/src/auth/oidc-externaljwt-provider.js +37 -3
  8. package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +37 -3
  9. package/dist/cjs/src/auth/oidc.js +10 -8
  10. package/dist/cjs/src/auth/providers.js +35 -12
  11. package/dist/cjs/src/crypto/index.js +16 -2
  12. package/dist/cjs/src/crypto/pemPublicToCrypto.js +17 -11
  13. package/dist/cjs/src/opentdf.js +40 -10
  14. package/dist/cjs/tdf3/index.js +4 -2
  15. package/dist/cjs/tdf3/src/assertions.js +71 -31
  16. package/dist/cjs/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
  17. package/dist/cjs/tdf3/src/ciphers/symmetric-cipher-base.js +4 -2
  18. package/dist/cjs/tdf3/src/client/index.js +23 -33
  19. package/dist/cjs/tdf3/src/crypto/crypto-utils.js +12 -5
  20. package/dist/cjs/tdf3/src/crypto/declarations.js +1 -1
  21. package/dist/cjs/tdf3/src/crypto/index.js +849 -88
  22. package/dist/cjs/tdf3/src/crypto/jose/jwt-claims-set.js +11 -0
  23. package/dist/cjs/tdf3/src/crypto/jose/validate-crit.js +8 -0
  24. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/buffer_utils.js +41 -0
  25. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/epoch.js +6 -0
  26. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/is_object.js +21 -0
  27. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.js +112 -0
  28. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/secs.js +60 -0
  29. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/validate_crit.js +38 -0
  30. package/dist/cjs/tdf3/src/crypto/jose/vendor/util/errors.js +135 -0
  31. package/dist/cjs/tdf3/src/crypto/jwt.js +183 -0
  32. package/dist/cjs/tdf3/src/crypto/salt.js +14 -8
  33. package/dist/cjs/tdf3/src/models/encryption-information.js +17 -20
  34. package/dist/cjs/tdf3/src/models/key-access.js +43 -63
  35. package/dist/cjs/tdf3/src/tdf.js +75 -75
  36. package/dist/cjs/tdf3/src/utils/index.js +5 -39
  37. package/dist/types/src/access/access-fetch.d.ts.map +1 -1
  38. package/dist/types/src/access/access-rpc.d.ts.map +1 -1
  39. package/dist/types/src/access.d.ts +0 -5
  40. package/dist/types/src/access.d.ts.map +1 -1
  41. package/dist/types/src/auth/auth.d.ts +9 -6
  42. package/dist/types/src/auth/auth.d.ts.map +1 -1
  43. package/dist/types/src/auth/dpop.d.ts +60 -0
  44. package/dist/types/src/auth/dpop.d.ts.map +1 -0
  45. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts +3 -2
  46. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts.map +1 -1
  47. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts +3 -2
  48. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts.map +1 -1
  49. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts +3 -2
  50. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts.map +1 -1
  51. package/dist/types/src/auth/oidc.d.ts +6 -4
  52. package/dist/types/src/auth/oidc.d.ts.map +1 -1
  53. package/dist/types/src/auth/providers.d.ts +5 -4
  54. package/dist/types/src/auth/providers.d.ts.map +1 -1
  55. package/dist/types/src/crypto/index.d.ts +2 -1
  56. package/dist/types/src/crypto/index.d.ts.map +1 -1
  57. package/dist/types/src/crypto/pemPublicToCrypto.d.ts +18 -0
  58. package/dist/types/src/crypto/pemPublicToCrypto.d.ts.map +1 -1
  59. package/dist/types/src/opentdf.d.ts +13 -4
  60. package/dist/types/src/opentdf.d.ts.map +1 -1
  61. package/dist/types/tdf3/index.d.ts +3 -3
  62. package/dist/types/tdf3/index.d.ts.map +1 -1
  63. package/dist/types/tdf3/src/assertions.d.ts +23 -8
  64. package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
  65. package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts +3 -3
  66. package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts.map +1 -1
  67. package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts +4 -4
  68. package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts.map +1 -1
  69. package/dist/types/tdf3/src/client/builders.d.ts +2 -2
  70. package/dist/types/tdf3/src/client/builders.d.ts.map +1 -1
  71. package/dist/types/tdf3/src/client/index.d.ts +6 -5
  72. package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
  73. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts +14 -4
  74. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts.map +1 -1
  75. package/dist/types/tdf3/src/crypto/declarations.d.ts +283 -18
  76. package/dist/types/tdf3/src/crypto/declarations.d.ts.map +1 -1
  77. package/dist/types/tdf3/src/crypto/index.d.ts +105 -28
  78. package/dist/types/tdf3/src/crypto/index.d.ts.map +1 -1
  79. package/dist/types/tdf3/src/crypto/jose/jwt-claims-set.d.ts +3 -0
  80. package/dist/types/tdf3/src/crypto/jose/jwt-claims-set.d.ts.map +1 -0
  81. package/dist/types/tdf3/src/crypto/jose/validate-crit.d.ts +5 -0
  82. package/dist/types/tdf3/src/crypto/jose/validate-crit.d.ts.map +1 -0
  83. package/dist/types/tdf3/src/crypto/jose/vendor/lib/buffer_utils.d.ts +6 -0
  84. package/dist/types/tdf3/src/crypto/jose/vendor/lib/buffer_utils.d.ts.map +1 -0
  85. package/dist/types/tdf3/src/crypto/jose/vendor/lib/epoch.d.ts +3 -0
  86. package/dist/types/tdf3/src/crypto/jose/vendor/lib/epoch.d.ts.map +1 -0
  87. package/dist/types/tdf3/src/crypto/jose/vendor/lib/is_object.d.ts +3 -0
  88. package/dist/types/tdf3/src/crypto/jose/vendor/lib/is_object.d.ts.map +1 -0
  89. package/dist/types/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.d.ts +3 -0
  90. package/dist/types/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.d.ts.map +1 -0
  91. package/dist/types/tdf3/src/crypto/jose/vendor/lib/secs.d.ts +3 -0
  92. package/dist/types/tdf3/src/crypto/jose/vendor/lib/secs.d.ts.map +1 -0
  93. package/dist/types/tdf3/src/crypto/jose/vendor/lib/validate_crit.d.ts +3 -0
  94. package/dist/types/tdf3/src/crypto/jose/vendor/lib/validate_crit.d.ts.map +1 -0
  95. package/dist/types/tdf3/src/crypto/jose/vendor/util/errors.d.ts +76 -0
  96. package/dist/types/tdf3/src/crypto/jose/vendor/util/errors.d.ts.map +1 -0
  97. package/dist/types/tdf3/src/crypto/jwt.d.ts +76 -0
  98. package/dist/types/tdf3/src/crypto/jwt.d.ts.map +1 -0
  99. package/dist/types/tdf3/src/crypto/salt.d.ts +6 -1
  100. package/dist/types/tdf3/src/crypto/salt.d.ts.map +1 -1
  101. package/dist/types/tdf3/src/models/encryption-information.d.ts +4 -4
  102. package/dist/types/tdf3/src/models/encryption-information.d.ts.map +1 -1
  103. package/dist/types/tdf3/src/models/key-access.d.ts +8 -5
  104. package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -1
  105. package/dist/types/tdf3/src/tdf.d.ts +8 -8
  106. package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
  107. package/dist/types/tdf3/src/utils/index.d.ts +4 -3
  108. package/dist/types/tdf3/src/utils/index.d.ts.map +1 -1
  109. package/dist/web/src/access/access-fetch.js +3 -4
  110. package/dist/web/src/access/access-rpc.js +3 -5
  111. package/dist/web/src/access.js +1 -13
  112. package/dist/web/src/auth/auth.js +13 -10
  113. package/dist/web/src/auth/dpop.js +118 -0
  114. package/dist/web/src/auth/oidc-clientcredentials-provider.js +4 -3
  115. package/dist/web/src/auth/oidc-externaljwt-provider.js +4 -3
  116. package/dist/web/src/auth/oidc-refreshtoken-provider.js +4 -3
  117. package/dist/web/src/auth/oidc.js +11 -9
  118. package/dist/web/src/auth/providers.js +13 -12
  119. package/dist/web/src/crypto/index.js +4 -2
  120. package/dist/web/src/crypto/pemPublicToCrypto.js +11 -9
  121. package/dist/web/src/opentdf.js +7 -10
  122. package/dist/web/tdf3/index.js +3 -2
  123. package/dist/web/tdf3/src/assertions.js +71 -31
  124. package/dist/web/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
  125. package/dist/web/tdf3/src/ciphers/symmetric-cipher-base.js +4 -2
  126. package/dist/web/tdf3/src/client/index.js +25 -35
  127. package/dist/web/tdf3/src/crypto/crypto-utils.js +12 -5
  128. package/dist/web/tdf3/src/crypto/declarations.js +1 -1
  129. package/dist/web/tdf3/src/crypto/index.js +830 -84
  130. package/dist/web/tdf3/src/crypto/jose/jwt-claims-set.js +5 -0
  131. package/dist/web/tdf3/src/crypto/jose/validate-crit.js +3 -0
  132. package/dist/web/tdf3/src/crypto/jose/vendor/lib/buffer_utils.js +35 -0
  133. package/dist/web/tdf3/src/crypto/jose/vendor/lib/epoch.js +4 -0
  134. package/dist/web/tdf3/src/crypto/jose/vendor/lib/is_object.js +19 -0
  135. package/dist/web/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.js +107 -0
  136. package/dist/web/tdf3/src/crypto/jose/vendor/lib/secs.js +58 -0
  137. package/dist/web/tdf3/src/crypto/jose/vendor/lib/validate_crit.js +36 -0
  138. package/dist/web/tdf3/src/crypto/jose/vendor/util/errors.js +117 -0
  139. package/dist/web/tdf3/src/crypto/jwt.js +174 -0
  140. package/dist/web/tdf3/src/crypto/salt.js +13 -7
  141. package/dist/web/tdf3/src/models/encryption-information.js +11 -14
  142. package/dist/web/tdf3/src/models/key-access.js +44 -31
  143. package/dist/web/tdf3/src/tdf.js +71 -71
  144. package/dist/web/tdf3/src/utils/index.js +5 -6
  145. package/package.json +11 -4
  146. package/src/access/access-fetch.ts +2 -8
  147. package/src/access/access-rpc.ts +0 -7
  148. package/src/access.ts +0 -17
  149. package/src/auth/auth.ts +21 -12
  150. package/src/auth/dpop.ts +222 -0
  151. package/src/auth/oidc-clientcredentials-provider.ts +23 -15
  152. package/src/auth/oidc-externaljwt-provider.ts +23 -15
  153. package/src/auth/oidc-refreshtoken-provider.ts +23 -15
  154. package/src/auth/oidc.ts +21 -10
  155. package/src/auth/providers.ts +46 -29
  156. package/src/crypto/index.ts +21 -1
  157. package/src/crypto/pemPublicToCrypto.ts +11 -9
  158. package/src/opentdf.ts +19 -14
  159. package/tdf3/index.ts +32 -5
  160. package/tdf3/src/assertions.ts +99 -30
  161. package/tdf3/src/ciphers/aes-gcm-cipher.ts +7 -2
  162. package/tdf3/src/ciphers/symmetric-cipher-base.ts +7 -4
  163. package/tdf3/src/client/builders.ts +2 -2
  164. package/tdf3/src/client/index.ts +60 -59
  165. package/tdf3/src/crypto/crypto-utils.ts +15 -8
  166. package/tdf3/src/crypto/declarations.ts +338 -22
  167. package/tdf3/src/crypto/index.ts +1021 -118
  168. package/tdf3/src/crypto/jose/jwt-claims-set.ts +10 -0
  169. package/tdf3/src/crypto/jose/validate-crit.ts +9 -0
  170. package/tdf3/src/crypto/jose/vendor/lib/buffer_utils.ts +34 -0
  171. package/tdf3/src/crypto/jose/vendor/lib/epoch.ts +3 -0
  172. package/tdf3/src/crypto/jose/vendor/lib/is_object.ts +18 -0
  173. package/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.ts +106 -0
  174. package/tdf3/src/crypto/jose/vendor/lib/secs.ts +57 -0
  175. package/tdf3/src/crypto/jose/vendor/lib/validate_crit.ts +35 -0
  176. package/tdf3/src/crypto/jose/vendor/util/errors.ts +101 -0
  177. package/tdf3/src/crypto/jwt.ts +256 -0
  178. package/tdf3/src/crypto/salt.ts +16 -8
  179. package/tdf3/src/models/encryption-information.ts +14 -21
  180. package/tdf3/src/models/key-access.ts +57 -41
  181. package/tdf3/src/tdf.ts +110 -93
  182. package/tdf3/src/utils/index.ts +5 -6
@@ -0,0 +1,5 @@
1
+ import jwtClaimsSet from './vendor/lib/jwt_claims_set.js';
2
+ export default function joseJwtClaimsSet(protectedHeader, encodedPayload, options) {
3
+ return jwtClaimsSet(protectedHeader, encodedPayload, options);
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LWNsYWltcy1zZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy9jcnlwdG8vam9zZS9qd3QtY2xhaW1zLXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFlBQVksTUFBTSxnQ0FBZ0MsQ0FBQztBQUUxRCxNQUFNLENBQUMsT0FBTyxVQUFVLGdCQUFnQixDQUN0QyxlQUFvQyxFQUNwQyxjQUEwQixFQUMxQixPQUEwQjtJQUUxQixPQUFPLFlBQVksQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBZSxDQUFDO0FBQzlFLENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ import validateCrit from './vendor/lib/validate_crit.js';
2
+ export default validateCrit;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtY3JpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL2NyeXB0by9qb3NlL3ZhbGlkYXRlLWNyaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLE1BQU0sK0JBQStCLENBQUM7QUFFekQsZUFBZSxZQU1DLENBQUMifQ==
@@ -0,0 +1,35 @@
1
+ // @ts-nocheck
2
+ // Generated from jose@6.0.8. Do not edit directly.
3
+ export const encoder = new TextEncoder();
4
+ export const decoder = new TextDecoder();
5
+ const MAX_INT32 = 2 ** 32;
6
+ export function concat(...buffers) {
7
+ const size = buffers.reduce((acc, { length }) => acc + length, 0);
8
+ const buf = new Uint8Array(size);
9
+ let i = 0;
10
+ for (const buffer of buffers) {
11
+ buf.set(buffer, i);
12
+ i += buffer.length;
13
+ }
14
+ return buf;
15
+ }
16
+ function writeUInt32BE(buf, value, offset) {
17
+ if (value < 0 || value >= MAX_INT32) {
18
+ throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);
19
+ }
20
+ buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);
21
+ }
22
+ export function uint64be(value) {
23
+ const high = Math.floor(value / MAX_INT32);
24
+ const low = value % MAX_INT32;
25
+ const buf = new Uint8Array(8);
26
+ writeUInt32BE(buf, high, 0);
27
+ writeUInt32BE(buf, low, 4);
28
+ return buf;
29
+ }
30
+ export function uint32be(value) {
31
+ const buf = new Uint8Array(4);
32
+ writeUInt32BE(buf, value);
33
+ return buf;
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvY3J5cHRvL2pvc2UvdmVuZG9yL2xpYi9idWZmZXJfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUN6QyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFCLE1BQU0sVUFBVSxNQUFNLENBQUMsR0FBRyxPQUFPO0lBQzdCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFDRCxTQUFTLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU07SUFDckMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksVUFBVSxDQUFDLDZCQUE2QixTQUFTLEdBQUcsQ0FBQyxjQUFjLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFLEtBQUssS0FBSyxFQUFFLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUNELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBSztJQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQztJQUMzQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsU0FBUyxDQUFDO0lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVCLGFBQWEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQUNELE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBSztJQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixhQUFhLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFCLE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyJ9
@@ -0,0 +1,4 @@
1
+ // @ts-nocheck
2
+ // Generated from jose@6.0.8. Do not edit directly.
3
+ export default (date) => Math.floor(date.getTime() / 1000);
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy9jcnlwdG8vam9zZS92ZW5kb3IvbGliL2Vwb2NoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxtREFBbUQ7QUFDbkQsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMifQ==
@@ -0,0 +1,19 @@
1
+ // @ts-nocheck
2
+ // Generated from jose@6.0.8. Do not edit directly.
3
+ function isObjectLike(value) {
4
+ return typeof value === 'object' && value !== null;
5
+ }
6
+ export default (input) => {
7
+ if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {
8
+ return false;
9
+ }
10
+ if (Object.getPrototypeOf(input) === null) {
11
+ return true;
12
+ }
13
+ let proto = input;
14
+ while (Object.getPrototypeOf(proto) !== null) {
15
+ proto = Object.getPrototypeOf(proto);
16
+ }
17
+ return Object.getPrototypeOf(input) === proto;
18
+ };
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNfb2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvY3J5cHRvL2pvc2UvdmVuZG9yL2xpYi9pc19vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLG1EQUFtRDtBQUNuRCxTQUFTLFlBQVksQ0FBQyxLQUFLO0lBQ3ZCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDdkQsQ0FBQztBQUNELGVBQWUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RGLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNsQixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDM0MsS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUM7QUFDbEQsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,107 @@
1
+ // @ts-nocheck
2
+ // Generated from jose@6.0.8. Do not edit directly.
3
+ import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';
4
+ import { decoder } from './buffer_utils.js';
5
+ import epoch from './epoch.js';
6
+ import secs from './secs.js';
7
+ import isObject from './is_object.js';
8
+ const normalizeTyp = (value) => value.toLowerCase().replace(/^application\//, '');
9
+ const checkAudiencePresence = (audPayload, audOption) => {
10
+ if (typeof audPayload === 'string') {
11
+ return audOption.includes(audPayload);
12
+ }
13
+ if (Array.isArray(audPayload)) {
14
+ return audOption.some(Set.prototype.has.bind(new Set(audPayload)));
15
+ }
16
+ return false;
17
+ };
18
+ export default (protectedHeader, encodedPayload, options = {}) => {
19
+ let payload;
20
+ try {
21
+ payload = JSON.parse(decoder.decode(encodedPayload));
22
+ }
23
+ catch {
24
+ }
25
+ if (!isObject(payload)) {
26
+ throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');
27
+ }
28
+ const { typ } = options;
29
+ if (typ &&
30
+ (typeof protectedHeader.typ !== 'string' ||
31
+ normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {
32
+ throw new JWTClaimValidationFailed('unexpected "typ" JWT header value', payload, 'typ', 'check_failed');
33
+ }
34
+ const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;
35
+ const presenceCheck = [...requiredClaims];
36
+ if (maxTokenAge !== undefined)
37
+ presenceCheck.push('iat');
38
+ if (audience !== undefined)
39
+ presenceCheck.push('aud');
40
+ if (subject !== undefined)
41
+ presenceCheck.push('sub');
42
+ if (issuer !== undefined)
43
+ presenceCheck.push('iss');
44
+ for (const claim of new Set(presenceCheck.reverse())) {
45
+ if (!(claim in payload)) {
46
+ throw new JWTClaimValidationFailed(`missing required "${claim}" claim`, payload, claim, 'missing');
47
+ }
48
+ }
49
+ if (issuer &&
50
+ !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {
51
+ throw new JWTClaimValidationFailed('unexpected "iss" claim value', payload, 'iss', 'check_failed');
52
+ }
53
+ if (subject && payload.sub !== subject) {
54
+ throw new JWTClaimValidationFailed('unexpected "sub" claim value', payload, 'sub', 'check_failed');
55
+ }
56
+ if (audience &&
57
+ !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {
58
+ throw new JWTClaimValidationFailed('unexpected "aud" claim value', payload, 'aud', 'check_failed');
59
+ }
60
+ let tolerance;
61
+ switch (typeof options.clockTolerance) {
62
+ case 'string':
63
+ tolerance = secs(options.clockTolerance);
64
+ break;
65
+ case 'number':
66
+ tolerance = options.clockTolerance;
67
+ break;
68
+ case 'undefined':
69
+ tolerance = 0;
70
+ break;
71
+ default:
72
+ throw new TypeError('Invalid clockTolerance option type');
73
+ }
74
+ const { currentDate } = options;
75
+ const now = epoch(currentDate || new Date());
76
+ if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {
77
+ throw new JWTClaimValidationFailed('"iat" claim must be a number', payload, 'iat', 'invalid');
78
+ }
79
+ if (payload.nbf !== undefined) {
80
+ if (typeof payload.nbf !== 'number') {
81
+ throw new JWTClaimValidationFailed('"nbf" claim must be a number', payload, 'nbf', 'invalid');
82
+ }
83
+ if (payload.nbf > now + tolerance) {
84
+ throw new JWTClaimValidationFailed('"nbf" claim timestamp check failed', payload, 'nbf', 'check_failed');
85
+ }
86
+ }
87
+ if (payload.exp !== undefined) {
88
+ if (typeof payload.exp !== 'number') {
89
+ throw new JWTClaimValidationFailed('"exp" claim must be a number', payload, 'exp', 'invalid');
90
+ }
91
+ if (payload.exp <= now - tolerance) {
92
+ throw new JWTExpired('"exp" claim timestamp check failed', payload, 'exp', 'check_failed');
93
+ }
94
+ }
95
+ if (maxTokenAge) {
96
+ const age = now - payload.iat;
97
+ const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);
98
+ if (age - tolerance > max) {
99
+ throw new JWTExpired('"iat" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');
100
+ }
101
+ if (age < 0 - tolerance) {
102
+ throw new JWTClaimValidationFailed('"iat" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');
103
+ }
104
+ }
105
+ return payload;
106
+ };
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0X2NsYWltc19zZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy9jcnlwdG8vam9zZS92ZW5kb3IvbGliL2p3dF9jbGFpbXNfc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxtREFBbUQ7QUFDbkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRixNQUFNLHFCQUFxQixHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUFFO0lBQ3BELElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDakMsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0YsZUFBZSxDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsT0FBTyxH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
@@ -0,0 +1,58 @@
1
+ // @ts-nocheck
2
+ // Generated from jose@6.0.8. Do not edit directly.
3
+ const minute = 60;
4
+ const hour = minute * 60;
5
+ const day = hour * 24;
6
+ const week = day * 7;
7
+ const year = day * 365.25;
8
+ const REGEX = /^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;
9
+ export default (str) => {
10
+ const matched = REGEX.exec(str);
11
+ if (!matched || (matched[4] && matched[1])) {
12
+ throw new TypeError('Invalid time period format');
13
+ }
14
+ const value = parseFloat(matched[2]);
15
+ const unit = matched[3].toLowerCase();
16
+ let numericDate;
17
+ switch (unit) {
18
+ case 'sec':
19
+ case 'secs':
20
+ case 'second':
21
+ case 'seconds':
22
+ case 's':
23
+ numericDate = Math.round(value);
24
+ break;
25
+ case 'minute':
26
+ case 'minutes':
27
+ case 'min':
28
+ case 'mins':
29
+ case 'm':
30
+ numericDate = Math.round(value * minute);
31
+ break;
32
+ case 'hour':
33
+ case 'hours':
34
+ case 'hr':
35
+ case 'hrs':
36
+ case 'h':
37
+ numericDate = Math.round(value * hour);
38
+ break;
39
+ case 'day':
40
+ case 'days':
41
+ case 'd':
42
+ numericDate = Math.round(value * day);
43
+ break;
44
+ case 'week':
45
+ case 'weeks':
46
+ case 'w':
47
+ numericDate = Math.round(value * week);
48
+ break;
49
+ default:
50
+ numericDate = Math.round(value * year);
51
+ break;
52
+ }
53
+ if (matched[1] === '-' || matched[4] === 'ago') {
54
+ return -numericDate;
55
+ }
56
+ return numericDate;
57
+ };
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL2NyeXB0by9qb3NlL3ZlbmRvci9saWIvc2Vjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBQ2QsbURBQW1EO0FBQ25ELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQixNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNyQixNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0FBQzFCLE1BQU0sS0FBSyxHQUFHLG1JQUFtSSxDQUFDO0FBQ2xKLGVBQWUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUNuQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksU0FBUyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsSUFBSSxXQUFXLENBQUM7SUFDaEIsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNYLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssU0FBUyxDQUFDO1FBQ2YsS0FBSyxHQUFHO1lBQ0osV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsTUFBTTtRQUNWLEtBQUssUUFBUSxDQUFDO1FBQ2QsS0FBSyxTQUFTLENBQUM7UUFDZixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxHQUFHO1lBQ0osV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLE1BQU07UUFDVixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxJQUFJLENBQUM7UUFDVixLQUFLLEtBQUssQ0FBQztRQUNYLEtBQUssR0FBRztZQUNKLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN2QyxNQUFNO1FBQ1YsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssR0FBRztZQUNKLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN0QyxNQUFNO1FBQ1YsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE9BQU8sQ0FBQztRQUNiLEtBQUssR0FBRztZQUNKLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN2QyxNQUFNO1FBQ1Y7WUFDSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDdkMsTUFBTTtJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzdDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDeEIsQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyJ9
@@ -0,0 +1,36 @@
1
+ // @ts-nocheck
2
+ // Generated from jose@6.0.8. Do not edit directly.
3
+ import { JOSENotSupported } from '../util/errors.js';
4
+ export default (Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) => {
5
+ if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {
6
+ throw new Err('"crit" (Critical) Header Parameter MUST be integrity protected');
7
+ }
8
+ if (!protectedHeader || protectedHeader.crit === undefined) {
9
+ return new Set();
10
+ }
11
+ if (!Array.isArray(protectedHeader.crit) ||
12
+ protectedHeader.crit.length === 0 ||
13
+ protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {
14
+ throw new Err('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');
15
+ }
16
+ let recognized;
17
+ if (recognizedOption !== undefined) {
18
+ recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);
19
+ }
20
+ else {
21
+ recognized = recognizedDefault;
22
+ }
23
+ for (const parameter of protectedHeader.crit) {
24
+ if (!recognized.has(parameter)) {
25
+ throw new JOSENotSupported(`Extension Header Parameter "${parameter}" is not recognized`);
26
+ }
27
+ if (joseHeader[parameter] === undefined) {
28
+ throw new Err(`Extension Header Parameter "${parameter}" is missing`);
29
+ }
30
+ if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {
31
+ throw new Err(`Extension Header Parameter "${parameter}" MUST be integrity protected`);
32
+ }
33
+ }
34
+ return new Set(protectedHeader.crit);
35
+ };
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVfY3JpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL2NyeXB0by9qb3NlL3ZlbmRvci9saWIvdmFsaWRhdGVfY3JpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBQ2QsbURBQW1EO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxlQUFlLENBQUMsR0FBRyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsRUFBRTtJQUNyRixJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLGVBQWUsRUFBRSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdkUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFDRCxJQUFJLENBQUMsZUFBZSxJQUFJLGVBQWUsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDekQsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1FBQ3BDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDakMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEYsTUFBTSxJQUFJLEdBQUcsQ0FBQyx1RkFBdUYsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQztJQUNmLElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDakMsVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztTQUNJLENBQUM7UUFDRixVQUFVLEdBQUcsaUJBQWlCLENBQUM7SUFDbkMsQ0FBQztJQUNELEtBQUssTUFBTSxTQUFTLElBQUksZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLGdCQUFnQixDQUFDLCtCQUErQixTQUFTLHFCQUFxQixDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxHQUFHLENBQUMsK0JBQStCLFNBQVMsY0FBYyxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEUsTUFBTSxJQUFJLEdBQUcsQ0FBQywrQkFBK0IsU0FBUywrQkFBK0IsQ0FBQyxDQUFDO1FBQzNGLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,117 @@
1
+ // @ts-nocheck
2
+ // Generated from jose@6.0.8. Do not edit directly.
3
+ export class JOSEError extends Error {
4
+ constructor(message, options) {
5
+ super(message, options);
6
+ this.code = 'ERR_JOSE_GENERIC';
7
+ this.name = this.constructor.name;
8
+ Error.captureStackTrace?.(this, this.constructor);
9
+ }
10
+ }
11
+ JOSEError.code = 'ERR_JOSE_GENERIC';
12
+ export class JWTClaimValidationFailed extends JOSEError {
13
+ constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {
14
+ super(message, { cause: { claim, reason, payload } });
15
+ this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';
16
+ this.claim = claim;
17
+ this.reason = reason;
18
+ this.payload = payload;
19
+ }
20
+ }
21
+ JWTClaimValidationFailed.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';
22
+ export class JWTExpired extends JOSEError {
23
+ constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {
24
+ super(message, { cause: { claim, reason, payload } });
25
+ this.code = 'ERR_JWT_EXPIRED';
26
+ this.claim = claim;
27
+ this.reason = reason;
28
+ this.payload = payload;
29
+ }
30
+ }
31
+ JWTExpired.code = 'ERR_JWT_EXPIRED';
32
+ export class JOSEAlgNotAllowed extends JOSEError {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';
36
+ }
37
+ }
38
+ JOSEAlgNotAllowed.code = 'ERR_JOSE_ALG_NOT_ALLOWED';
39
+ export class JOSENotSupported extends JOSEError {
40
+ constructor() {
41
+ super(...arguments);
42
+ this.code = 'ERR_JOSE_NOT_SUPPORTED';
43
+ }
44
+ }
45
+ JOSENotSupported.code = 'ERR_JOSE_NOT_SUPPORTED';
46
+ export class JWEDecryptionFailed extends JOSEError {
47
+ constructor(message = 'decryption operation failed', options) {
48
+ super(message, options);
49
+ this.code = 'ERR_JWE_DECRYPTION_FAILED';
50
+ }
51
+ }
52
+ JWEDecryptionFailed.code = 'ERR_JWE_DECRYPTION_FAILED';
53
+ export class JWEInvalid extends JOSEError {
54
+ constructor() {
55
+ super(...arguments);
56
+ this.code = 'ERR_JWE_INVALID';
57
+ }
58
+ }
59
+ JWEInvalid.code = 'ERR_JWE_INVALID';
60
+ export class JWSInvalid extends JOSEError {
61
+ constructor() {
62
+ super(...arguments);
63
+ this.code = 'ERR_JWS_INVALID';
64
+ }
65
+ }
66
+ JWSInvalid.code = 'ERR_JWS_INVALID';
67
+ export class JWTInvalid extends JOSEError {
68
+ constructor() {
69
+ super(...arguments);
70
+ this.code = 'ERR_JWT_INVALID';
71
+ }
72
+ }
73
+ JWTInvalid.code = 'ERR_JWT_INVALID';
74
+ export class JWKInvalid extends JOSEError {
75
+ constructor() {
76
+ super(...arguments);
77
+ this.code = 'ERR_JWK_INVALID';
78
+ }
79
+ }
80
+ JWKInvalid.code = 'ERR_JWK_INVALID';
81
+ export class JWKSInvalid extends JOSEError {
82
+ constructor() {
83
+ super(...arguments);
84
+ this.code = 'ERR_JWKS_INVALID';
85
+ }
86
+ }
87
+ JWKSInvalid.code = 'ERR_JWKS_INVALID';
88
+ export class JWKSNoMatchingKey extends JOSEError {
89
+ constructor(message = 'no applicable key found in the JSON Web Key Set', options) {
90
+ super(message, options);
91
+ this.code = 'ERR_JWKS_NO_MATCHING_KEY';
92
+ }
93
+ }
94
+ JWKSNoMatchingKey.code = 'ERR_JWKS_NO_MATCHING_KEY';
95
+ export class JWKSMultipleMatchingKeys extends JOSEError {
96
+ constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {
97
+ super(message, options);
98
+ this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';
99
+ }
100
+ }
101
+ Symbol.asyncIterator;
102
+ JWKSMultipleMatchingKeys.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';
103
+ export class JWKSTimeout extends JOSEError {
104
+ constructor(message = 'request timed out', options) {
105
+ super(message, options);
106
+ this.code = 'ERR_JWKS_TIMEOUT';
107
+ }
108
+ }
109
+ JWKSTimeout.code = 'ERR_JWKS_TIMEOUT';
110
+ export class JWSSignatureVerificationFailed extends JOSEError {
111
+ constructor(message = 'signature verification failed', options) {
112
+ super(message, options);
113
+ this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';
114
+ }
115
+ }
116
+ JWSSignatureVerificationFailed.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvY3J5cHRvL2pvc2UvdmVuZG9yL3V0aWwvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxtREFBbUQ7QUFDbkQsTUFBTSxPQUFPLFNBQVUsU0FBUSxLQUFLO0lBR2hDLFlBQVksT0FBTyxFQUFFLE9BQU87UUFDeEIsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUY1QixTQUFJLEdBQUcsa0JBQWtCLENBQUM7UUFHdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7O0FBTk0sY0FBSSxHQUFHLGtCQUFrQixBQUFyQixDQUFzQjtBQVFyQyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsU0FBUztJQU1uRCxZQUFZLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxHQUFHLGFBQWEsRUFBRSxNQUFNLEdBQUcsYUFBYTtRQUN2RSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFMMUQsU0FBSSxHQUFHLGlDQUFpQyxDQUFDO1FBTXJDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7O0FBVk0sNkJBQUksR0FBRyxpQ0FBaUMsQUFBcEMsQ0FBcUM7QUFZcEQsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFTO0lBTXJDLFlBQVksT0FBTyxFQUFFLE9BQU8s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
@@ -0,0 +1,174 @@
1
+ import { base64 } from '../../../src/encodings/index.js';
2
+ import { decodeProtectedHeader as joseDecodeProtectedHeader, errors as joseErrors, } from 'jose';
3
+ import jwtClaimsSet from './jose/jwt-claims-set.js';
4
+ import validateCrit from './jose/validate-crit.js';
5
+ /**
6
+ * Base64url encode data per RFC 4648 Section 5.
7
+ * Uses URL-safe alphabet (- and _ instead of + and /) with no padding.
8
+ * Exported for testing purposes.
9
+ */
10
+ export function base64urlEncode(data) {
11
+ if (typeof data === 'string') {
12
+ // Encode string to base64url
13
+ const bytes = new TextEncoder().encode(data);
14
+ return base64.encodeArrayBuffer(bytes.buffer, true); // urlSafe = true
15
+ }
16
+ else {
17
+ // Encode Uint8Array to base64url
18
+ const buffer = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
19
+ return base64.encodeArrayBuffer(buffer, true); // urlSafe = true
20
+ }
21
+ }
22
+ /**
23
+ * Helper to convert base64url to standard base64 with padding.
24
+ */
25
+ function base64urlToBase64(str) {
26
+ // Convert base64url to base64: replace - with +, _ with /
27
+ let b64 = str.replace(/-/g, '+').replace(/_/g, '/');
28
+ // Add padding if needed
29
+ const padding = (4 - (b64.length % 4)) % 4;
30
+ b64 += '='.repeat(padding);
31
+ return b64;
32
+ }
33
+ /**
34
+ * Base64url decode to Uint8Array per RFC 4648 Section 5.
35
+ */
36
+ function base64urlDecodeBytes(str) {
37
+ const b64 = base64urlToBase64(str);
38
+ return new Uint8Array(base64.decodeArrayBuffer(b64));
39
+ }
40
+ /**
41
+ * Decode the protected header from a JWT without verifying the signature.
42
+ * Useful for inspecting the header to determine key type before verification.
43
+ *
44
+ * @param token - The JWT string
45
+ * @returns The decoded header
46
+ * @throws Error if the token is malformed or uses alg "none"
47
+ */
48
+ export function decodeProtectedHeader(token) {
49
+ return joseDecodeProtectedHeader(token);
50
+ }
51
+ /**
52
+ * Sign a JWT using CryptoService. Replaces jose SignJWT.
53
+ *
54
+ * Implementation:
55
+ * 1. Base64url encode header and payload as JSON
56
+ * 2. Create signing input: `${headerB64}.${payloadB64}`
57
+ * 3. Sign via cryptoService.sign() (asymmetric) or hmac() (HS256)
58
+ * 4. Return compact JWT: `${headerB64}.${payloadB64}.${signatureB64}`
59
+ *
60
+ * @param cryptoService - Crypto implementation to use
61
+ * @param payload - JWT payload (claims)
62
+ * @param key - PEM-encoded private key for asymmetric algorithms, or raw key bytes for HS256
63
+ * @param header - JWT header (must include alg)
64
+ * @param options - Optional signing options (e.g., crit header handling)
65
+ * @returns Compact JWT string
66
+ */
67
+ export async function signJwt(cryptoService, payload, key, header, options) {
68
+ validateCrit(joseErrors.JWSInvalid, new Map([['b64', true]]), options?.crit, header, header);
69
+ // Encode header and payload per RFC 7515
70
+ const headerB64 = base64urlEncode(JSON.stringify(header));
71
+ const payloadB64 = base64urlEncode(JSON.stringify(payload));
72
+ // Create signing input
73
+ const signingInput = `${headerB64}.${payloadB64}`;
74
+ const signingInputBytes = new TextEncoder().encode(signingInput);
75
+ // Sign via CryptoService - route based on algorithm
76
+ let signature;
77
+ if (header.alg === 'HS256') {
78
+ if (key._brand !== 'SymmetricKey') {
79
+ throw new Error('HS256 requires a SymmetricKey');
80
+ }
81
+ signature = await cryptoService.hmac(signingInputBytes, key);
82
+ }
83
+ else {
84
+ if (key._brand !== 'PrivateKey') {
85
+ throw new Error(`${header.alg} requires a PrivateKey`);
86
+ }
87
+ signature = await cryptoService.sign(signingInputBytes, key, header.alg);
88
+ }
89
+ // Return compact JWT
90
+ return `${signingInput}.${base64urlEncode(signature)}`;
91
+ }
92
+ /**
93
+ * Verify a JWT and return its contents. Replaces jose jwtVerify.
94
+ *
95
+ * Implementation:
96
+ * 1. Split token into header.payload.signature
97
+ * 2. Decode header, validate algorithm against allowlist
98
+ * 3. Verify signature via cryptoService.verify() (asymmetric) or verifyHmac() (HS256)
99
+ * 4. Validate JWT claims (aud, iss, exp, nbf, etc.)
100
+ * 5. Return decoded header and payload
101
+ *
102
+ * @param cryptoService - Crypto implementation to use
103
+ * @param token - The JWT string to verify
104
+ * @param key - For asymmetric: PEM string or PublicKey (opaque). For HS256: Uint8Array or SymmetricKey (opaque).
105
+ * @param options - Verification options including algorithm allowlist and claim validations
106
+ * @throws Error if signature invalid, algorithm not in allowlist, claims invalid, or token malformed
107
+ * @returns Decoded header and payload
108
+ */
109
+ export async function verifyJwt(cryptoService, token, key, options) {
110
+ const parts = token.split('.');
111
+ if (parts.length !== 3) {
112
+ throw new joseErrors.JWTInvalid('Invalid Token or Protected Header formatting');
113
+ }
114
+ const [headerB64, payloadB64, signatureB64] = parts;
115
+ // Decode and validate header
116
+ const headerRaw = decodeProtectedHeader(token);
117
+ if (typeof headerRaw.alg !== 'string' || !headerRaw.alg) {
118
+ throw new joseErrors.JWTInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');
119
+ }
120
+ if (headerRaw.alg === 'none') {
121
+ throw new joseErrors.JWTInvalid('Invalid JWT: alg "none" not allowed');
122
+ }
123
+ // Validate algorithm is in allowlist if provided
124
+ if (options?.algorithms && !options.algorithms.includes(headerRaw.alg)) {
125
+ throw new joseErrors.JWTInvalid(`Invalid JWT: algorithm "${headerRaw.alg}" not in allowlist`);
126
+ }
127
+ const extensions = validateCrit(joseErrors.JWSInvalid, new Map([['b64', true]]), options?.crit, headerRaw, headerRaw);
128
+ // Now we know it's a valid algorithm
129
+ const header = headerRaw;
130
+ // Verify signature via CryptoService - route based on algorithm
131
+ const signingInput = `${headerB64}.${payloadB64}`;
132
+ const signingInputBytes = new TextEncoder().encode(signingInput);
133
+ const signature = base64urlDecodeBytes(signatureB64);
134
+ let valid;
135
+ if (header.alg === 'HS256') {
136
+ // Symmetric verification - accept Uint8Array or SymmetricKey
137
+ if (typeof key === 'string') {
138
+ throw new Error('HS256 requires a Uint8Array or SymmetricKey, not a PEM string');
139
+ }
140
+ if ('_brand' in key && key._brand === 'PublicKey') {
141
+ throw new Error('HS256 requires a SymmetricKey, not a PublicKey');
142
+ }
143
+ // Convert Uint8Array to SymmetricKey if needed, otherwise assume it's already SymmetricKey
144
+ const symmetricKey = key instanceof Uint8Array
145
+ ? await cryptoService.importSymmetricKey(key)
146
+ : key;
147
+ valid = await cryptoService.verifyHmac(signingInputBytes, signature, symmetricKey);
148
+ }
149
+ else {
150
+ // Asymmetric verification - accept string (PEM) or PublicKey
151
+ if (key instanceof Uint8Array) {
152
+ throw new Error(`${header.alg} requires a PEM string or PublicKey, not Uint8Array`);
153
+ }
154
+ if (typeof key === 'object' && '_brand' in key && key._brand === 'SymmetricKey') {
155
+ throw new Error(`${header.alg} requires a PublicKey, not a SymmetricKey`);
156
+ }
157
+ // Convert PEM string to PublicKey if needed, otherwise assume it's already PublicKey
158
+ const publicKey = typeof key === 'string'
159
+ ? await cryptoService.importPublicKey(key, { usage: 'sign' })
160
+ : key;
161
+ valid = await cryptoService.verify(signingInputBytes, signature, publicKey, header.alg);
162
+ }
163
+ if (!valid) {
164
+ throw new joseErrors.JWTInvalid('Invalid JWT: signature verification failed');
165
+ }
166
+ if (extensions.has('b64') && header.b64 === false) {
167
+ throw new joseErrors.JWTInvalid('JWTs MUST NOT use unencoded payload');
168
+ }
169
+ // Decode payload and validate JWT claims
170
+ const payloadBytes = base64urlDecodeBytes(payloadB64);
171
+ const payload = jwtClaimsSet(header, payloadBytes, options);
172
+ return { header, payload };
173
+ }
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvY3J5cHRvL2p3dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekQsT0FBTyxFQUNMLHFCQUFxQixJQUFJLHlCQUF5QixFQUNsRCxNQUFNLElBQUksVUFBVSxHQUtyQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sWUFBWSxNQUFNLHlCQUF5QixDQUFDO0FBdUJuRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUF5QjtJQUN2RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLDZCQUE2QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCO0lBQ3hFLENBQUM7U0FBTSxDQUFDO1FBQ04saUNBQWlDO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckYsT0FBTyxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCO0lBQ2xFLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLEdBQVc7SUFDcEMsMERBQTBEO0lBQzFELElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FB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
@@ -1,9 +1,15 @@
1
- const generateSalt = async () => {
1
+ let cachedSalt = null;
2
+ /**
3
+ * Get the ZTDF salt (SHA-256 of "TDF").
4
+ * Lazily computed on first call and cached thereafter.
5
+ */
6
+ export async function getZtdfSalt(cryptoService) {
7
+ if (cachedSalt) {
8
+ return cachedSalt;
9
+ }
2
10
  const encoder = new TextEncoder();
3
11
  const data = encoder.encode('TDF');
4
- // Generate hash
5
- const hashBuffer = await crypto.subtle.digest('SHA-256', data);
6
- return new Uint8Array(hashBuffer);
7
- };
8
- export const ztdfSalt = generateSalt();
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL2NyeXB0by9zYWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVuQyxnQkFBZ0I7SUFDaEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFL0QsT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsWUFBWSxFQUFFLENBQUMifQ==
12
+ cachedSalt = await cryptoService.digest('SHA-256', data);
13
+ return cachedSalt;
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL2NyeXB0by9zYWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLElBQUksVUFBVSxHQUFzQixJQUFJLENBQUM7QUFFekM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUMsYUFBNEI7SUFDNUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkMsVUFBVSxHQUFHLE1BQU0sYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyJ9