@icure/api 8.0.64 → 8.0.66

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 (131) hide show
  1. package/icc-api/api/internal/IccExchangeDataApi.d.ts +2 -0
  2. package/icc-api/api/internal/IccExchangeDataApi.js +10 -0
  3. package/icc-api/api/internal/IccExchangeDataApi.js.map +1 -1
  4. package/icc-api/iccApi.d.ts +0 -1
  5. package/icc-api/iccApi.js +0 -1
  6. package/icc-api/iccApi.js.map +1 -1
  7. package/icc-api/index.d.ts +0 -1
  8. package/icc-api/index.js +0 -1
  9. package/icc-api/index.js.map +1 -1
  10. package/icc-x-api/crypto/AccessControlSecretUtils.d.ts +4 -13
  11. package/icc-x-api/crypto/AccessControlSecretUtils.js +19 -29
  12. package/icc-x-api/crypto/AccessControlSecretUtils.js.map +1 -1
  13. package/icc-x-api/crypto/BaseExchangeDataManager.d.ts +8 -3
  14. package/icc-x-api/crypto/BaseExchangeDataManager.js +45 -10
  15. package/icc-x-api/crypto/BaseExchangeDataManager.js.map +1 -1
  16. package/icc-x-api/crypto/BaseExchangeKeysManager.d.ts +2 -3
  17. package/icc-x-api/crypto/BaseExchangeKeysManager.js +17 -20
  18. package/icc-x-api/crypto/BaseExchangeKeysManager.js.map +1 -1
  19. package/icc-x-api/crypto/CryptoPrimitives.d.ts +2 -0
  20. package/icc-x-api/crypto/CryptoPrimitives.js +3 -0
  21. package/icc-x-api/crypto/CryptoPrimitives.js.map +1 -1
  22. package/icc-x-api/crypto/DelegationsDeAnonymization.d.ts +3 -3
  23. package/icc-x-api/crypto/DelegationsDeAnonymization.js +7 -7
  24. package/icc-x-api/crypto/DelegationsDeAnonymization.js.map +1 -1
  25. package/icc-x-api/crypto/ExchangeDataManager.d.ts +19 -29
  26. package/icc-x-api/crypto/ExchangeDataManager.js +200 -225
  27. package/icc-x-api/crypto/ExchangeDataManager.js.map +1 -1
  28. package/icc-x-api/crypto/ExchangeDataMapManager.js +6 -4
  29. package/icc-x-api/crypto/ExchangeDataMapManager.js.map +1 -1
  30. package/icc-x-api/crypto/ExchangeKeysManager.d.ts +4 -16
  31. package/icc-x-api/crypto/ExchangeKeysManager.js +44 -41
  32. package/icc-x-api/crypto/ExchangeKeysManager.js.map +1 -1
  33. package/icc-x-api/crypto/ExtendedApisUtils.d.ts +47 -25
  34. package/icc-x-api/crypto/ExtendedApisUtils.js.map +1 -1
  35. package/icc-x-api/crypto/ExtendedApisUtilsImpl.d.ts +19 -18
  36. package/icc-x-api/crypto/ExtendedApisUtilsImpl.js +213 -134
  37. package/icc-x-api/crypto/ExtendedApisUtilsImpl.js.map +1 -1
  38. package/icc-x-api/crypto/HMACUtils.d.ts +2 -2
  39. package/icc-x-api/crypto/HMACUtils.js +3 -4
  40. package/icc-x-api/crypto/HMACUtils.js.map +1 -1
  41. package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.d.ts +1 -0
  42. package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.js +5 -0
  43. package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.js.map +1 -1
  44. package/icc-x-api/crypto/SecureDelegationsManager.d.ts +0 -1
  45. package/icc-x-api/crypto/SecureDelegationsManager.js +17 -49
  46. package/icc-x-api/crypto/SecureDelegationsManager.js.map +1 -1
  47. package/icc-x-api/crypto/SecurityMetadataDecryptor.d.ts +59 -90
  48. package/icc-x-api/crypto/SecurityMetadataDecryptor.js +470 -56
  49. package/icc-x-api/crypto/SecurityMetadataDecryptor.js.map +1 -1
  50. package/icc-x-api/crypto/ShamirKeysManager.js +1 -1
  51. package/icc-x-api/crypto/ShamirKeysManager.js.map +1 -1
  52. package/icc-x-api/crypto/TransferKeysManager.d.ts +1 -3
  53. package/icc-x-api/crypto/TransferKeysManager.js +2 -4
  54. package/icc-x-api/crypto/TransferKeysManager.js.map +1 -1
  55. package/icc-x-api/icc-accesslog-x-api.d.ts +2 -2
  56. package/icc-x-api/icc-accesslog-x-api.js +7 -3
  57. package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
  58. package/icc-x-api/icc-calendar-item-x-api.js +4 -2
  59. package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
  60. package/icc-x-api/icc-contact-x-api.d.ts +0 -1
  61. package/icc-x-api/icc-contact-x-api.js +33 -48
  62. package/icc-x-api/icc-contact-x-api.js.map +1 -1
  63. package/icc-x-api/icc-crypto-x-api.js +1 -1
  64. package/icc-x-api/icc-crypto-x-api.js.map +1 -1
  65. package/icc-x-api/icc-document-x-api.d.ts +2 -2
  66. package/icc-x-api/icc-document-x-api.js +45 -42
  67. package/icc-x-api/icc-document-x-api.js.map +1 -1
  68. package/icc-x-api/icc-form-x-api.js +3 -1
  69. package/icc-x-api/icc-form-x-api.js.map +1 -1
  70. package/icc-x-api/icc-helement-x-api.js +4 -4
  71. package/icc-x-api/icc-helement-x-api.js.map +1 -1
  72. package/icc-x-api/icc-maintenance-task-x-api.js +4 -2
  73. package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
  74. package/icc-x-api/icc-message-x-api.js +4 -2
  75. package/icc-x-api/icc-message-x-api.js.map +1 -1
  76. package/icc-x-api/icc-patient-x-api.js +5 -7
  77. package/icc-x-api/icc-patient-x-api.js.map +1 -1
  78. package/icc-x-api/icc-topic-x-api.js +2 -2
  79. package/icc-x-api/icc-topic-x-api.js.map +1 -1
  80. package/icc-x-api/index.d.ts +6 -2
  81. package/icc-x-api/index.js +16 -20
  82. package/icc-x-api/index.js.map +1 -1
  83. package/icc-x-api/utils/crypto-utils.d.ts +6 -4
  84. package/icc-x-api/utils/crypto-utils.js +27 -6
  85. package/icc-x-api/utils/crypto-utils.js.map +1 -1
  86. package/icc-x-api/utils/simple-lru-cache.d.ts +19 -0
  87. package/icc-x-api/utils/simple-lru-cache.js +90 -0
  88. package/icc-x-api/utils/simple-lru-cache.js.map +1 -0
  89. package/package.json +4 -2
  90. package/test/icc-x-api/crud/entities-crud-test-interface.js +0 -8
  91. package/test/icc-x-api/crud/entities-crud-test-interface.js.map +1 -1
  92. package/test/icc-x-api/crypto/exchange-data-manager-test.js +75 -93
  93. package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +1 -1
  94. package/test/icc-x-api/crypto/legacy-metadata-migration-test.js.map +1 -1
  95. package/test/icc-x-api/crypto/secure-delegations-manager-test.js +28 -16
  96. package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +1 -1
  97. package/test/utils/FakeEncryptionKeysManager.d.ts +1 -0
  98. package/test/utils/FakeEncryptionKeysManager.js +11 -0
  99. package/test/utils/FakeEncryptionKeysManager.js.map +1 -1
  100. package/test/utils/FakeExchangeDataApi.d.ts +4 -2
  101. package/test/utils/FakeExchangeDataApi.js +24 -6
  102. package/test/utils/FakeExchangeDataApi.js.map +1 -1
  103. package/test/utils/FakeExchangeDataManager.d.ts +10 -10
  104. package/test/utils/FakeExchangeDataManager.js +12 -22
  105. package/test/utils/FakeExchangeDataManager.js.map +1 -1
  106. package/test/utils/TestApi.js +1 -0
  107. package/test/utils/TestApi.js.map +1 -1
  108. package/icc-api/api/IccArticleApi.d.ts +0 -72
  109. package/icc-api/api/IccArticleApi.js +0 -149
  110. package/icc-api/api/IccArticleApi.js.map +0 -1
  111. package/icc-x-api/crypto/LegacyDelegationSecurityMetadataDecryptor.d.ts +0 -33
  112. package/icc-x-api/crypto/LegacyDelegationSecurityMetadataDecryptor.js +0 -141
  113. package/icc-x-api/crypto/LegacyDelegationSecurityMetadataDecryptor.js.map +0 -1
  114. package/icc-x-api/crypto/SecureDelegationsSecurityMetadataDecryptor.d.ts +0 -46
  115. package/icc-x-api/crypto/SecureDelegationsSecurityMetadataDecryptor.js +0 -312
  116. package/icc-x-api/crypto/SecureDelegationsSecurityMetadataDecryptor.js.map +0 -1
  117. package/icc-x-api/crypto/UserSignatureKeysManager.d.ts +0 -26
  118. package/icc-x-api/crypto/UserSignatureKeysManager.js +0 -78
  119. package/icc-x-api/crypto/UserSignatureKeysManager.js.map +0 -1
  120. package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.d.ts +0 -1
  121. package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js +0 -393
  122. package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js.map +0 -1
  123. package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.d.ts +0 -1
  124. package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js +0 -213
  125. package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js.map +0 -1
  126. package/test/icc-x-api/crypto/signature-keys-manager-test.d.ts +0 -1
  127. package/test/icc-x-api/crypto/signature-keys-manager-test.js +0 -44
  128. package/test/icc-x-api/crypto/signature-keys-manager-test.js.map +0 -1
  129. package/test/utils/FakeSignatureKeysManager.d.ts +0 -16
  130. package/test/utils/FakeSignatureKeysManager.js +0 -54
  131. package/test/utils/FakeSignatureKeysManager.js.map +0 -1
