@opentdf/sdk 0.9.0-rc.82 → 0.10.0-beta.95

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 (207) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/src/access/access-fetch.js +1 -2
  3. package/dist/cjs/src/access/access-rpc.js +1 -3
  4. package/dist/cjs/src/access.js +1 -14
  5. package/dist/cjs/src/auth/auth.js +13 -10
  6. package/dist/cjs/src/auth/dpop.js +121 -0
  7. package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +37 -3
  8. package/dist/cjs/src/auth/oidc-externaljwt-provider.js +37 -3
  9. package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +37 -3
  10. package/dist/cjs/src/auth/oidc.js +10 -8
  11. package/dist/cjs/src/auth/providers.js +35 -12
  12. package/dist/cjs/src/crypto/enums.js +1 -1
  13. package/dist/cjs/src/crypto/index.js +16 -2
  14. package/dist/cjs/src/crypto/pemPublicToCrypto.js +24 -20
  15. package/dist/cjs/src/errors.js +14 -2
  16. package/dist/cjs/src/index.js +8 -2
  17. package/dist/cjs/src/opentdf.js +50 -13
  18. package/dist/cjs/src/policy/discovery.js +188 -0
  19. package/dist/cjs/src/version.js +2 -2
  20. package/dist/cjs/tdf3/index.js +4 -2
  21. package/dist/cjs/tdf3/src/assertions.js +71 -31
  22. package/dist/cjs/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
  23. package/dist/cjs/tdf3/src/ciphers/symmetric-cipher-base.js +4 -2
  24. package/dist/cjs/tdf3/src/client/index.js +23 -33
  25. package/dist/cjs/tdf3/src/crypto/crypto-utils.js +12 -5
  26. package/dist/cjs/tdf3/src/crypto/declarations.js +1 -1
  27. package/dist/cjs/tdf3/src/crypto/index.js +849 -88
  28. package/dist/cjs/tdf3/src/crypto/jose/jwt-claims-set.js +11 -0
  29. package/dist/cjs/tdf3/src/crypto/jose/validate-crit.js +8 -0
  30. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/buffer_utils.js +41 -0
  31. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/epoch.js +6 -0
  32. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/is_object.js +21 -0
  33. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.js +112 -0
  34. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/secs.js +60 -0
  35. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/validate_crit.js +38 -0
  36. package/dist/cjs/tdf3/src/crypto/jose/vendor/util/errors.js +135 -0
  37. package/dist/cjs/tdf3/src/crypto/jwt.js +183 -0
  38. package/dist/cjs/tdf3/src/crypto/salt.js +14 -8
  39. package/dist/cjs/tdf3/src/models/encryption-information.js +17 -20
  40. package/dist/cjs/tdf3/src/models/key-access.js +43 -63
  41. package/dist/cjs/tdf3/src/tdf.js +75 -75
  42. package/dist/cjs/tdf3/src/utils/index.js +5 -39
  43. package/dist/types/src/access/access-fetch.d.ts.map +1 -1
  44. package/dist/types/src/access/access-rpc.d.ts.map +1 -1
  45. package/dist/types/src/access.d.ts +0 -5
  46. package/dist/types/src/access.d.ts.map +1 -1
  47. package/dist/types/src/auth/auth.d.ts +9 -6
  48. package/dist/types/src/auth/auth.d.ts.map +1 -1
  49. package/dist/types/src/auth/dpop.d.ts +60 -0
  50. package/dist/types/src/auth/dpop.d.ts.map +1 -0
  51. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts +3 -2
  52. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts.map +1 -1
  53. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts +3 -2
  54. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts.map +1 -1
  55. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts +3 -2
  56. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts.map +1 -1
  57. package/dist/types/src/auth/oidc.d.ts +6 -4
  58. package/dist/types/src/auth/oidc.d.ts.map +1 -1
  59. package/dist/types/src/auth/providers.d.ts +5 -4
  60. package/dist/types/src/auth/providers.d.ts.map +1 -1
  61. package/dist/types/src/crypto/enums.d.ts +1 -1
  62. package/dist/types/src/crypto/index.d.ts +2 -1
  63. package/dist/types/src/crypto/index.d.ts.map +1 -1
  64. package/dist/types/src/crypto/pemPublicToCrypto.d.ts +18 -0
  65. package/dist/types/src/crypto/pemPublicToCrypto.d.ts.map +1 -1
  66. package/dist/types/src/errors.d.ts +8 -0
  67. package/dist/types/src/errors.d.ts.map +1 -1
  68. package/dist/types/src/index.d.ts +2 -1
  69. package/dist/types/src/index.d.ts.map +1 -1
  70. package/dist/types/src/opentdf.d.ts +26 -7
  71. package/dist/types/src/opentdf.d.ts.map +1 -1
  72. package/dist/types/src/policy/discovery.d.ts +74 -0
  73. package/dist/types/src/policy/discovery.d.ts.map +1 -0
  74. package/dist/types/src/version.d.ts +1 -1
  75. package/dist/types/src/version.d.ts.map +1 -1
  76. package/dist/types/tdf3/index.d.ts +3 -3
  77. package/dist/types/tdf3/index.d.ts.map +1 -1
  78. package/dist/types/tdf3/src/assertions.d.ts +23 -8
  79. package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
  80. package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts +3 -3
  81. package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts.map +1 -1
  82. package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts +4 -4
  83. package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts.map +1 -1
  84. package/dist/types/tdf3/src/client/builders.d.ts +2 -2
  85. package/dist/types/tdf3/src/client/builders.d.ts.map +1 -1
  86. package/dist/types/tdf3/src/client/index.d.ts +6 -5
  87. package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
  88. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts +14 -4
  89. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts.map +1 -1
  90. package/dist/types/tdf3/src/crypto/declarations.d.ts +283 -18
  91. package/dist/types/tdf3/src/crypto/declarations.d.ts.map +1 -1
  92. package/dist/types/tdf3/src/crypto/index.d.ts +105 -28
  93. package/dist/types/tdf3/src/crypto/index.d.ts.map +1 -1
  94. package/dist/types/tdf3/src/crypto/jose/jwt-claims-set.d.ts +3 -0
  95. package/dist/types/tdf3/src/crypto/jose/jwt-claims-set.d.ts.map +1 -0
  96. package/dist/types/tdf3/src/crypto/jose/validate-crit.d.ts +5 -0
  97. package/dist/types/tdf3/src/crypto/jose/validate-crit.d.ts.map +1 -0
  98. package/dist/types/tdf3/src/crypto/jose/vendor/lib/buffer_utils.d.ts +6 -0
  99. package/dist/types/tdf3/src/crypto/jose/vendor/lib/buffer_utils.d.ts.map +1 -0
  100. package/dist/types/tdf3/src/crypto/jose/vendor/lib/epoch.d.ts +3 -0
  101. package/dist/types/tdf3/src/crypto/jose/vendor/lib/epoch.d.ts.map +1 -0
  102. package/dist/types/tdf3/src/crypto/jose/vendor/lib/is_object.d.ts +3 -0
  103. package/dist/types/tdf3/src/crypto/jose/vendor/lib/is_object.d.ts.map +1 -0
  104. package/dist/types/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.d.ts +3 -0
  105. package/dist/types/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.d.ts.map +1 -0
  106. package/dist/types/tdf3/src/crypto/jose/vendor/lib/secs.d.ts +3 -0
  107. package/dist/types/tdf3/src/crypto/jose/vendor/lib/secs.d.ts.map +1 -0
  108. package/dist/types/tdf3/src/crypto/jose/vendor/lib/validate_crit.d.ts +3 -0
  109. package/dist/types/tdf3/src/crypto/jose/vendor/lib/validate_crit.d.ts.map +1 -0
  110. package/dist/types/tdf3/src/crypto/jose/vendor/util/errors.d.ts +76 -0
  111. package/dist/types/tdf3/src/crypto/jose/vendor/util/errors.d.ts.map +1 -0
  112. package/dist/types/tdf3/src/crypto/jwt.d.ts +76 -0
  113. package/dist/types/tdf3/src/crypto/jwt.d.ts.map +1 -0
  114. package/dist/types/tdf3/src/crypto/salt.d.ts +6 -1
  115. package/dist/types/tdf3/src/crypto/salt.d.ts.map +1 -1
  116. package/dist/types/tdf3/src/models/encryption-information.d.ts +4 -4
  117. package/dist/types/tdf3/src/models/encryption-information.d.ts.map +1 -1
  118. package/dist/types/tdf3/src/models/key-access.d.ts +8 -5
  119. package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -1
  120. package/dist/types/tdf3/src/tdf.d.ts +8 -8
  121. package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
  122. package/dist/types/tdf3/src/utils/index.d.ts +4 -3
  123. package/dist/types/tdf3/src/utils/index.d.ts.map +1 -1
  124. package/dist/web/src/access/access-fetch.js +3 -4
  125. package/dist/web/src/access/access-rpc.js +3 -5
  126. package/dist/web/src/access.js +1 -13
  127. package/dist/web/src/auth/auth.js +13 -10
  128. package/dist/web/src/auth/dpop.js +118 -0
  129. package/dist/web/src/auth/oidc-clientcredentials-provider.js +4 -3
  130. package/dist/web/src/auth/oidc-externaljwt-provider.js +4 -3
  131. package/dist/web/src/auth/oidc-refreshtoken-provider.js +4 -3
  132. package/dist/web/src/auth/oidc.js +11 -9
  133. package/dist/web/src/auth/providers.js +13 -12
  134. package/dist/web/src/crypto/enums.js +1 -1
  135. package/dist/web/src/crypto/index.js +4 -2
  136. package/dist/web/src/crypto/pemPublicToCrypto.js +18 -18
  137. package/dist/web/src/errors.js +12 -1
  138. package/dist/web/src/index.js +3 -2
  139. package/dist/web/src/opentdf.js +17 -13
  140. package/dist/web/src/policy/discovery.js +182 -0
  141. package/dist/web/src/version.js +2 -2
  142. package/dist/web/tdf3/index.js +3 -2
  143. package/dist/web/tdf3/src/assertions.js +71 -31
  144. package/dist/web/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
  145. package/dist/web/tdf3/src/ciphers/symmetric-cipher-base.js +4 -2
  146. package/dist/web/tdf3/src/client/index.js +25 -35
  147. package/dist/web/tdf3/src/crypto/crypto-utils.js +12 -5
  148. package/dist/web/tdf3/src/crypto/declarations.js +1 -1
  149. package/dist/web/tdf3/src/crypto/index.js +830 -84
  150. package/dist/web/tdf3/src/crypto/jose/jwt-claims-set.js +5 -0
  151. package/dist/web/tdf3/src/crypto/jose/validate-crit.js +3 -0
  152. package/dist/web/tdf3/src/crypto/jose/vendor/lib/buffer_utils.js +35 -0
  153. package/dist/web/tdf3/src/crypto/jose/vendor/lib/epoch.js +4 -0
  154. package/dist/web/tdf3/src/crypto/jose/vendor/lib/is_object.js +19 -0
  155. package/dist/web/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.js +107 -0
  156. package/dist/web/tdf3/src/crypto/jose/vendor/lib/secs.js +58 -0
  157. package/dist/web/tdf3/src/crypto/jose/vendor/lib/validate_crit.js +36 -0
  158. package/dist/web/tdf3/src/crypto/jose/vendor/util/errors.js +117 -0
  159. package/dist/web/tdf3/src/crypto/jwt.js +174 -0
  160. package/dist/web/tdf3/src/crypto/salt.js +13 -7
  161. package/dist/web/tdf3/src/models/encryption-information.js +11 -14
  162. package/dist/web/tdf3/src/models/key-access.js +44 -31
  163. package/dist/web/tdf3/src/tdf.js +71 -71
  164. package/dist/web/tdf3/src/utils/index.js +5 -6
  165. package/package.json +11 -4
  166. package/src/access/access-fetch.ts +2 -8
  167. package/src/access/access-rpc.ts +0 -7
  168. package/src/access.ts +0 -17
  169. package/src/auth/auth.ts +21 -12
  170. package/src/auth/dpop.ts +222 -0
  171. package/src/auth/oidc-clientcredentials-provider.ts +23 -15
  172. package/src/auth/oidc-externaljwt-provider.ts +23 -15
  173. package/src/auth/oidc-refreshtoken-provider.ts +23 -15
  174. package/src/auth/oidc.ts +21 -10
  175. package/src/auth/providers.ts +46 -29
  176. package/src/crypto/enums.ts +1 -1
  177. package/src/crypto/index.ts +21 -1
  178. package/src/crypto/pemPublicToCrypto.ts +18 -20
  179. package/src/errors.ts +9 -0
  180. package/src/index.ts +7 -0
  181. package/src/opentdf.ts +36 -17
  182. package/src/policy/discovery.ts +222 -0
  183. package/src/version.ts +1 -1
  184. package/tdf3/index.ts +32 -5
  185. package/tdf3/src/assertions.ts +99 -30
  186. package/tdf3/src/ciphers/aes-gcm-cipher.ts +7 -2
  187. package/tdf3/src/ciphers/symmetric-cipher-base.ts +7 -4
  188. package/tdf3/src/client/builders.ts +2 -2
  189. package/tdf3/src/client/index.ts +60 -59
  190. package/tdf3/src/crypto/crypto-utils.ts +15 -8
  191. package/tdf3/src/crypto/declarations.ts +338 -22
  192. package/tdf3/src/crypto/index.ts +1021 -118
  193. package/tdf3/src/crypto/jose/jwt-claims-set.ts +10 -0
  194. package/tdf3/src/crypto/jose/validate-crit.ts +9 -0
  195. package/tdf3/src/crypto/jose/vendor/lib/buffer_utils.ts +34 -0
  196. package/tdf3/src/crypto/jose/vendor/lib/epoch.ts +3 -0
  197. package/tdf3/src/crypto/jose/vendor/lib/is_object.ts +18 -0
  198. package/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.ts +106 -0
  199. package/tdf3/src/crypto/jose/vendor/lib/secs.ts +57 -0
  200. package/tdf3/src/crypto/jose/vendor/lib/validate_crit.ts +35 -0
  201. package/tdf3/src/crypto/jose/vendor/util/errors.ts +101 -0
  202. package/tdf3/src/crypto/jwt.ts +256 -0
  203. package/tdf3/src/crypto/salt.ts +16 -8
  204. package/tdf3/src/models/encryption-information.ts +14 -21
  205. package/tdf3/src/models/key-access.ts +57 -41
  206. package/tdf3/src/tdf.ts +110 -93
  207. package/tdf3/src/utils/index.ts +5 -6
