@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.
- package/icc-api/api/internal/IccExchangeDataApi.d.ts +2 -0
- package/icc-api/api/internal/IccExchangeDataApi.js +10 -0
- package/icc-api/api/internal/IccExchangeDataApi.js.map +1 -1
- package/icc-api/iccApi.d.ts +0 -1
- package/icc-api/iccApi.js +0 -1
- package/icc-api/iccApi.js.map +1 -1
- package/icc-api/index.d.ts +0 -1
- package/icc-api/index.js +0 -1
- package/icc-api/index.js.map +1 -1
- package/icc-x-api/crypto/AccessControlSecretUtils.d.ts +4 -13
- package/icc-x-api/crypto/AccessControlSecretUtils.js +19 -29
- package/icc-x-api/crypto/AccessControlSecretUtils.js.map +1 -1
- package/icc-x-api/crypto/BaseExchangeDataManager.d.ts +8 -3
- package/icc-x-api/crypto/BaseExchangeDataManager.js +45 -10
- package/icc-x-api/crypto/BaseExchangeDataManager.js.map +1 -1
- package/icc-x-api/crypto/BaseExchangeKeysManager.d.ts +2 -3
- package/icc-x-api/crypto/BaseExchangeKeysManager.js +17 -20
- package/icc-x-api/crypto/BaseExchangeKeysManager.js.map +1 -1
- package/icc-x-api/crypto/CryptoPrimitives.d.ts +2 -0
- package/icc-x-api/crypto/CryptoPrimitives.js +3 -0
- package/icc-x-api/crypto/CryptoPrimitives.js.map +1 -1
- package/icc-x-api/crypto/DelegationsDeAnonymization.d.ts +3 -3
- package/icc-x-api/crypto/DelegationsDeAnonymization.js +7 -7
- package/icc-x-api/crypto/DelegationsDeAnonymization.js.map +1 -1
- package/icc-x-api/crypto/ExchangeDataManager.d.ts +19 -29
- package/icc-x-api/crypto/ExchangeDataManager.js +200 -225
- package/icc-x-api/crypto/ExchangeDataManager.js.map +1 -1
- package/icc-x-api/crypto/ExchangeDataMapManager.js +6 -4
- package/icc-x-api/crypto/ExchangeDataMapManager.js.map +1 -1
- package/icc-x-api/crypto/ExchangeKeysManager.d.ts +4 -16
- package/icc-x-api/crypto/ExchangeKeysManager.js +44 -41
- package/icc-x-api/crypto/ExchangeKeysManager.js.map +1 -1
- package/icc-x-api/crypto/ExtendedApisUtils.d.ts +47 -25
- package/icc-x-api/crypto/ExtendedApisUtils.js.map +1 -1
- package/icc-x-api/crypto/ExtendedApisUtilsImpl.d.ts +19 -18
- package/icc-x-api/crypto/ExtendedApisUtilsImpl.js +213 -134
- package/icc-x-api/crypto/ExtendedApisUtilsImpl.js.map +1 -1
- package/icc-x-api/crypto/HMACUtils.d.ts +2 -2
- package/icc-x-api/crypto/HMACUtils.js +3 -4
- package/icc-x-api/crypto/HMACUtils.js.map +1 -1
- package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.d.ts +1 -0
- package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.js +5 -0
- package/icc-x-api/crypto/NativeCryptoPrimitivesBridge.js.map +1 -1
- package/icc-x-api/crypto/SecureDelegationsManager.d.ts +0 -1
- package/icc-x-api/crypto/SecureDelegationsManager.js +17 -49
- package/icc-x-api/crypto/SecureDelegationsManager.js.map +1 -1
- package/icc-x-api/crypto/SecurityMetadataDecryptor.d.ts +59 -90
- package/icc-x-api/crypto/SecurityMetadataDecryptor.js +470 -56
- package/icc-x-api/crypto/SecurityMetadataDecryptor.js.map +1 -1
- package/icc-x-api/crypto/ShamirKeysManager.js +1 -1
- package/icc-x-api/crypto/ShamirKeysManager.js.map +1 -1
- package/icc-x-api/crypto/TransferKeysManager.d.ts +1 -3
- package/icc-x-api/crypto/TransferKeysManager.js +2 -4
- package/icc-x-api/crypto/TransferKeysManager.js.map +1 -1
- package/icc-x-api/icc-accesslog-x-api.d.ts +2 -2
- package/icc-x-api/icc-accesslog-x-api.js +7 -3
- package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
- package/icc-x-api/icc-calendar-item-x-api.js +4 -2
- package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
- package/icc-x-api/icc-contact-x-api.d.ts +0 -1
- package/icc-x-api/icc-contact-x-api.js +33 -48
- package/icc-x-api/icc-contact-x-api.js.map +1 -1
- package/icc-x-api/icc-crypto-x-api.js +1 -1
- package/icc-x-api/icc-crypto-x-api.js.map +1 -1
- package/icc-x-api/icc-document-x-api.d.ts +2 -2
- package/icc-x-api/icc-document-x-api.js +45 -42
- package/icc-x-api/icc-document-x-api.js.map +1 -1
- package/icc-x-api/icc-form-x-api.js +3 -1
- package/icc-x-api/icc-form-x-api.js.map +1 -1
- package/icc-x-api/icc-helement-x-api.js +4 -4
- package/icc-x-api/icc-helement-x-api.js.map +1 -1
- package/icc-x-api/icc-maintenance-task-x-api.js +4 -2
- package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
- package/icc-x-api/icc-message-x-api.js +4 -2
- package/icc-x-api/icc-message-x-api.js.map +1 -1
- package/icc-x-api/icc-patient-x-api.js +5 -7
- package/icc-x-api/icc-patient-x-api.js.map +1 -1
- package/icc-x-api/icc-topic-x-api.js +2 -2
- package/icc-x-api/icc-topic-x-api.js.map +1 -1
- package/icc-x-api/index.d.ts +6 -2
- package/icc-x-api/index.js +16 -20
- package/icc-x-api/index.js.map +1 -1
- package/icc-x-api/utils/crypto-utils.d.ts +6 -4
- package/icc-x-api/utils/crypto-utils.js +27 -6
- package/icc-x-api/utils/crypto-utils.js.map +1 -1
- package/icc-x-api/utils/simple-lru-cache.d.ts +19 -0
- package/icc-x-api/utils/simple-lru-cache.js +90 -0
- package/icc-x-api/utils/simple-lru-cache.js.map +1 -0
- package/package.json +4 -2
- package/test/icc-x-api/crud/entities-crud-test-interface.js +0 -8
- package/test/icc-x-api/crud/entities-crud-test-interface.js.map +1 -1
- package/test/icc-x-api/crypto/exchange-data-manager-test.js +75 -93
- package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +1 -1
- package/test/icc-x-api/crypto/legacy-metadata-migration-test.js.map +1 -1
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js +28 -16
- package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +1 -1
- package/test/utils/FakeEncryptionKeysManager.d.ts +1 -0
- package/test/utils/FakeEncryptionKeysManager.js +11 -0
- package/test/utils/FakeEncryptionKeysManager.js.map +1 -1
- package/test/utils/FakeExchangeDataApi.d.ts +4 -2
- package/test/utils/FakeExchangeDataApi.js +24 -6
- package/test/utils/FakeExchangeDataApi.js.map +1 -1
- package/test/utils/FakeExchangeDataManager.d.ts +10 -10
- package/test/utils/FakeExchangeDataManager.js +12 -22
- package/test/utils/FakeExchangeDataManager.js.map +1 -1
- package/test/utils/TestApi.js +1 -0
- package/test/utils/TestApi.js.map +1 -1
- package/icc-api/api/IccArticleApi.d.ts +0 -72
- package/icc-api/api/IccArticleApi.js +0 -149
- package/icc-api/api/IccArticleApi.js.map +0 -1
- package/icc-x-api/crypto/LegacyDelegationSecurityMetadataDecryptor.d.ts +0 -33
- package/icc-x-api/crypto/LegacyDelegationSecurityMetadataDecryptor.js +0 -141
- package/icc-x-api/crypto/LegacyDelegationSecurityMetadataDecryptor.js.map +0 -1
- package/icc-x-api/crypto/SecureDelegationsSecurityMetadataDecryptor.d.ts +0 -46
- package/icc-x-api/crypto/SecureDelegationsSecurityMetadataDecryptor.js +0 -312
- package/icc-x-api/crypto/SecureDelegationsSecurityMetadataDecryptor.js.map +0 -1
- package/icc-x-api/crypto/UserSignatureKeysManager.d.ts +0 -26
- package/icc-x-api/crypto/UserSignatureKeysManager.js +0 -78
- package/icc-x-api/crypto/UserSignatureKeysManager.js.map +0 -1
- package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.d.ts +0 -1
- package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js +0 -393
- package/test/icc-x-api/crypto/secure-delegations-metadata-decryptor-test.js.map +0 -1
- package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.d.ts +0 -1
- package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js +0 -213
- package/test/icc-x-api/crypto/security-metadata-decryptor-chain-test.js.map +0 -1
- package/test/icc-x-api/crypto/signature-keys-manager-test.d.ts +0 -1
- package/test/icc-x-api/crypto/signature-keys-manager-test.js +0 -44
- package/test/icc-x-api/crypto/signature-keys-manager-test.js.map +0 -1
- package/test/utils/FakeSignatureKeysManager.d.ts +0 -16
- package/test/utils/FakeSignatureKeysManager.js +0 -54
- 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
|
-
|
|
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.
|
|
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,
|
|
187
|
-
const retrievedCachedData = yield exchangeData.getOrCreateEncryptionDataTo(delegateId,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|
|
296
|
-
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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
|
|
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,
|
|
378
|
-
const newDataToDelegate2 = yield exchangeData.getOrCreateEncryptionDataTo(delegate2Id,
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
-
|
|
404
|
+
yield encryptionKeysManager.unverifyExistingKeysAndCreateNewVerified(primitives);
|
|
411
405
|
yield exchangeData.clearOrRepopulateCache();
|
|
412
|
-
yield checkDataEqual(yield exchangeData.
|
|
413
|
-
yield checkDataEqual(yield exchangeData.
|
|
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
|
|
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
|
|
426
|
-
const
|
|
427
|
-
const
|
|
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(
|
|
423
|
+
yield checkDataEqual(retrievedKeys1[hash], createdData1);
|
|
438
424
|
}
|
|
439
|
-
|
|
440
|
-
yield
|
|
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,
|
|
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.
|
|
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.
|
|
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,
|
|
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.
|
|
495
|
-
yield checkDataEqual(yield exchangeData.
|
|
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.
|
|
492
|
+
const hashes = yield accessControlSecretUtils.allSecureDelegationKeysFor(data.accessControlSecret);
|
|
511
493
|
for (const hash of hashes) {
|
|
512
|
-
yield checkDataEqual((yield exchangeData.getCachedDecryptionDataKeyByAccessControlHash([hash]
|
|
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,
|
|
497
|
+
yield checkDataEqual(yield exchangeData.getOrCreateEncryptionDataTo(data.exchangeData.delegate, false), data);
|
|
516
498
|
}
|
|
517
|
-
yield checkDataEqual(yield exchangeData.
|
|
499
|
+
yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([data.exchangeData.id], true))[data.exchangeData.id], data);
|
|
518
500
|
exchangeDataApi.compareCallCountFromBaseline(apiCallsBaseline, {
|
|
519
|
-
|
|
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.
|
|
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]
|
|
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,
|
|
517
|
+
yield checkDataEqual(yield exchangeData.getOrCreateEncryptionDataTo(data.exchangeData.delegate, false), data);
|
|
536
518
|
exchangeDataApi.compareCallCountFromBaseline(apiCallsBaseline, {
|
|
537
|
-
|
|
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.
|
|
527
|
+
yield checkDataEqual((yield exchangeData.getDecryptionDataKeyByIds([data.exchangeData.id], true))[data.exchangeData.id], data);
|
|
546
528
|
exchangeDataApi.compareCallCountFromBaseline(apiCallsBaseline, {
|
|
547
|
-
|
|
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,
|
|
557
|
-
const createdBySelf2 = yield exchangeData.getOrCreateEncryptionDataTo(delegateId,
|
|
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,
|
|
575
|
+
const createdBySelf = yield exchangeData.getOrCreateEncryptionDataTo(selfId, false);
|
|
594
576
|
const createdByOther = yield createDataFromRandomToSelf();
|
|
595
|
-
const recreatedExchangeData = yield (0, ExchangeDataManager_1.initialiseExchangeDataManagerForCurrentDataOwner)(baseExchangeData, encryptionKeysManager,
|
|
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.
|
|
598
|
-
yield checkDataEqual(yield recreatedExchangeData.
|
|
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
|
-
|
|
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,
|
|
625
|
-
const ed2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId,
|
|
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,
|
|
636
|
-
const updatedEd2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId,
|
|
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,
|
|
652
|
-
const ed2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId,
|
|
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,
|
|
675
|
-
const updatedEd2to1 = yield hcp2Details.api.cryptoApi.exchangeData.getOrCreateEncryptionDataTo(hcp1Details.credentials.dataOwnerId,
|
|
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.
|
|
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.
|
|
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;
|