@@ -19,7 +19,6 @@ const FakeDataOwnerApi_1 = require("../../utils/FakeDataOwnerApi");
19
19
  const TestCryptoStrategies_1 = require("../../utils/TestCryptoStrategies");
20
20
  const icc_x_api_1 = require("../../../icc-x-api");
21
21
  const FakeEncryptionKeysManager_1 = require("../../utils/FakeEncryptionKeysManager");
22
- const FakeSignatureKeysManager_1 = require("../../utils/FakeSignatureKeysManager");
23
22
  const AccessControlSecretUtils_1 = require("../../../icc-x-api/crypto/AccessControlSecretUtils");
24
23
  const ExchangeData_1 = require("../../../icc-api/model/internal/ExchangeData");
25
24
  const chai_1 = require("chai");
@@ -51,7 +50,6 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
51
50
  let baseExchangeData;
52
51
  let exchangeData;
53
52
  let encryptionKeysManager;
54
- let signatureKeysManager;
55
53
  function initialiseComponents(allowFullExchangeDataLoad, optionalParameters = {}) {
56
54
  return __awaiter(this, void 0, void 0, function* () {
57
55
  const dataOwnerType = allowFullExchangeDataLoad ? DataOwnerTypeEnum_1.DataOwnerTypeEnum.Patient : DataOwnerTypeEnum_1.DataOwnerTypeEnum.Hcp;
@@ -83,10 +81,9 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
83
81
  ]);
84
82
  const cryptoStrategies = new TestCryptoStrategies_1.TestCryptoStrategies(undefined, undefined, optionalParameters.verifiedDelegateKeys);
85
83
  exchangeDataApi = new FakeExchangeDataApi_1.FakeExchangeDataApi();
86
- baseExchangeData = new BaseExchangeDataManager_1.BaseExchangeDataManager(exchangeDataApi, dataOwnerApi, primitives, allowFullExchangeDataLoad);
84
+ baseExchangeData = new BaseExchangeDataManager_1.BaseExchangeDataManager(exchangeDataApi, dataOwnerApi, primitives, allowFullExchangeDataLoad, false);
87
85
  encryptionKeysManager = yield FakeEncryptionKeysManager_1.FakeEncryptionKeysManager.create(primitives, [selfKeypair]);
88
- signatureKeysManager = new FakeSignatureKeysManager_1.FakeSignatureKeysManager(primitives);
89
- exchangeData = yield (0, ExchangeDataManager_1.initialiseExchangeDataManagerForCurrentDataOwner)(baseExchangeData, encryptionKeysManager, signatureKeysManager, accessControlSecretUtils, cryptoStrategies, dataOwnerApi, primitives, true, optionalParameters);
86
+ exchangeData = yield (0, ExchangeDataManager_1.initialiseExchangeDataManagerForCurrentDataOwner)(baseExchangeData, encryptionKeysManager, accessControlSecretUtils, cryptoStrategies, dataOwnerApi, primitives, true, optionalParameters);
90
87
  });