@@ -53,7 +53,6 @@ Object.defineProperty(exports, "EncryptParamsBuilder", { enumerable: true, get:
53
53
  const access_js_1 = require("../../../src/access.js");
54
54
  const errors_js_1 = require("../../../src/errors.js");
55
55
  const aes_gcm_cipher_js_1 = require("../ciphers/aes-gcm-cipher.js");
56
- const crypto_utils_js_1 = require("../crypto/crypto-utils.js");
57
56
  const defaultCryptoService = __importStar(require("../crypto/index.js"));
58
57
  const index_js_3 = require("../models/index.js");
59
58
  const granter_js_1 = require("../../../src/policy/granter.js");
@@ -65,19 +64,17 @@ const GLOBAL_BYTE_LIMIT = 64 * 1000 * 1000 * 1000; // 64 GB, see WS-9363.
65
64
  // No default config for now. Delegate to Virtru wrapper for endpoints.
66
65
  const defaultClientConfig = { oidcOrigin: '', cryptoService: defaultCryptoService };
67
66
  const getFirstTwoBytes = async (chunker) => new TextDecoder().decode(await chunker(0, 2));
68
- async function algorithmFromPEM(pem) {
69
- const k = await (0, utils_js_1.pemToCryptoPublicKey)(pem);
70
- return (0, access_js_1.keyAlgorithmToPublicKeyAlgorithm)(k);
67
+ async function algorithmFromPEM(pem, cryptoService) {
68
+ const keyInfo = await cryptoService.parsePublicKeyPem(pem);
69
+ return keyInfo.algorithm;
71
70
  }
72
- // Convert a PEM string to a CryptoKey
73
- const resolveKasInfo = async (pem, uri, kid) => {
74
- const k = await (0, utils_js_1.pemToCryptoPublicKey)(pem);
75
- const algorithm = (0, access_js_1.keyAlgorithmToPublicKeyAlgorithm)(k);
71
+ // Convert a PEM string to KasPublicKeyInfo
72
+ const resolveKasInfo = async (pem, uri, cryptoService, kid) => {
73
+ const keyInfo = await cryptoService.parsePublicKeyPem(pem);
76
74
  return {
77
- key: Promise.resolve(k),
78
75
  publicKey: pem,
79
76
  url: uri,
80
- algorithm,
77
+ algorithm: keyInfo.algorithm,
81
78
  kid: kid,
82
79
  };
83
80
  };
@@ -122,23 +119,17 @@ const makeChunkable = async (source) => {
122
119
  *
123
120
  * Additionally, update the auth injector with the (potentially new) pubkey
124
121
  */
125
- async function createSessionKeys({ authProvider,
126
- // FIXME use cryptoservice to generate keys again
127
- cryptoService, dpopKeys, }) {
122
+ async function createSessionKeys({ authProvider, cryptoService, dpopKeys, }) {
128
123
  let signingKeys;
129
124
  if (dpopKeys) {
130
125
  signingKeys = await dpopKeys;
131
126
  }
132
127
  else {
133
- const keys = await cryptoService.generateSigningKeyPair();
134
- // signingKeys = await crypto.subtle.generateKey(rsaPkcs1Sha256(), true, ['sign']);
135
- signingKeys = await (0, crypto_utils_js_1.toCryptoKeyPair)(keys);
128
+ // generateSigningKeyPair returns opaque KeyPair
129
+ signingKeys = await cryptoService.generateSigningKeyPair();
136
130
  }
137
131
  // This will contact the auth server and forcibly refresh the auth token claims,
138
132
  // binding the token and the (new) pubkey together.
139
- // Note that we base64 encode the PEM string here as a quick workaround, simply because
140
- // a formatted raw PEM string isn't a valid header value and sending it raw makes keycloak's
141
- // header parser barf. There are more subtle ways to solve this, but this works for now.
142
133
  if (authProvider) {
143
134
  await authProvider?.updateClientPublicKey(signingKeys);
144
135
  }
@@ -220,19 +211,16 @@ function algorithmEnumValueToString(algorithmEnumValue) {
220
211
  return undefined;
221
212
  }
222
213
  }
223
- const putKasKeyIntoCache = (cache, kasKey) => {
214
+ const putKasKeyIntoCache = (cache, kasKey, cryptoService) => {
224
215
  const algorithmString = algorithmEnumValueToString(kasKey.publicKey.algorithm);
225
216
  const cachedEntry = findEntryInCache(cache, kasKey.kasUri, algorithmString, kasKey.publicKey.kid);
226
217
  if (cachedEntry) {
227
218
  return cachedEntry;
228
219
  }
229
220
  const keyInfoPromise = (async function () {
230
- const keyPromise = (0, utils_js_1.pemToCryptoPublicKey)(kasKey.publicKey.pem);
231
- const key = await keyPromise;
232
- const algorithm = (0, access_js_1.keyAlgorithmToPublicKeyAlgorithm)(key);
221
+ const keyInfo = await cryptoService.parsePublicKeyPem(kasKey.publicKey.pem);
233
222
  return {
234
- algorithm: algorithm,
235
- key: keyPromise,
223
+ algorithm: keyInfo.algorithm,
236
224
  kid: kasKey.publicKey.kid,
237
225
  publicKey: kasKey.publicKey.pem,
238
226
  url: kasKey.kasUri,
@@ -308,7 +296,7 @@ class Client {
308
296
  clientId: clientConfig.clientId,
309
297
  refreshToken: clientConfig.refreshToken,
310
298
  oidcOrigin: clientConfig.oidcOrigin,
311
- });
299
+ }, this.cryptoService);
312
300
  }
313
301
  else if (clientConfig.externalJwt) {
314
302
  //Are we exchanging a JWT previously issued by a trusted external entity (e.g. Google) for a bearer token?
@@ -316,7 +304,7 @@ class Client {
316
304
  clientId: clientConfig.clientId,
317
305
  externalJwt: clientConfig.externalJwt,
318
306
  oidcOrigin: clientConfig.oidcOrigin,
319
- });
307
+ }, this.cryptoService);
320
308
  }
321
309
  }
322
310
  this.dpopKeys = createSessionKeys({
@@ -352,7 +340,8 @@ class Client {
352
340
  throw new errors_js_1.ConfigurationError('html mode not supported');
353
341
  }
354
342
  const dpopKeys = await this.dpopKeys;
355
- const { autoconfigure, metadata, mimeType = 'unknown', windowSize = builders_js_1.DEFAULT_SEGMENT_SIZE, keyMiddleware = index_js_1.keyMiddleware, splitPlan: preconfiguredSplitPlan, streamMiddleware = async (stream) => stream, tdfSpecVersion, wrappingKeyAlgorithm, } = opts;
343
+ const { autoconfigure, metadata, mimeType = 'unknown', windowSize = builders_js_1.DEFAULT_SEGMENT_SIZE, keyMiddleware: keyMiddlewareOpt, splitPlan: preconfiguredSplitPlan, streamMiddleware = async (stream) => stream, tdfSpecVersion, wrappingKeyAlgorithm, } = opts;
344
+ const keyMiddleware = keyMiddlewareOpt ?? (() => (0, index_js_1.keyMiddleware)(this.cryptoService));
356
345
  const scope = opts.scope ?? { attributes: [], dissem: [] };
357
346
  for (const attributeValue of scope.attributeValues || []) {
358
347
  for (const kasKey of attributeValue.kasKeys) {
@@ -361,7 +350,7 @@ class Client {
361
350
  // TypeScript is silly and cannot infer that publicKey is not undefined, without re-referencing it like this, even though we checked already.
362
351
  ...kasKey,
363
352
  publicKey: kasKey.publicKey,
364
- });
353
+ }, this.cryptoService);
365
354
  }
366
355
  }
367
356
  }
@@ -407,14 +396,14 @@ class Client {
407
396
  // TypeScript is silly and cannot infer that publicKey is not undefined, without re-referencing it like this, even though we checked already.
408
397
  ...kasKey,
409
398
  publicKey: kasKey.publicKey,
410
- });
399
+ }, this.cryptoService);
411
400
  }
412
401
  }
413
402
  }
414
403
  const detailedPlan = (0, granter_js_1.plan)(attributeValues);
415
404
  for (const item of detailedPlan) {
416
405
  if ('kid' in item.kas) {
417
- const pemAlgorithm = await algorithmFromPEM(item.kas.pem);
406
+ const pemAlgorithm = await algorithmFromPEM(item.kas.pem, this.cryptoService);
418
407
  const kasPublicKeyInfo = await this._doFetchKasKeyWithCache(this.kasKeyInfoCache, item.kas.kasUri, pemAlgorithm, item.kas.kid);
419
408
  splitPlan.push({
420
409
  kas: kasPublicKeyInfo.url,
@@ -474,7 +463,7 @@ class Client {
474
463
  });
475
464
  }
476
465
  encryptionInformation.keyAccess = await Promise.all(splitPlan.map(async ({ kas, kid, pem, sid }) => {
477
- const algorithm = await algorithmFromPEM(pem);
466
+ const algorithm = await algorithmFromPEM(pem, this.cryptoService);
478
467
  if (algorithm !== wrappingKeyAlgorithm) {
479
468
  console.warn(`Mismatched wrapping key algorithm: [${algorithm}] is not requested type, [${wrappingKeyAlgorithm}]`);
480
469
  }
@@ -500,6 +489,7 @@ class Client {
500
489
  publicKey: pem,
501
490
  metadata,
502
491
  sid,
492
+ cryptoService: this.cryptoService,
503
493
  });
504
494
  }));
505
495
  const { keyForEncryption, keyForManifest } = await keyMiddleware();
@@ -598,4 +588,4 @@ class Client {
598
588
  }
599
589
  }