91
88
  }
92
89
  function checkDataEqual(actual, expected) {
@@ -109,7 +106,7 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
109
106
  return __awaiter(this, void 0, void 0, function* () {
110
107
  const encryptionKey = yield primitives.RSA.generateKeyPair(icc_x_api_1.ShaVersion.Sha256);
111
108
  const encryptionFp = (0, icc_x_api_1.ua2hex)(yield primitives.RSA.exportKey(encryptionKey.publicKey, 'spki')).slice(-32);
112
- const signatureKey = yield primitives.RSA.generateSignatureKeyPair();
109
+ const signatureKey = yield primitives.RSA.generateKeyPair(icc_x_api_1.ShaVersion.Sha1);
113
110
  const signatureFp = (0, icc_x_api_1.ua2hex)(yield primitives.RSA.exportKey(signatureKey.publicKey, 'spki')).slice(-32);
114
111
  const created = yield baseExchangeData.createExchangeData(selfId, { [signatureFp]: signatureKey.privateKey }, { [encryptionFp]: encryptionKey.publicKey, [selfKeyFpV1]: selfKeypair.publicKey });
115
112
  const modified = yield exchangeDataApi.modifyExchangeData(new ExchangeData_1.ExchangeData(Object.assign(Object.assign({}, created.exchangeData), { delegator: primitives.randomUuid() })));
@@ -183,14 +180,14 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
183
180
  yield initialiseComponents(allowFullExchangeDataLoad);
184
181
  const sfk = primitives.randomUuid();
185
182
  const initialisedCount = exchangeDataApi.callCount;
186
- const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
187
- const retrievedCachedData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
183
+ const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
184
+ const retrievedCachedData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
188
185
  exchangeDataApi.compareCallCountFromBaseline(initialisedCount, {
189
186
  createExchangeData: 1,
190
187
  // If we could fully preload we already know whether the exchange key already exists or not, otherwise we have to request from the api
191
188
  getExchangeDataByDelegatorDelegate: allowFullExchangeDataLoad ? 0 : 1,
192
189
  modifyExchangeData: 0,
193
- getExchangeDataById: 0,
190
+ getExchangeDataByIds: 0,
194
191
  getExchangeDataByParticipant: 0,
195
192
  });
196
193
  yield checkDataEqual(retrievedCachedData, createdData);
@@ -217,7 +214,7 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
217
214
  function doTest(allowFullExchangeDataLoad) {
218
215
  return __awaiter(this, void 0, void 0, function* () {
219
216
  yield initialiseComponents(allowFullExchangeDataLoad);
220
- const createdData = yield exchangeData.getOrCreateEncryptionDataTo(selfId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [primitives.randomUuid()], false);
217
+ const createdData = yield exchangeData.getOrCreateEncryptionDataTo(selfId, false);
221
218
  (0, chai_1.expect)(createdData.exchangeData.delegator).to.equal(selfId);
222
219
  (0, chai_1.expect)(createdData.exchangeData.delegate).to.equal(selfId);
223
220
  (0, chai_1.expect)(Object.keys(createdData.exchangeData.delegatorSignature)).to.have.length(1);
@@ -250,7 +247,7 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
250
247
  yield dataOwnerApi.addPublicKeyForOwner(selfId, keyData.pair);
251
248
  yield encryptionKeysManager.addOrUpdateKey(primitives, keyData.pair, false);
252
249
  }
253
- const created = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [primitives.randomUuid()], false);
250
+ const created = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
254
251
  (0, chai_1.expect)((0, collection_utils_1.setEquals)(new Set(Object.keys(created.exchangeData.exchangeKey)), new Set(Object.keys(created.exchangeData.accessControlSecret))), 'Keys used for encryption of exchange key and access control secret must be the same.').to.be.true;
255
252
  (0, chai_1.expect)((0, collection_utils_1.setEquals)(new Set(Object.keys(created.exchangeData.exchangeKey)), new Set([...delegateVerifiedKeys.map((x) => x.fingerprintV2), ...extraDelegatorVerifiedKeys.map((x) => x.fingerprintV2), selfKeyFpV2])), 'Only verified keys of delegate and delegator should be used for encryption of exchange key and access control secret.').to.be.true;
256
253
  for (const keyData of [{ pair: selfKeypair, fingerprintV2: selfKeyFpV1 }, ...extraDelegatorVerifiedKeys, ...delegateVerifiedKeys]) {
@@ -269,15 +266,15 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
269
266
  function doTest(allowFullExchangeDataLoad) {
270
267
  return __awaiter(this, void 0, void 0, function* () {
271
268
  yield initialiseComponents(allowFullExchangeDataLoad);
272
- const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
269
+ const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
273
270
  yield exchangeData.clearOrRepopulateCache();
274
271
  const countAfterCacheClear = exchangeDataApi.callCount;
275
- const reloadedData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
272
+ const reloadedData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
276
273
  exchangeDataApi.compareCallCountFromBaseline(countAfterCacheClear, {
277
274
  createExchangeData: 0,
278
275
  getExchangeDataByDelegatorDelegate: allowFullExchangeDataLoad ? 0 : 1,
279
276
  modifyExchangeData: 0,
280
- getExchangeDataById: 0,
277
+ getExchangeDataByIds: 0,
281
278
  getExchangeDataByParticipant: 0,
282
279
  });
283
280
  yield checkDataEqual(reloadedData, createdData);
@@ -292,17 +289,16 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
292
289
  function doTest(allowFullExchangeDataLoad) {
293
290
  return __awaiter(this, void 0, void 0, function* () {
294
291
  yield initialiseComponents(allowFullExchangeDataLoad);
295
- const sfk = primitives.randomUuid();
296
- const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
297
- signatureKeysManager.clearKeys();
292
+ const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
293
+ yield encryptionKeysManager.unverifyExistingKeysAndCreateNewVerified(primitives);
298
294
  yield exchangeData.clearOrRepopulateCache();
299
295
  const countAfterCacheClear = exchangeDataApi.callCount;
300
- const newData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
296
+ const newData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
301
297
  exchangeDataApi.compareCallCountFromBaseline(countAfterCacheClear, {
302
298
  createExchangeData: 1,
303
299
  getExchangeDataByDelegatorDelegate: allowFullExchangeDataLoad ? 0 : 1,
304
300
  modifyExchangeData: 0,
305
- getExchangeDataById: 0,
301
+ getExchangeDataByIds: 0,
306
302
  getExchangeDataByParticipant: 0,
307
303
  });
308
304
  (0, chai_1.expect)(_.isEqual(_.omit(createdData.exchangeData, ['rev']), _.omit(newData.exchangeData, ['rev']))).to.equal(false, 'Exchange data manager should have created new exchange data for encryption');
@@ -320,23 +316,23 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
320
316
  return __awaiter(this, void 0, void 0, function* () {
321
317
  yield initialiseComponents(allowFullExchangeDataLoad);
322
318
  const sfk = primitives.randomUuid();
323
- const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
319
+ const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
324
320
  // Tamper with exchange data
325
321
  yield exchangeDataApi.modifyExchangeData(yield tamper(createdData.exchangeData, selfKeypair, selfKeyFpV2));
326
322
  yield exchangeData.clearOrRepopulateCache();
327
323
  const countAfterCacheClear = exchangeDataApi.callCount;
328
- const newData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
324
+ const newData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
329
325
  exchangeDataApi.compareCallCountFromBaseline(countAfterCacheClear, {
330
326
  createExchangeData: 1,
331
327
  getExchangeDataByDelegatorDelegate: allowFullExchangeDataLoad ? 0 : 1,
332
328
  modifyExchangeData: 0,
333
- getExchangeDataById: 0,
329
+ getExchangeDataByIds: 0,
334
330
  getExchangeDataByParticipant: 0,
335
331
  });
336
332
  (0, chai_1.expect)(createdData.exchangeData.id).not.to.equal(newData.exchangeData.id, 'Exchange data manager should have created new exchange data for encryption');
337
333
  (0, chai_1.expect)((0, icc_x_api_1.ua2hex)(yield primitives.AES.exportKey(createdData.exchangeKey, 'raw'))).to.not.equal((0, icc_x_api_1.ua2hex)(yield primitives.AES.exportKey(newData.exchangeKey, 'raw')));
338
334
  (0, chai_1.expect)(createdData.accessControlSecret).to.not.equal(newData.accessControlSecret);
339
- const updatedUnverifiedOldData = yield exchangeData.getDecryptionDataKeyById(createdData.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], true);
335
+ const updatedUnverifiedOldData = (yield exchangeData.getDecryptionDataKeyByIds([createdData.exchangeData.id], true))[createdData.exchangeData.id];
340
336
  (0, chai_1.expect)(updatedUnverifiedOldData).to.not.be.undefined;
341
337
  });
342
338
  }
@@ -368,19 +364,18 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
368
364
  function doTest(allowFullExchangeDataLoad) {
369
365
  return __awaiter(this, void 0, void 0, function* () {
370
366
  yield initialiseComponents(allowFullExchangeDataLoad);
371
- const sfk = primitives.randomUuid();
372
- const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
367
+ const createdData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
373
368
  // Tamper with exchange data
374
369
  yield exchangeDataApi.modifyExchangeData(Object.assign(Object.assign({}, createdData.exchangeData), { delegate: delegate2Id }));
375
370
  yield exchangeData.clearOrRepopulateCache();
376
371
  const countAfterCacheClear = exchangeDataApi.callCount;
377
- const newDataToDelegate = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
378
- const newDataToDelegate2 = yield exchangeData.getOrCreateEncryptionDataTo(delegate2Id, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
372
+ const newDataToDelegate = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
373
+ const newDataToDelegate2 = yield exchangeData.getOrCreateEncryptionDataTo(delegate2Id, false);
379
374
  exchangeDataApi.compareCallCountFromBaseline(countAfterCacheClear, {
380
375
  createExchangeData: 2,
381
376
  getExchangeDataByDelegatorDelegate: allowFullExchangeDataLoad ? 0 : 2,
382
377
  modifyExchangeData: 0,
383
- getExchangeDataById: 0,
378
+ getExchangeDataByIds: 0,
384
379
  getExchangeDataByParticipant: 0,
385
380
  });
386
381
  (0, chai_1.expect)(createdData.exchangeData.id).to.not.equal(newDataToDelegate.exchangeData.id, 'Exchange data manager should have created new exchange data for encryption to delegate');
@@ -389,7 +384,7 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
389
384
  (0, chai_1.expect)((0, icc_x_api_1.ua2hex)(yield primitives.AES.exportKey(createdData.exchangeKey, 'raw'))).to.not.equal((0, icc_x_api_1.ua2hex)(yield primitives.AES.exportKey(newDataToDelegate2.exchangeKey, 'raw')));
390
385
  (0, chai_1.expect)(createdData.accessControlSecret).to.not.equal(newDataToDelegate.accessControlSecret);
391
386
  (0, chai_1.expect)(createdData.accessControlSecret).to.not.equal(newDataToDelegate2.accessControlSecret);
392
- const updatedUnverifiedOldData = yield exchangeData.getDecryptionDataKeyById(createdData.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], true);
387
+ const updatedUnverifiedOldData = (yield exchangeData.getDecryptionDataKeyByIds([createdData.exchangeData.id], true))[createdData.exchangeData.id];
393
388
  (0, chai_1.expect)(updatedUnverifiedOldData).to.not.be.undefined;
394
389
  (0, chai_1.expect)((0, icc_x_api_1.ua2hex)(yield primitives.AES.exportKey(updatedUnverifiedOldData.exchangeKey, 'raw'))).to.equal((0, icc_x_api_1.ua2hex)(yield primitives.AES.exportKey(createdData.exchangeKey, 'raw')));
395
390
  (0, chai_1.expect)(updatedUnverifiedOldData.accessControlSecret).to.equal(createdData.accessControlSecret);
@@ -404,51 +399,38 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
404
399
  function doTest(allowFullExchangeDataLoad) {
405
400
  return __awaiter(this, void 0, void 0, function* () {
406
401
  yield initialiseComponents(allowFullExchangeDataLoad);
407
- const sfk = primitives.randomUuid();
408
- const createdData1 = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], false);
402
+ const createdData1 = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
409
403
  const createdData2 = yield createDataFromRandomToSelf();
410
- signatureKeysManager.clearKeys();
404
+ yield encryptionKeysManager.unverifyExistingKeysAndCreateNewVerified(primitives);
411
405
  yield exchangeData.clearOrRepopulateCache();
412
- yield checkDataEqual(yield exchangeData.getDecryptionDataKeyById(createdData1.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], true), createdData1);
413
- yield checkDataEqual(yield exchangeData.getDecryptionDataKeyById(createdData2.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Contact, [sfk], true), createdData2);
406
+ yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([createdData1.exchangeData.id], true))[createdData1.exchangeData.id], createdData1);
407
+ yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([createdData2.exchangeData.id], true))[createdData2.exchangeData.id], createdData2);
414
408
  });
415
409
  }
416
410
  yield doTest(true);
417
411
  yield doTest(false);
418
412
  });
419
413
  });
420
- it('newly created data or data retrieved by id should be cached and retrievable by hash for the provided sfks and entity type', function () {
414
+ it('newly created data or data retrieved by id should be cached and retrievable by hash', function () {
421
415
  return __awaiter(this, void 0, void 0, function* () {
422
416
  function doTest(allowFullExchangeDataLoad) {
423
417
  return __awaiter(this, void 0, void 0, function* () {
424
418
  yield initialiseComponents(allowFullExchangeDataLoad);
425
- const sfk1 = primitives.randomUuid();
426
- const sfk2 = primitives.randomUuid();
427
- const createdData1 = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
428
- const hashes1 = [
429
- yield accessControlSecretUtils.secureDelegationKeyFor(createdData1.accessControlSecret, icc_x_api_1.EntityWithDelegationTypeName.Patient, undefined),
430
- ];
431
- const createdData2 = yield createDataFromRandomToSelf();
432
- const hashes2 = yield accessControlSecretUtils.secureDelegationKeysFor(createdData2.accessControlSecret, icc_x_api_1.EntityWithDelegationTypeName.HealthElement, [sfk1, sfk2]);
433
- yield checkDataEqual(yield exchangeData.getDecryptionDataKeyById(createdData2.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.HealthElement, [sfk1, sfk2], true), createdData2);
434
- const retrievedKeys = yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash([...hashes1, ...hashes2], icc_x_api_1.EntityWithDelegationTypeName.Message, []); // Entity type and entity sfk should be irrelevant in this case
435
- (0, chai_1.expect)(Object.keys(retrievedKeys)).to.have.length(hashes1.length + hashes2.length);
419
+ const createdData1 = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
420
+ const hashes1 = yield accessControlSecretUtils.allSecureDelegationKeysFor(createdData1.accessControlSecret);
421
+ const retrievedKeys1 = yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash(hashes1);
436
422
  for (const hash of hashes1) {
437
- yield checkDataEqual(retrievedKeys[hash], createdData1);
423
+ yield checkDataEqual(retrievedKeys1[hash], createdData1);
438
424
  }
439
- for (const hash of hashes2) {
440
- yield checkDataEqual(retrievedKeys[hash], createdData2);
425
+ if (!allowFullExchangeDataLoad) {
426
+ const createdData2 = yield createDataFromRandomToSelf();
427
+ const hashes2 = yield accessControlSecretUtils.allSecureDelegationKeysFor(createdData2.accessControlSecret);
428
+ yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([createdData2.exchangeData.id], true))[createdData2.exchangeData.id], createdData2);
429
+ const retrievedKeys2 = yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash([...hashes1, ...hashes2]);
430
+ for (const hash of hashes2) {
431
+ yield checkDataEqual(retrievedKeys2[hash], createdData2);
432
+ }
441
433
  }
442
- const unknownAccessControlSecret = primitives.randomUuid();
443
- const unknownHashes = [
444
- yield accessControlSecretUtils.secureDelegationKeyFor(unknownAccessControlSecret, icc_x_api_1.EntityWithDelegationTypeName.Patient, undefined),
445
- yield accessControlSecretUtils.secureDelegationKeyFor(unknownAccessControlSecret, icc_x_api_1.EntityWithDelegationTypeName.HealthElement, sfk1),
446
- yield accessControlSecretUtils.secureDelegationKeyFor(unknownAccessControlSecret, icc_x_api_1.EntityWithDelegationTypeName.HealthElement, sfk2),
447
- ];
448
- (0, chai_1.expect)(Object.keys(yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash(unknownHashes, icc_x_api_1.EntityWithDelegationTypeName.Patient, []))).to.have.length(0);
449
- const uncachedHash = yield accessControlSecretUtils.secureDelegationKeyFor(createdData1.accessControlSecret, icc_x_api_1.EntityWithDelegationTypeName.Document, sfk1);
450
- const retrievedByAutomaticallyCachedHash = yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash([uncachedHash], icc_x_api_1.EntityWithDelegationTypeName.Document, [sfk1]);
451
- (0, chai_1.expect)(Object.keys(retrievedByAutomaticallyCachedHash)).to.have.length(1);
452
434
  });
453
435
  }
454
436
  yield doTest(true);
@@ -460,7 +442,7 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
460
442
  function doTest(allowFullExchangeDataLoad) {
461
443
  return __awaiter(this, void 0, void 0, function* () {
462
444
  yield initialiseComponents(allowFullExchangeDataLoad);
463
- const createdBySelf = yield exchangeData.getOrCreateEncryptionDataTo(selfId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
445
+ const createdBySelf = yield exchangeData.getOrCreateEncryptionDataTo(selfId, false);
464
446
  const createdByOther = yield createDataFromRandomToSelf();
465
447
  const newKey = yield primitives.RSA.generateKeyPair(icc_x_api_1.ShaVersion.Sha256);
466
448
  yield dataOwnerApi.addPublicKeyForOwner(selfId, newKey);
@@ -468,11 +450,11 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
468
450
  encryptionKeysManager.deleteKey(selfKeyFpV1);
469
451
  yield encryptionKeysManager.addOrUpdateKey(primitives, newKey, true);
470
452
  yield exchangeData.clearOrRepopulateCache();
471
- yield checkDataEqual(yield exchangeData.getDecryptionDataKeyById(createdBySelf.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], true), {
453
+ yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([createdBySelf.exchangeData.id], true))[createdBySelf.exchangeData.id], {
472
454
  exchangeData: createdBySelf.exchangeData,
473
455
  exchangeKey: undefined,
474
456
  });
475
- yield checkDataEqual(yield exchangeData.getDecryptionDataKeyById(createdByOther.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], true), {
457
+ yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([createdByOther.exchangeData.id], true))[createdByOther.exchangeData.id], {
476
458
  exchangeData: createdByOther.exchangeData,
477
459
  exchangeKey: undefined,
478
460
  });
@@ -487,12 +469,12 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
487
469
  function doTest(allowFullExchangeDataLoad) {
488
470
  return __awaiter(this, void 0, void 0, function* () {
489
471
  yield initialiseComponents(allowFullExchangeDataLoad);
490
- const createdBySelf = yield exchangeData.getOrCreateEncryptionDataTo(selfId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
472
+ const createdBySelf = yield exchangeData.getOrCreateEncryptionDataTo(selfId, false);
491
473
  const createdByOther = yield createDataFromRandomToSelf();
492
474
  yield encryptionKeysManager.addOrUpdateKey(primitives, selfKeypair, false);
493
475
  yield exchangeData.clearOrRepopulateCache();
494
- yield checkDataEqual(yield exchangeData.getDecryptionDataKeyById(createdBySelf.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], true), createdBySelf);
495
- yield checkDataEqual(yield exchangeData.getDecryptionDataKeyById(createdByOther.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], true), createdByOther);
476
+ yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([createdBySelf.exchangeData.id], true))[createdBySelf.exchangeData.id], createdBySelf);
477
+ yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([createdByOther.exchangeData.id], true))[createdByOther.exchangeData.id], createdByOther);
496
478
  });
497
479
  }
498
480
  yield doTest(true);
@@ -507,16 +489,16 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
507
489
  function verifyCached(data) {
508
490
  return __awaiter(this, void 0, void 0, function* () {
509
491
  const apiCallsBaseline = exchangeDataApi.callCount;
510
- const hashes = yield accessControlSecretUtils.secureDelegationKeysFor(data.accessControlSecret, entityType, sfks);
492
+ const hashes = yield accessControlSecretUtils.allSecureDelegationKeysFor(data.accessControlSecret);
511
493
  for (const hash of hashes) {
512
- yield checkDataEqual((yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash([hash], entityType, sfks))[hash], data);
494
+ yield checkDataEqual((yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash([hash]))[hash], data);
513
495
  }
514
496
  if (data.exchangeData.delegator === selfId) {
515
- yield checkDataEqual(yield exchangeData.getOrCreateEncryptionDataTo(data.exchangeData.delegate, entityType, sfks, false), data);
497
+ yield checkDataEqual(yield exchangeData.getOrCreateEncryptionDataTo(data.exchangeData.delegate, false), data);
516
498
  }
517
- yield checkDataEqual(yield exchangeData.getDecryptionDataKeyById(data.exchangeData.id, entityType, sfks, true), data);
499
+ yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([data.exchangeData.id], true))[data.exchangeData.id], data);
518
500
  exchangeDataApi.compareCallCountFromBaseline(apiCallsBaseline, {
519
- getExchangeDataById: 0,
501
+ getExchangeDataByIds: 0,
520
502
  createExchangeData: 0,
521
503
  modifyExchangeData: 0,
522
504
  getExchangeDataByParticipant: 0,
@@ -527,14 +509,14 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
527
509
  function verifyNotCachedThenCache(data) {
528
510
  return __awaiter(this, void 0, void 0, function* () {
529
511
  const apiCallsBaseline = exchangeDataApi.callCount;
530
- const hashes = yield accessControlSecretUtils.secureDelegationKeysFor(data.accessControlSecret, entityType, sfks);
512
+ const hashes = [yield accessControlSecretUtils.secureDelegationKeyFor(data.accessControlSecret, entityType)];
531
513
  for (const hash of hashes) {
532
- (0, chai_1.expect)(Object.keys(yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash([hash], entityType, sfks))).to.have.length(0);
514
+ (0, chai_1.expect)(Object.keys(yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash([hash]))).to.have.length(0);
533
515
  }
534
516
  if (data.exchangeData.delegator === selfId) {
535
- yield checkDataEqual(yield exchangeData.getOrCreateEncryptionDataTo(data.exchangeData.delegate, entityType, sfks, false), data);
517
+ yield checkDataEqual(yield exchangeData.getOrCreateEncryptionDataTo(data.exchangeData.delegate, false), data);
536
518
  exchangeDataApi.compareCallCountFromBaseline(apiCallsBaseline, {
537
- getExchangeDataById: 0,
519
+ getExchangeDataByIds: 0,
538
520
  createExchangeData: 0,
539
521
  modifyExchangeData: 0,
540
522
  getExchangeDataByParticipant: 0,
@@ -542,9 +524,9 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
542
524
  });
543
525
  }
544
526
  else {
545
- yield checkDataEqual(yield exchangeData.getDecryptionDataKeyById(data.exchangeData.id, entityType, sfks, true), data);
527
+ yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([data.exchangeData.id], true))[data.exchangeData.id], data);
546
528
  exchangeDataApi.compareCallCountFromBaseline(apiCallsBaseline, {
547
- getExchangeDataById: 1,
529
+ getExchangeDataByIds: 1,
548
530
  createExchangeData: 0,
549
531
  modifyExchangeData: 0,
550
532
  getExchangeDataByParticipant: 0,
@@ -553,8 +535,8 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
553
535
  }
554
536
  });
555
537
  }
556
- const createdBySelf1 = yield exchangeData.getOrCreateEncryptionDataTo(selfId, entityType, sfks, false);
557
- const createdBySelf2 = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, entityType, sfks, false);
538
+ const createdBySelf1 = yield exchangeData.getOrCreateEncryptionDataTo(selfId, false);
539
+ const createdBySelf2 = yield exchangeData.getOrCreateEncryptionDataTo(delegateId, false);
558
540
  const createdByOther1 = yield createDataFromRandomToSelf(); // Not automatically cached: created by someone else
559
541
  const createdByOther2 = yield createDataFromRandomToSelf(); // Not automatically cached: created by someone else
560
542
  // noinspection DuplicatedCode
@@ -590,14 +572,14 @@ const IccExchangeDataApi_1 = require("../../../icc-api/api/internal/IccExchangeD
590
572
  it('implementation with unlimited cache should preload all existing exchange data on creation', function () {
591
573
  return __awaiter(this, void 0, void 0, function* () {
592
574
  yield initialiseComponents(true);
593
- const createdBySelf = yield exchangeData.getOrCreateEncryptionDataTo(selfId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
575
+ const createdBySelf = yield exchangeData.getOrCreateEncryptionDataTo(selfId, false);
594
576
  const createdByOther = yield createDataFromRandomToSelf();
595
- const recreatedExchangeData = yield (0, ExchangeDataManager_1.initialiseExchangeDataManagerForCurrentDataOwner)(baseExchangeData, encryptionKeysManager, signatureKeysManager, accessControlSecretUtils, new TestCryptoStrategies_1.TestCryptoStrategies(), dataOwnerApi, primitives, true);
577
+ const recreatedExchangeData = yield (0, ExchangeDataManager_1.initialiseExchangeDataManagerForCurrentDataOwner)(baseExchangeData, encryptionKeysManager, accessControlSecretUtils, new TestCryptoStrategies_1.TestCryptoStrategies(), dataOwnerApi, primitives, true);
596
578
  const apiCallsAfterCreation = exchangeDataApi.callCount;
597
- yield checkDataEqual(yield recreatedExchangeData.getDecryptionDataKeyById(createdBySelf.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false), createdBySelf);
598
- yield checkDataEqual(yield recreatedExchangeData.getDecryptionDataKeyById(createdByOther.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false), createdByOther);
579
+ yield checkDataEqual((yield recreatedExchangeData.getDecryptionDataKeyByIds([createdBySelf.exchangeData.id], false))[createdBySelf.exchangeData.id], createdBySelf);
580
+ yield checkDataEqual((yield recreatedExchangeData.getDecryptionDataKeyByIds([createdByOther.exchangeData.id], false))[createdByOther.exchangeData.id], createdByOther);
599
581
  exchangeDataApi.compareCallCountFromBaseline(apiCallsAfterCreation, {
600
- getExchangeDataById: 0,
582
+ getExchangeDataByIds: 0,
601
583
  createExchangeData: 0,
602
584
  modifyExchangeData: 0,
603
585
  getExchangeDataByParticipant: 0,
@@ -621,8 +603,8 @@ let env;
621
603
  return __awaiter(this, void 0, void 0, function* () {
622
604
  const hcp1Details = yield (0, test_utils_1.createNewHcpApi)(env);
623
605
  const hcp2Details = yield (0, test_utils_1.createNewHcpApi)(env);
624
- const ed1to2 = yield hcp1Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp2Details.credentials.dataOwnerId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
625
- const ed2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
606
+ const ed1to2 = yield hcp1Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp2Details.credentials.dataOwnerId, false);
607
+ const ed2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId, false);
626
608
  yield hcp1Details.api.cryptoApi.exchangeData.clearOrRepopulateCache();
627
609
  yield hcp2Details.api.cryptoApi.exchangeData.clearOrRepopulateCache();
628
610
  const newKeyPair = yield hcp1Details.api.cryptoApi.primitives.RSA.generateKeyPair(icc_x_api_1.ShaVersion.Sha256);
@@ -632,8 +614,8 @@ let env;
632
614
  yield hcp1Details.api.cryptoApi.exchangeData.giveAccessBackTo(hcp2Details.credentials.dataOwnerId, exportedPub);
633
615
  yield hcp1Details.api.cryptoApi.exchangeData.clearOrRepopulateCache();
634
616
  yield hcp2Details.api.cryptoApi.exchangeData.clearOrRepopulateCache();
635
- const updatedEd1to2 = yield hcp1Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp2Details.credentials.dataOwnerId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
636
- const updatedEd2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
617
+ const updatedEd1to2 = yield hcp1Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp2Details.credentials.dataOwnerId, false);
618
+ const updatedEd2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId, false);
637
619
  (0, chai_1.expect)(updatedEd1to2.exchangeData.id).to.equal(ed1to2.exchangeData.id);
638
620
  (0, chai_1.expect)(Object.keys(updatedEd2to1.exchangeData.exchangeKey).length).to.be.greaterThan(Object.keys(ed2to1.exchangeData.exchangeKey).length);
639
621
  (0, chai_1.expect)(Object.keys(updatedEd2to1.exchangeData.exchangeKey).length).to.equal(Object.keys(updatedEd2to1.exchangeData.accessControlSecret).length);
@@ -648,8 +630,8 @@ let env;
648
630
  return __awaiter(this, void 0, void 0, function* () {
649
631
  const hcp1Details = yield (0, test_utils_1.createNewHcpApi)(env);
650
632
  const hcp2Details = yield (0, test_utils_1.createNewHcpApi)(env);
651
- const ed1to2 = yield hcp1Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp2Details.credentials.dataOwnerId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
652
- const ed2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
633
+ const ed1to2 = yield hcp1Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp2Details.credentials.dataOwnerId, false);
634
+ const ed2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId, false);
653
635
  yield hcp1Details.api.cryptoApi.exchangeData.clearOrRepopulateCache();
654
636
  yield hcp2Details.api.cryptoApi.exchangeData.clearOrRepopulateCache();
655
637
  const exchangeDataApi = new IccExchangeDataApi_1.IccExchangeDataApi(env.iCureUrl, {}, hcp1Details.api.authApi.authenticationProvider, fetch);
@@ -671,15 +653,15 @@ let env;
671
653
  yield hcp1Details.api.cryptoApi.exchangeData.giveAccessBackTo(hcp2Details.credentials.dataOwnerId, exportedPub);
672
654
  yield hcp1Details.api.cryptoApi.exchangeData.clearOrRepopulateCache();
673
655
  yield hcp2Details.api.cryptoApi.exchangeData.clearOrRepopulateCache();
674
- const updatedEd1to2 = yield hcp1Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp2Details.credentials.dataOwnerId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
675
- const updatedEd2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], false);
656
+ const updatedEd1to2 = yield hcp1Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp2Details.credentials.dataOwnerId, false);
657
+ const updatedEd2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId, false);
676
658
  (0, chai_1.expect)(updatedEd1to2.exchangeData.id).to.not.equal(ed1to2.exchangeData.id);
677
659
  (0, chai_1.expect)(updatedEd2to1.exchangeData.id).to.not.equal(ed2to1.exchangeData.id);
678
- const decData1to2 = yield hcp1Details.api.cryptoApi.exchangeData.getDecryptionDataKeyById(ed1to2.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], true);
660
+ const decData1to2 = (yield hcp1Details.api.cryptoApi.exchangeData.getDecryptionDataKeyByIds([ed1to2.exchangeData.id], true))[ed1to2.exchangeData.id];
679
661
  (0, chai_1.expect)(decData1to2).to.not.be.undefined;
680
662
  (0, chai_1.expect)(decData1to2.exchangeKey).to.not.be.undefined;
681
663
  (0, chai_1.expect)(decData1to2.accessControlSecret).to.not.be.undefined;
682
- const decData2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getDecryptionDataKeyById(ed2to1.exchangeData.id, icc_x_api_1.EntityWithDelegationTypeName.Patient, [], true);
664
+ const decData2to1 = (yield hcp2Details.api.cryptoApi.exchangeData.getDecryptionDataKeyByIds([ed2to1.exchangeData.id], true))[ed2to1.exchangeData.id];
683
665
  (0, chai_1.expect)(decData2to1).to.not.be.undefined;
684
666
  (0, chai_1.expect)(decData2to1.exchangeKey).to.not.be.undefined;
685
667
  (0, chai_1.expect)(decData2to1.accessControlSecret).to.not.be.undefined;