600
590
  exports.Client = Client;
601
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy9jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUxBLDhDQTRCQztBQXFDRCw0Q0FxQkM7QUF2UUQsK0JBQTBCO0FBQzFCLGdEQUkyQjtBQUMzQiw4REFBeUQ7QUFDekQsc0NBUW1CO0FBQ25CLGtEQUFnRDtBQUNoRCxtR0FBMkY7QUFDM0YsaUdBQXlGO0FBRXpGLHVEQUF3RjtBQXN6QnBCLDRGQXR6QnhDLHFCQUFXLE9Bc3pCd0M7QUFBRSw0RkF0ekJ4QyxxQkFBVyxPQXN6QndDO0FBcnpCNUYsb0RBSytCO0FBRS9CLCtDQVd1QjtBQW15QmQscUdBNXlCUCxrQ0FBb0IsT0E0eUJPO0FBQWlCLHFHQXR5QjVDLGtDQUFvQixPQXN5QjRDO0FBanlCbEUsc0RBS2dDO0FBQ2hDLHNEQUE0RDtBQUU1RCxvRUFBNEQ7QUFDNUQsK0RBQTREO0FBQzVELHlFQUEyRDtBQUMzRCxpREFLNEI7QUFDNUIsK0RBQXNEO0FBQ3RELHVEQUFtRTtBQUNuRSwwREFBZ0Y7QUFDaEYsOEVBQXFGO0FBQ3JGLGlFQUFtRTtBQUVuRSxNQUFNLGlCQUFpQixHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLHNCQUFzQjtBQUV6RSx1RUFBdUU7QUFDdkUsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLENBQUM7QUFFcEYsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsT0FBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbkcsS0FBSyxVQUFVLGdCQUFnQixDQUFD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
591
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy9jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUtBLDhDQXVCQztBQXFDRCw0Q0FxQkM7QUExUEQsK0JBQTBCO0FBQzFCLGdEQUkyQjtBQUMzQiw4REFBeUQ7QUFDekQsc0NBUW1CO0FBQ25CLGtEQUFnRDtBQUNoRCxtR0FBMkY7QUFDM0YsaUdBQXlGO0FBRXpGLHVEQUF3RjtBQXV6QnBCLDRGQXZ6QnhDLHFCQUFXLE9BdXpCd0M7QUFBRSw0RkF2ekJ4QyxxQkFBVyxPQXV6QndDO0FBdHpCNUYsb0RBQWlHO0FBRWpHLCtDQVd1QjtBQXl5QmQscUdBbHpCUCxrQ0FBb0IsT0FrekJPO0FBQWlCLHFHQTV5QjVDLGtDQUFvQixPQTR5QjRDO0FBdnlCbEUsc0RBSWdDO0FBQ2hDLHNEQUE0RDtBQUM1RCxvRUFBNEQ7QUFFNUQseUVBQTJEO0FBQzNELGlEQUs0QjtBQUM1QiwrREFBc0Q7QUFDdEQsdURBQW1FO0FBQ25FLDBEQUFnRjtBQUNoRiw4RUFBcUY7QUFDckYsaUVBQW1FO0FBRW5FLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsc0JBQXNCO0FBRXpFLHVFQUF1RTtBQUN2RSxNQUFNLG1CQUFtQixHQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztBQUVwRixNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVuRyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLGFB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
@@ -68,6 +68,9 @@ const removePemFormatting = (input) => {
68
68
  };
69
69
  exports.removePemFormatting = removePemFormatting;
70
70
  const PEMRE = /-----BEGIN\s((?:RSA\s)?(?:PUBLIC\sKEY|PRIVATE\sKEY|CERTIFICATE))-----[\s0-9A-Za-z+/=]+-----END\s\1-----/;
71
+ /**
72
+ * Type guard to check if a key pair is a PemKeyPair.
73
+ */
71
74
  const isPemKeyPair = (i) => {
72
75
  const { privateKey, publicKey } = i;
73
76
  if (typeof privateKey !== 'string' || typeof publicKey !== 'string') {
@@ -84,6 +87,9 @@ const isPemKeyPair = (i) => {
84
87
  return true;
85
88
  };
86
89
  exports.isPemKeyPair = isPemKeyPair;
90
+ /**
91
+ * Type guard to check if a key pair is a CryptoKeyPair.
92
+ */
87
93
  const isCryptoKeyPair = (i) => {
88
94
  const { privateKey, publicKey } = i;
89
95
  if (typeof privateKey !== 'object' || typeof publicKey !== 'object') {
@@ -95,12 +101,13 @@ const isCryptoKeyPair = (i) => {
95
101
  return privateKey.type === 'private' && publicKey.type === 'public';
96
102
  };
97
103
  exports.isCryptoKeyPair = isCryptoKeyPair;
104
+ /**
105
+ * Convert a PemKeyPair to CryptoKeyPair for internal use.
106
+ * This is needed when interfacing with APIs that still require CryptoKey objects.
107
+ */
98
108
  const toCryptoKeyPair = async (input) => {
99
- if ((0, exports.isCryptoKeyPair)(input)) {
100
- return input;
101
- }
102
109
  if (!(0, exports.isPemKeyPair)(input)) {
103
- throw new Error('internal: generated invalid keypair');
110
+ throw new Error('internal: invalid PEM keypair');
104
111
  }
105
112
  const k = [input.publicKey, input.privateKey]
106
113
  .map(exports.removePemFormatting)
@@ -113,4 +120,4 @@ const toCryptoKeyPair = async (input) => {
113
120
  return { privateKey, publicKey };
114
121
  };
115
122
  exports.toCryptoKeyPair = toCryptoKeyPair;
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvY3J5cHRvL2NyeXB0by11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4REFBeUQ7QUFFekQseUNBQTRDO0FBRTVDOzs7O0dBSUc7QUFDSSxNQUFNLHdCQUF3QixHQUFHLENBQUMsSUFBd0IsRUFBRSxPQUFnQixFQUFXLEVBQUU7SUFDOUYsNkRBQTZEO0lBQzdELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFYVyxRQUFBLHdCQUF3Qiw0QkFXbkM7QUFFRjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0ksTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFrQixFQUFFLEtBQWEsRUFBVSxFQUFFO0lBQ3ZFLElBQUksT0FBTyxHQUFHLGNBQWMsS0FBSyxTQUFTLENBQUM7SUFDM0MsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE1BQU0sZUFBZSxHQUFHLGlCQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEQsT0FBTyxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFDLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztRQUMxRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9B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
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvY3J5cHRvL2NyeXB0by11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4REFBeUQ7QUFFekQseUNBQTRDO0FBRTVDOzs7O0dBSUc7QUFDSSxNQUFNLHdCQUF3QixHQUFHLENBQUMsSUFBd0IsRUFBRSxPQUFnQixFQUFXLEVBQUU7SUFDOUYsNkRBQTZEO0lBQzdELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFYVyxRQUFBLHdCQUF3Qiw0QkFXbkM7QUFFRjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0ksTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFrQixFQUFFLEtBQWEsRUFBVSxFQUFFO0lBQ3ZFLElBQUksT0FBTyxHQUFHLGNBQWMsS0FBSyxTQUFTLENBQUM7SUFDM0MsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE1BQU0sZUFBZSxHQUFHLGlCQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEQsT0FBTyxTQUFTLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFDLElBQUksU0FBUyxHQUFHLEVBQUUsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztRQUMxRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUN0RCxDQUFDO1FBQ0QsU0FBUyxJQUFJLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsT0FBTyxJQUFJLFlBQVksS0FBSyxTQUFTLENBQUM7SUFDdEMsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBZFcsUUFBQSxXQUFXLGVBY3RCO0FBRUY7Ozs7OztHQU1HO0FBQ0ksTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFO0lBQzNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5QyxtREFBbUQ7SUFDbkQsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUNyQix5RUFBeUUsRUFDekUsRUFBRSxDQUNILENBQUM7QUFDSixDQUFDLENBQUM7QUFYVyxRQUFBLG1CQUFtQix1QkFXOUI7QUFFRixNQUFNLEtBQUssR0FDVCx5R0FBeUcsQ0FBQztBQUU1Rzs7R0FFRztBQUNJLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBNkIsRUFBbUIsRUFBRTtJQUM3RSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNwRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQWRXLFFBQUEsWUFBWSxnQkFjdkI7QUFFRjs7R0FFRztBQUNJLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBNkIsRUFBc0IsRUFBRTtJQUNuRixNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNwRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsWUFBWSxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzVFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7QUFDdEUsQ0FBQyxDQUFDO0FBVFcsUUFBQSxlQUFlLG1CQVMxQjtBQUVGOzs7R0FHRztBQUNJLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxLQUFpQixFQUEwQixFQUFFO0lBQ2pGLElBQUksQ0FBQyxJQUFBLG9CQUFZLEVBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDO1NBQzFDLEdBQUcsQ0FBQywyQkFBbUIsQ0FBQztTQUN4QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FBRyxJQUFBLHlCQUFjLEdBQUUsQ0FBQztJQUNuQyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNoRCxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNsRSxDQUFDLENBQUM7SUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQWJXLFFBQUEsZUFBZSxtQkFhMUIifQ==
@@ -5,4 +5,4 @@ exports.MIN_ASYMMETRIC_KEY_SIZE_BITS = void 0;
5
5
  * The minimum acceptable asymetric key size, currently 2^11.
6
6
  */
7
7
  exports.MIN_ASYMMETRIC_KEY_SIZE_BITS = 2048;
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvY3J5cHRvL2RlY2xhcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFzQkE7O0dBRUc7QUFDVSxRQUFBLDRCQUE0QixHQUFHLElBQUksQ0FBQyJ9
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvY3J5cHRvL2RlY2xhcmF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnR0E7O0dBRUc7QUFDVSxRQUFBLDRCQUE0QixHQUFHLElBQUksQ0FBQyJ9