@icure/api 8.6.18 → 8.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/icc-api/api/IccDocumentApi.d.ts +10 -2
  2. package/icc-api/api/IccDocumentApi.js +22 -4
  3. package/icc-api/api/IccDocumentApi.js.map +1 -1
  4. package/icc-api/api/IccReceiptApi.d.ts +17 -0
  5. package/icc-api/api/IccReceiptApi.js +52 -0
  6. package/icc-api/api/IccReceiptApi.js.map +1 -1
  7. package/icc-api/model/DataAttachment.d.ts +22 -0
  8. package/icc-api/model/DataAttachment.js.map +1 -1
  9. package/icc-api/model/Document.d.ts +6 -0
  10. package/icc-api/model/Document.js.map +1 -1
  11. package/icc-api/model/Receipt.d.ts +6 -0
  12. package/icc-api/model/Receipt.js.map +1 -1
  13. package/icc-x-api/crypto/BaseExchangeDataManager.js +2 -2
  14. package/icc-x-api/crypto/BaseExchangeDataManager.js.map +1 -1
  15. package/icc-x-api/crypto/ExchangeDataManager.js +3 -3
  16. package/icc-x-api/crypto/ExchangeDataManager.js.map +1 -1
  17. package/icc-x-api/crypto/ExtendedApisUtils.d.ts +1 -1
  18. package/icc-x-api/crypto/ExtendedApisUtils.js.map +1 -1
  19. package/icc-x-api/crypto/ExtendedApisUtilsImpl.d.ts +1 -1
  20. package/icc-x-api/crypto/ExtendedApisUtilsImpl.js +8 -2
  21. package/icc-x-api/crypto/ExtendedApisUtilsImpl.js.map +1 -1
  22. package/icc-x-api/crypto/RecoveryDataEncryption.js.map +1 -1
  23. package/icc-x-api/icc-accesslog-x-api.js +7 -7
  24. package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
  25. package/icc-x-api/icc-calendar-item-x-api.js +7 -7
  26. package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
  27. package/icc-x-api/icc-classification-x-api.js +4 -5
  28. package/icc-x-api/icc-classification-x-api.js.map +1 -1
  29. package/icc-x-api/icc-code-x-api.d.ts +2 -2
  30. package/icc-x-api/icc-code-x-api.js +3 -33
  31. package/icc-x-api/icc-code-x-api.js.map +1 -1
  32. package/icc-x-api/icc-contact-x-api.js +20 -33
  33. package/icc-x-api/icc-contact-x-api.js.map +1 -1
  34. package/icc-x-api/icc-doctemplate-x-api.js.map +1 -1
  35. package/icc-x-api/icc-document-x-api.d.ts +8 -7
  36. package/icc-x-api/icc-document-x-api.js +64 -22
  37. package/icc-x-api/icc-document-x-api.js.map +1 -1
  38. package/icc-x-api/icc-form-x-api.js +3 -4
  39. package/icc-x-api/icc-form-x-api.js.map +1 -1
  40. package/icc-x-api/icc-helement-x-api.js +11 -11
  41. package/icc-x-api/icc-helement-x-api.js.map +1 -1
  42. package/icc-x-api/icc-invoice-x-api.js +3 -4
  43. package/icc-x-api/icc-invoice-x-api.js.map +1 -1
  44. package/icc-x-api/icc-maintenance-task-x-api.js +3 -3
  45. package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
  46. package/icc-x-api/icc-patient-x-api.js +29 -29
  47. package/icc-x-api/icc-patient-x-api.js.map +1 -1
  48. package/icc-x-api/icc-receipt-x-api.d.ts +40 -0
  49. package/icc-x-api/icc-receipt-x-api.js +79 -1
  50. package/icc-x-api/icc-receipt-x-api.js.map +1 -1
  51. package/icc-x-api/icc-topic-x-api.js.map +1 -1
  52. package/icc-x-api/index.js +1 -1
  53. package/icc-x-api/index.js.map +1 -1
  54. package/icc-x-api/utils/code-util.d.ts +23 -0
  55. package/icc-x-api/utils/code-util.js +39 -2
  56. package/icc-x-api/utils/code-util.js.map +1 -1
  57. package/icc-x-api/utils/collection-utils.d.ts +13 -0
  58. package/icc-x-api/utils/collection-utils.js +69 -0
  59. package/icc-x-api/utils/collection-utils.js.map +1 -1
  60. package/icc-x-api/utils/compression-utils.d.ts +28 -0
  61. package/icc-x-api/utils/compression-utils.js +106 -0
  62. package/icc-x-api/utils/compression-utils.js.map +1 -0
  63. package/icc-x-api/utils/crypto-utils.js +7 -7
  64. package/icc-x-api/utils/crypto-utils.js.map +1 -1
  65. package/icc-x-api/utils/formatting-util.d.ts +1 -3
  66. package/icc-x-api/utils/formatting-util.js +15 -17
  67. package/icc-x-api/utils/formatting-util.js.map +1 -1
  68. package/icc-x-api/utils/hcp-util.js +2 -3
  69. package/icc-x-api/utils/hcp-util.js.map +1 -1
  70. package/icc-x-api/utils/insurability-util.js +10 -8
  71. package/icc-x-api/utils/insurability-util.js.map +1 -1
  72. package/icc-x-api/utils/lzma-wasm.d.ts +6 -0
  73. package/icc-x-api/utils/lzma-wasm.js +81 -0
  74. package/icc-x-api/utils/lzma-wasm.js.map +1 -0
  75. package/icc-x-api/utils/mutex.d.ts +12 -0
  76. package/icc-x-api/utils/mutex.js +26 -0
  77. package/icc-x-api/utils/mutex.js.map +1 -0
  78. package/icc-x-api/utils/websocket.js +7 -7
  79. package/icc-x-api/utils/websocket.js.map +1 -1
  80. package/icc-x-api/wasm/lzma/lzma.js +2 -0
  81. package/icc-x-api/wasm/lzma/lzma.wasm +0 -0
  82. package/package.json +2 -11
  83. package/icc-x-api/utils/uuid-encoder.d.ts +0 -44
  84. package/icc-x-api/utils/uuid-encoder.js +0 -114
  85. package/icc-x-api/utils/uuid-encoder.js.map +0 -1
  86. package/test/icc-api/api/IccAgendaApi.d.ts +0 -1
  87. package/test/icc-api/api/IccAgendaApi.js +0 -64
  88. package/test/icc-api/api/IccAgendaApi.js.map +0 -1
  89. package/test/icc-api/api/IccAnonymousAccessApi.d.ts +0 -1
  90. package/test/icc-api/api/IccAnonymousAccessApi.js +0 -58
  91. package/test/icc-api/api/IccAnonymousAccessApi.js.map +0 -1
  92. package/test/icc-api/api/IccCalendarItemApi.d.ts +0 -1
  93. package/test/icc-api/api/IccCalendarItemApi.js +0 -67
  94. package/test/icc-api/api/IccCalendarItemApi.js.map +0 -1
  95. package/test/icc-api/api/IccCalendarItemTypeApi.d.ts +0 -1
  96. package/test/icc-api/api/IccCalendarItemTypeApi.js +0 -96
  97. package/test/icc-api/api/IccCalendarItemTypeApi.js.map +0 -1
  98. package/test/icc-api/api/IccCodeApi.d.ts +0 -1
  99. package/test/icc-api/api/IccCodeApi.js +0 -38
  100. package/test/icc-api/api/IccCodeApi.js.map +0 -1
  101. package/test/icc-api/api/IccDocumentApi.d.ts +0 -1
  102. package/test/icc-api/api/IccDocumentApi.js +0 -199
  103. package/test/icc-api/api/IccDocumentApi.js.map +0 -1
  104. package/test/icc-api/api/IccGroupApi.d.ts +0 -1
  105. package/test/icc-api/api/IccGroupApi.js +0 -50
  106. package/test/icc-api/api/IccGroupApi.js.map +0 -1
  107. package/test/icc-api/api/IccKeywordApi.d.ts +0 -1
  108. package/test/icc-api/api/IccKeywordApi.js +0 -64
  109. package/test/icc-api/api/IccKeywordApi.js.map +0 -1
  110. package/test/icc-api/api/IccMedicalLocationApi.d.ts +0 -1
  111. package/test/icc-api/api/IccMedicalLocationApi.js +0 -64
  112. package/test/icc-api/api/IccMedicalLocationApi.js.map +0 -1
  113. package/test/icc-api/api/IccPlaceApi.d.ts +0 -1
  114. package/test/icc-api/api/IccPlaceApi.js +0 -64
  115. package/test/icc-api/api/IccPlaceApi.js.map +0 -1
  116. package/test/icc-api/api/IccRecoveryDataApi.d.ts +0 -1
  117. package/test/icc-api/api/IccRecoveryDataApi.js +0 -95
  118. package/test/icc-api/api/IccRecoveryDataApi.js.map +0 -1
  119. package/test/icc-api/api/IccRoleApi.d.ts +0 -1
  120. package/test/icc-api/api/IccRoleApi.js +0 -34
  121. package/test/icc-api/api/IccRoleApi.js.map +0 -1
  122. package/test/icc-api/api/IccUserApi.d.ts +0 -1
  123. package/test/icc-api/api/IccUserApi.js +0 -96
  124. package/test/icc-api/api/IccUserApi.js.map +0 -1
  125. package/test/icc-api/e2e/IccCalendarItemApi.d.ts +0 -1
  126. package/test/icc-api/e2e/IccCalendarItemApi.js +0 -46
  127. package/test/icc-api/e2e/IccCalendarItemApi.js.map +0 -1
  128. package/test/icc-api/model/modelHelpersTest.d.ts +0 -1
  129. package/test/icc-api/model/modelHelpersTest.js +0 -45
  130. package/test/icc-api/model/modelHelpersTest.js.map +0 -1
  131. package/test/icc-x-api/auth/group-switch-test.d.ts +0 -1
  132. package/test/icc-x-api/auth/group-switch-test.js +0 -81
  133. package/test/icc-x-api/auth/group-switch-test.js.map +0 -1
  134. package/test/icc-x-api/auth/jwt-concurrency-test.d.ts +0 -2
  135. package/test/icc-x-api/auth/jwt-concurrency-test.js +0 -112
  136. package/test/icc-x-api/auth/jwt-concurrency-test.js.map +0 -1
  137. package/test/icc-x-api/auth/jwt-provider-test.d.ts +0 -1
  138. package/test/icc-x-api/auth/jwt-provider-test.js +0 -197
  139. package/test/icc-x-api/auth/jwt-provider-test.js.map +0 -1
  140. package/test/icc-x-api/auth/smart-auth-provider-test.d.ts +0 -1
  141. package/test/icc-x-api/auth/smart-auth-provider-test.js +0 -224
  142. package/test/icc-x-api/auth/smart-auth-provider-test.js.map +0 -1
  143. package/test/icc-x-api/autofix-anonymity-test.d.ts +0 -1
  144. package/test/icc-x-api/autofix-anonymity-test.js +0 -122
  145. package/test/icc-x-api/autofix-anonymity-test.js.map +0 -1
  146. package/test/icc-x-api/confidential-entities-test.d.ts +0 -1
  147. package/test/icc-x-api/confidential-entities-test.js +0 -168
  148. package/test/icc-x-api/confidential-entities-test.js.map +0 -1
  149. package/test/icc-x-api/crud/comprehensive-crud-test.d.ts +0 -1
  150. package/test/icc-x-api/crud/comprehensive-crud-test.js +0 -276
  151. package/test/icc-x-api/crud/comprehensive-crud-test.js.map +0 -1
  152. package/test/icc-x-api/crud/entities-crud-test-interface.d.ts +0 -16
  153. package/test/icc-x-api/crud/entities-crud-test-interface.js +0 -408
  154. package/test/icc-x-api/crud/entities-crud-test-interface.js.map +0 -1
  155. package/test/icc-x-api/crypto/anonymous-delegations-test.d.ts +0 -1
  156. package/test/icc-x-api/crypto/anonymous-delegations-test.js +0 -587
  157. package/test/icc-x-api/crypto/anonymous-delegations-test.js.map +0 -1
  158. package/test/icc-x-api/crypto/concurrency.d.ts +0 -1
  159. package/test/icc-x-api/crypto/concurrency.js +0 -35
  160. package/test/icc-x-api/crypto/concurrency.js.map +0 -1
  161. package/test/icc-x-api/crypto/crypto-utils.d.ts +0 -1
  162. package/test/icc-x-api/crypto/crypto-utils.js +0 -79
  163. package/test/icc-x-api/crypto/crypto-utils.js.map +0 -1
  164. package/test/icc-x-api/crypto/cryptoTest.d.ts +0 -2
  165. package/test/icc-x-api/crypto/cryptoTest.js +0 -402
  166. package/test/icc-x-api/crypto/cryptoTest.js.map +0 -1
  167. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.d.ts +0 -1
  168. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js +0 -166
  169. package/test/icc-x-api/crypto/delegate-ci-to-patient-with-missing-keys-test.js.map +0 -1
  170. package/test/icc-x-api/crypto/exchange-data-manager-test.d.ts +0 -1
  171. package/test/icc-x-api/crypto/exchange-data-manager-test.js +0 -674
  172. package/test/icc-x-api/crypto/exchange-data-manager-test.js.map +0 -1
  173. package/test/icc-x-api/crypto/full-crypto-test.d.ts +0 -1
  174. package/test/icc-x-api/crypto/full-crypto-test.js +0 -454
  175. package/test/icc-x-api/crypto/full-crypto-test.js.map +0 -1
  176. package/test/icc-x-api/crypto/legacy-metadata-migration-test.d.ts +0 -1
  177. package/test/icc-x-api/crypto/legacy-metadata-migration-test.js +0 -379
  178. package/test/icc-x-api/crypto/legacy-metadata-migration-test.js.map +0 -1
  179. package/test/icc-x-api/crypto/secure-delegations-manager-test.d.ts +0 -1
  180. package/test/icc-x-api/crypto/secure-delegations-manager-test.js +0 -278
  181. package/test/icc-x-api/crypto/secure-delegations-manager-test.js.map +0 -1
  182. package/test/icc-x-api/crypto/shamir.d.ts +0 -2
  183. package/test/icc-x-api/crypto/shamir.js +0 -167
  184. package/test/icc-x-api/crypto/shamir.js.map +0 -1
  185. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.d.ts +0 -1
  186. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js +0 -71
  187. package/test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.js.map +0 -1
  188. package/test/icc-x-api/crypto/soft-deleted-data-owners.d.ts +0 -2
  189. package/test/icc-x-api/crypto/soft-deleted-data-owners.js +0 -113
  190. package/test/icc-x-api/crypto/soft-deleted-data-owners.js.map +0 -1
  191. package/test/icc-x-api/crypto/user-encryption-keys-manager-test.d.ts +0 -1
  192. package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js +0 -246
  193. package/test/icc-x-api/crypto/user-encryption-keys-manager-test.js.map +0 -1
  194. package/test/icc-x-api/entity-with-attachments-api-test.d.ts +0 -1
  195. package/test/icc-x-api/entity-with-attachments-api-test.js +0 -142
  196. package/test/icc-x-api/entity-with-attachments-api-test.js.map +0 -1
  197. package/test/icc-x-api/filters/filters.d.ts +0 -1
  198. package/test/icc-x-api/filters/filters.js +0 -49
  199. package/test/icc-x-api/filters/filters.js.map +0 -1
  200. package/test/icc-x-api/filters/healthelement.d.ts +0 -1
  201. package/test/icc-x-api/filters/healthelement.js +0 -333
  202. package/test/icc-x-api/filters/healthelement.js.map +0 -1
  203. package/test/icc-x-api/icc-accesslog-x-api.d.ts +0 -1
  204. package/test/icc-x-api/icc-accesslog-x-api.js +0 -106
  205. package/test/icc-x-api/icc-accesslog-x-api.js.map +0 -1
  206. package/test/icc-x-api/icc-application-settings-x-api.d.ts +0 -1
  207. package/test/icc-x-api/icc-application-settings-x-api.js +0 -91
  208. package/test/icc-x-api/icc-application-settings-x-api.js.map +0 -1
  209. package/test/icc-x-api/icc-auth-api.d.ts +0 -1
  210. package/test/icc-x-api/icc-auth-api.js +0 -47
  211. package/test/icc-x-api/icc-auth-api.js.map +0 -1
  212. package/test/icc-x-api/icc-calendar-item-x-api.d.ts +0 -1
  213. package/test/icc-x-api/icc-calendar-item-x-api.js +0 -150
  214. package/test/icc-x-api/icc-calendar-item-x-api.js.map +0 -1
  215. package/test/icc-x-api/icc-contact-x-api.d.ts +0 -1
  216. package/test/icc-x-api/icc-contact-x-api.js +0 -355
  217. package/test/icc-x-api/icc-contact-x-api.js.map +0 -1
  218. package/test/icc-x-api/icc-document-x-api.d.ts +0 -1
  219. package/test/icc-x-api/icc-document-x-api.js +0 -76
  220. package/test/icc-x-api/icc-document-x-api.js.map +0 -1
  221. package/test/icc-x-api/icc-form-x-api.d.ts +0 -1
  222. package/test/icc-x-api/icc-form-x-api.js +0 -413
  223. package/test/icc-x-api/icc-form-x-api.js.map +0 -1
  224. package/test/icc-x-api/icc-hcparty-x-api-test.d.ts +0 -1
  225. package/test/icc-x-api/icc-hcparty-x-api-test.js +0 -43
  226. package/test/icc-x-api/icc-hcparty-x-api-test.js.map +0 -1
  227. package/test/icc-x-api/icc-helement-x-api-test.d.ts +0 -1
  228. package/test/icc-x-api/icc-helement-x-api-test.js +0 -155
  229. package/test/icc-x-api/icc-helement-x-api-test.js.map +0 -1
  230. package/test/icc-x-api/icc-invoice-x-api.d.ts +0 -1
  231. package/test/icc-x-api/icc-invoice-x-api.js +0 -99
  232. package/test/icc-x-api/icc-invoice-x-api.js.map +0 -1
  233. package/test/icc-x-api/icc-maintenance-task-x-api-test.d.ts +0 -1
  234. package/test/icc-x-api/icc-maintenance-task-x-api-test.js +0 -222
  235. package/test/icc-x-api/icc-maintenance-task-x-api-test.js.map +0 -1
  236. package/test/icc-x-api/icc-message-x-api.d.ts +0 -1
  237. package/test/icc-x-api/icc-message-x-api.js +0 -54
  238. package/test/icc-x-api/icc-message-x-api.js.map +0 -1
  239. package/test/icc-x-api/icc-patient-x-api-test.d.ts +0 -1
  240. package/test/icc-x-api/icc-patient-x-api-test.js +0 -165
  241. package/test/icc-x-api/icc-patient-x-api-test.js.map +0 -1
  242. package/test/icc-x-api/icc-recovery-x-api.d.ts +0 -1
  243. package/test/icc-x-api/icc-recovery-x-api.js +0 -175
  244. package/test/icc-x-api/icc-recovery-x-api.js.map +0 -1
  245. package/test/icc-x-api/icc-topic-x-api.d.ts +0 -1
  246. package/test/icc-x-api/icc-topic-x-api.js +0 -269
  247. package/test/icc-x-api/icc-topic-x-api.js.map +0 -1
  248. package/test/icc-x-api/icc-user-x-api-test.d.ts +0 -1
  249. package/test/icc-x-api/icc-user-x-api-test.js +0 -99
  250. package/test/icc-x-api/icc-user-x-api-test.js.map +0 -1
  251. package/test/icc-x-api/keyless-api.d.ts +0 -1
  252. package/test/icc-x-api/keyless-api.js +0 -125
  253. package/test/icc-x-api/keyless-api.js.map +0 -1
  254. package/test/icc-x-api/patient-user.d.ts +0 -2
  255. package/test/icc-x-api/patient-user.js +0 -103
  256. package/test/icc-x-api/patient-user.js.map +0 -1
  257. package/test/icc-x-api/storage/storage.d.ts +0 -1
  258. package/test/icc-x-api/storage/storage.js +0 -48
  259. package/test/icc-x-api/storage/storage.js.map +0 -1
  260. package/test/icc-x-api/test-api-no-parent.d.ts +0 -1
  261. package/test/icc-x-api/test-api-no-parent.js +0 -79
  262. package/test/icc-x-api/test-api-no-parent.js.map +0 -1
  263. package/test/icc-x-api/test-legacy-data-support.d.ts +0 -1
  264. package/test/icc-x-api/test-legacy-data-support.js +0 -375
  265. package/test/icc-x-api/test-legacy-data-support.js.map +0 -1
  266. package/test/icc-x-api/utils/graph-test.d.ts +0 -1
  267. package/test/icc-x-api/utils/graph-test.js +0 -54
  268. package/test/icc-x-api/utils/graph-test.js.map +0 -1
  269. package/test/icc-x-api/utils/lru-temporised-async-cache-test.d.ts +0 -1
  270. package/test/icc-x-api/utils/lru-temporised-async-cache-test.js +0 -364
  271. package/test/icc-x-api/utils/lru-temporised-async-cache-test.js.map +0 -1
  272. package/test/support/CSM-185.d.ts +0 -1
  273. package/test/support/CSM-185.js +0 -124
  274. package/test/support/CSM-185.js.map +0 -1
  275. package/test/support/CSM-243.d.ts +0 -1
  276. package/test/support/CSM-243.js +0 -120
  277. package/test/support/CSM-243.js.map +0 -1
  278. package/test/support/CSM-543.d.ts +0 -1
  279. package/test/support/CSM-543.js +0 -164
  280. package/test/support/CSM-543.js.map +0 -1
  281. package/test/support/CSM-729.d.ts +0 -1
  282. package/test/support/CSM-729.js +0 -225
  283. package/test/support/CSM-729.js.map +0 -1
  284. package/test/support/CSM-87.d.ts +0 -0
  285. package/test/support/CSM-87.js +0 -21
  286. package/test/support/CSM-87.js.map +0 -1
  287. package/test/support/CSM-93.d.ts +0 -1
  288. package/test/support/CSM-93.js +0 -112
  289. package/test/support/CSM-93.js.map +0 -1
  290. package/test/utils/FakeDataOwnerApi.d.ts +0 -32
  291. package/test/utils/FakeDataOwnerApi.js +0 -136
  292. package/test/utils/FakeDataOwnerApi.js.map +0 -1
  293. package/test/utils/FakeEncryptionKeysManager.d.ts +0 -36
  294. package/test/utils/FakeEncryptionKeysManager.js +0 -98
  295. package/test/utils/FakeEncryptionKeysManager.js.map +0 -1
  296. package/test/utils/FakeExchangeDataApi.d.ts +0 -32
  297. package/test/utils/FakeExchangeDataApi.js +0 -92
  298. package/test/utils/FakeExchangeDataApi.js.map +0 -1
  299. package/test/utils/FakeExchangeDataManager.d.ts +0 -48
  300. package/test/utils/FakeExchangeDataManager.js +0 -82
  301. package/test/utils/FakeExchangeDataManager.js.map +0 -1
  302. package/test/utils/FakeExchangeDataMapManager.d.ts +0 -12
  303. package/test/utils/FakeExchangeDataMapManager.js +0 -38
  304. package/test/utils/FakeExchangeDataMapManager.js.map +0 -1
  305. package/test/utils/FakeGenericApi.d.ts +0 -16
  306. package/test/utils/FakeGenericApi.js +0 -65
  307. package/test/utils/FakeGenericApi.js.map +0 -1
  308. package/test/utils/KeylessCryptoStrategies.d.ts +0 -23
  309. package/test/utils/KeylessCryptoStrategies.js +0 -26
  310. package/test/utils/KeylessCryptoStrategies.js.map +0 -1
  311. package/test/utils/TestApi.d.ts +0 -3
  312. package/test/utils/TestApi.js +0 -30
  313. package/test/utils/TestApi.js.map +0 -1
  314. package/test/utils/TestCollectionUtils.d.ts +0 -1
  315. package/test/utils/TestCollectionUtils.js +0 -109
  316. package/test/utils/TestCollectionUtils.js.map +0 -1
  317. package/test/utils/TestCryptoStrategies.d.ts +0 -42
  318. package/test/utils/TestCryptoStrategies.js +0 -80
  319. package/test/utils/TestCryptoStrategies.js.map +0 -1
  320. package/test/utils/TestStorage.d.ts +0 -23
  321. package/test/utils/TestStorage.js +0 -61
  322. package/test/utils/TestStorage.js.map +0 -1
  323. package/test/utils/roles.d.ts +0 -14
  324. package/test/utils/roles.js +0 -345
  325. package/test/utils/roles.js.map +0 -1
  326. package/test/utils/test_utils.d.ts +0 -87
  327. package/test/utils/test_utils.js +0 -452
  328. package/test/utils/test_utils.js.map +0 -1
@@ -1 +0,0 @@
1
- import 'isomorphic-fetch';
@@ -1,71 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const uuid_1 = require("uuid");
13
- const User_1 = require("../../../icc-api/model/User");
14
- const mocha_1 = require("mocha");
15
- const crypto_1 = require("crypto");
16
- require("isomorphic-fetch");
17
- const icc_api_1 = require("../../../icc-api");
18
- const chai_1 = require("chai");
19
- const test_utils_1 = require("../../utils/test_utils");
20
- const TestStorage_1 = require("../../utils/TestStorage");
21
- const TestCryptoStrategies_1 = require("../../utils/TestCryptoStrategies");
22
- const types_1 = require("@icure/test-setup/types");
23
- const icc_x_api_1 = require("../../../icc-x-api");
24
- const icc_x_api_2 = require("../../../icc-x-api");
25
- (0, test_utils_1.setLocalStorage)(fetch);
26
- let env;
27
- (0, mocha_1.describe)('Full battery of tests on crypto and keys', function () {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- this.timeout(600000);
30
- (0, mocha_1.before)(function () {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
33
- env = yield initializer.execute((0, types_1.getEnvVariables)());
34
- });
35
- });
36
- (0, mocha_1.it)(`Share patient from hcp to patient`, () => __awaiter(this, void 0, void 0, function* () {
37
- var _a;
38
- const { childApi: api, childUser: u } = yield (0, test_utils_1.createHcpHierarchyApis)(env);
39
- const patient = yield api.patientApi.createPatientWithUser(u, yield api.patientApi.newInstance(u, { id: (0, uuid_1.v4)(), firstName: 'test', lastName: 'test', note: 'secure' }));
40
- const heNote = 'Some encrypted note';
41
- const he = yield api.healthcareElementApi.createHealthElementWithUser(u, yield api.healthcareElementApi.newInstance(u, patient, { note: heNote }));
42
- const check = yield api.patientApi.getPatientWithUser(u, patient.id);
43
- (0, chai_1.expect)(check.note).to.equal('secure');
44
- const newPatientUser = yield api.userApi.createUser(new User_1.User({
45
- id: `user-${patient.id}-patient`,
46
- login: `patient-${patient.id}`,
47
- status: 'ACTIVE',
48
- passwordHash: 'LetMeInForReal',
49
- patientId: patient.id,
50
- }));
51
- const apiAsPatient = yield icc_x_api_1.IcureApi.initialise(env.iCureUrl, { username: newPatientUser.login, password: 'LetMeInForReal' }, new TestCryptoStrategies_1.TestCryptoStrategies(yield api.cryptoApi.primitives.RSA.generateKeyPair(icc_x_api_1.ShaVersion.Sha256)), crypto_1.webcrypto, fetch, {
52
- storage: new TestStorage_1.TestStorage(),
53
- keyStorage: new TestStorage_1.TestKeyStorage(),
54
- });
55
- const patientBaseApi = new icc_api_1.IccPatientApi(env.iCureUrl, {}, new icc_x_api_2.BasicAuthenticationProvider(newPatientUser.login, 'LetMeInForReal'));
56
- const pat = yield patientBaseApi.getPatient(patient.id);
57
- (0, chai_1.expect)((_a = pat.note) !== null && _a !== void 0 ? _a : undefined).to.be.undefined;
58
- yield api.patientApi.shareAllDataOfPatient(u, patient.id, u.healthcarePartyId, [patient.id], { [patient.id]: ['all'] });
59
- yield apiAsPatient.cryptoApi.forceReload();
60
- const patUser = yield apiAsPatient.userApi.getCurrentUser();
61
- const entity = yield apiAsPatient.patientApi.getPatientWithUser(patUser, patient.id);
62
- const retrievedHe = yield apiAsPatient.healthcareElementApi.getHealthElementWithUser(patUser, he.id);
63
- (0, chai_1.expect)(entity.id).to.be.not.null;
64
- (0, chai_1.expect)(entity.rev).to.be.not.null;
65
- (0, chai_1.expect)(entity.note).to.equal('secure');
66
- (0, chai_1.expect)(retrievedHe.id).to.equal(he.id);
67
- (0, chai_1.expect)(retrievedHe.note).to.equal(heNote);
68
- }));
69
- });
70
- });
71
- //# sourceMappingURL=share-to-newly-created-patient-from-hcp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"share-to-newly-created-patient-from-hcp.js","sourceRoot":"","sources":["../../../../test/icc-x-api/crypto/share-to-newly-created-patient-from-hcp.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuid } from 'uuid'\nimport { User } from '../../../icc-api/model/User'\nimport { before, describe, it } from 'mocha'\n\nimport { webcrypto } from 'crypto'\nimport 'isomorphic-fetch'\n\nimport { IccPatientApi } from '../../../icc-api'\nimport { expect } from 'chai'\n\nimport { createHcpHierarchyApis, getEnvironmentInitializer, setLocalStorage } from '../../utils/test_utils'\nimport { TestKeyStorage, TestStorage } from '../../utils/TestStorage'\nimport { TestCryptoStrategies } from '../../utils/TestCryptoStrategies'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { IcureApi, ShaVersion } from '../../../icc-x-api'\nimport { BasicAuthenticationProvider } from '../../../icc-x-api'\n\nsetLocalStorage(fetch)\n\nlet env: TestVars\n\ndescribe('Full battery of tests on crypto and keys', async function () {\n this.timeout(600000)\n\n before(async function () {\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n it(`Share patient from hcp to patient`, async () => {\n const { childApi: api, childUser: u } = await createHcpHierarchyApis(env!)\n\n const patient = await api.patientApi.createPatientWithUser(\n u,\n await api.patientApi.newInstance(u, { id: uuid(), firstName: 'test', lastName: 'test', note: 'secure' })\n )\n const heNote = 'Some encrypted note'\n const he = await api.healthcareElementApi.createHealthElementWithUser(u, await api.healthcareElementApi.newInstance(u, patient, { note: heNote }))\n const check = await api.patientApi.getPatientWithUser(u, patient.id)\n\n expect(check.note).to.equal('secure')\n\n const newPatientUser = await api.userApi.createUser(\n new User({\n id: `user-${patient.id}-patient`,\n login: `patient-${patient.id}`,\n status: 'ACTIVE',\n passwordHash: 'LetMeInForReal',\n patientId: patient.id,\n })\n )\n\n const apiAsPatient = await IcureApi.initialise(\n env!.iCureUrl,\n { username: newPatientUser.login!, password: 'LetMeInForReal' },\n new TestCryptoStrategies(await api.cryptoApi.primitives.RSA.generateKeyPair(ShaVersion.Sha256)),\n webcrypto as unknown as Crypto,\n fetch,\n {\n storage: new TestStorage(),\n keyStorage: new TestKeyStorage(),\n }\n )\n\n const patientBaseApi = new IccPatientApi(env!.iCureUrl, {}, new BasicAuthenticationProvider(newPatientUser.login!, 'LetMeInForReal'))\n\n const pat = await patientBaseApi.getPatient(patient.id)\n\n expect(pat.note ?? undefined).to.be.undefined\n\n await api.patientApi.shareAllDataOfPatient(u, patient.id, u.healthcarePartyId!, [patient.id], { [patient.id]: ['all'] })\n await apiAsPatient.cryptoApi.forceReload()\n const patUser = await apiAsPatient.userApi.getCurrentUser()\n const entity = await apiAsPatient.patientApi.getPatientWithUser(patUser, patient.id)\n const retrievedHe = await apiAsPatient.healthcareElementApi.getHealthElementWithUser(patUser, he.id!)\n\n expect(entity.id).to.be.not.null\n expect(entity.rev).to.be.not.null\n expect(entity.note).to.equal('secure')\n expect(retrievedHe.id).to.equal(he.id)\n expect(retrievedHe.note).to.equal(heNote)\n })\n})\n"]}
@@ -1,2 +0,0 @@
1
- import 'isomorphic-fetch';
2
- import 'mocha';
@@ -1,113 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- require("isomorphic-fetch");
13
- require("mocha");
14
- const test_utils_1 = require("../../utils/test_utils");
15
- const mocha_1 = require("mocha");
16
- const types_1 = require("@icure/test-setup/types");
17
- const icc_x_api_1 = require("../../../icc-x-api");
18
- const crypto_1 = require("crypto");
19
- const HealthcareParty_1 = require("../../../icc-api/model/HealthcareParty");
20
- const TestApi_1 = require("../../utils/TestApi");
21
- const chai_1 = require("chai");
22
- (0, test_utils_1.setLocalStorage)(fetch);
23
- describe('SDL in an environment with soft-deleted data owners', function () {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- this.timeout(600000);
26
- let env;
27
- let masterApi;
28
- let primitives;
29
- // Test values, not real data
30
- const pubKeyHex = '30820122300d06092a864886f70d01010105000382010f003082010a0282010100a53f247f466c8f4e39d04ac72e260949f66d0e6f0aa2875d670f3d7f6c7f45ecbfe8ce31a26abbca8008d75d135339a739ca3e0ee058b9595722db46701cd0dfbb9ef4f96d1ac337cf78fe4449a26be244020464d44ff0d3bf0b7bcb53666750fa76298e832386eb6e5a6e15d2e366e5c8e53acf0a6ecf20a43fd752f708797e58aaa60ceec23cf3ddc5eacca6630a068ef0e7ea52bfdec756456124610b5bcce6025e2cd4a03eb54a7bc2076531348136671102a89ea3a275147b273bfb17f11b759f20c2068c5ba4fa081cc7087b582300d8acb7c6bcc2b8485290d7c165f855180176662fa08af735e64091086d6d5d1f6a2fb1ccc08799369fcd6d68d8250203010001'; // pragma: allowlist secret
31
- const privKeyHex = '308204bd020100300d06092a864886f70d0101010500048204a7308204a30201000282010100a53f247f466c8f4e39d04ac72e260949f66d0e6f0aa2875d670f3d7f6c7f45ecbfe8ce31a26abbca8008d75d135339a739ca3e0ee058b9595722db46701cd0dfbb9ef4f96d1ac337cf78fe4449a26be244020464d44ff0d3bf0b7bcb53666750fa76298e832386eb6e5a6e15d2e366e5c8e53acf0a6ecf20a43fd752f708797e58aaa60ceec23cf3ddc5eacca6630a068ef0e7ea52bfdec756456124610b5bcce6025e2cd4a03eb54a7bc2076531348136671102a89ea3a275147b273bfb17f11b759f20c2068c5ba4fa081cc7087b582300d8acb7c6bcc2b8485290d7c165f855180176662fa08af735e64091086d6d5d1f6a2fb1ccc08799369fcd6d68d8250203010001028201000189beeb385a9652e212e03f4e5ca84579f7b5e4aeb2a893e3fbae54db4babf8f2285692fbb206a171e3a32d889a83b4dcc2d725084d8b1c1bc58548f88e2c1b890187c23293c73163cafa82e43490d080558c78ebc8fab2ddda5b829efa1b0813ecb9a24bf22eb54e47a532aacdd70d587b59bac79c146d7759e8c52aeb774603f4b282e699aca98793aa0086233a8aafc8fad58b62df011f33c1dcc6efdfc9aa51f4f11ea450ba5e02f9b69de33c756f3504ff086d2e58c25db871e3c021ee3720837466bb41d886bd4300eeac41742206110158578315d29a527b520e11ec6f7e98558931bdde63a4402635473244fa9764bb3527ff33473ff08f63b3a94102818100c8032014c593f8aecc15287d3dfd6143c75e8fb27faf7944fa030016b26fa5133d8e0d13a5244bcd6155ba29258a498e44fef239dc75dee9db4756c9a2b2be93cf2c67049ff2b2f5cbf949960e44e3fc56c90a66485ec22079a0eb864100404e0d7ea96f21ced9793633d87c49056be4c507768d51c310f69605befec087bbcd02818100d380b7a8cbc5a87c5d91e1497949acfe3c61671b31bc4c54f2f8e8cd8e709a617b49d1e7d6c0333fbb42af119db8660d1a58165e716b976bebdb12104c0dba951719f8c6711e84b704bcdd80248a767609680e4ff125126a23bbee5362f88d881c5c24c5ff0400edde1dd7044fd0d5d06a9cda33a1004daad7df8aa2eb63a5b90281801d0ab721ccfe8b617628ac546327e373a0034f0230201e8fb16db61995973874eebf2d8ee8afb881fddc20c7d0b79fae94be2015deb90ec10e21f1ac1d7faec46f9496f0c8f8c89b801e965cbf7da94cfe9cfa7197988abf8469a5493d2ef8275d36430bebf0c90b1c9fb2937956dc2fbf9c31ce9b4ca3adea62b334f267c3110281806453facb275e6bbe12e4d0697a0f68f070d40384f2e2cf92bc6f367fcbc1be79df71f51074de577133f33df8ad487ba05b8ecd8d9f5fda44676d53f4471f7c129d12c4dfdd690cab84a3d2aea6a6c7ead62b761e95d57016c93caca101a1c6017af27abf316944c79145b66965333b39d258f568e846ac910e360c1d9c6b788102818100879751ba5fe91d86410037ca9df05b2bb689734af710ab50a75b1aa1083dd596f295d710ba630c9fbfe6dcdedd8f0fca22595f8723376e72721c01275572692ebd2d5b39d5715ea052ed0968a9dabb76f7eef7c4c894a5031ae237772c21b62a43322e324c793fccf8b3abe340ca029e54255ed735549918352f3abaaf0850b7'; // pragma: allowlist secret
32
- const deletedOtherId = 'dc88f05e-6f9f-4203-bc8d-59b1737322f4'; // pragma: allowlist secret
33
- const exchangeKeySelf = '6aac0c669a4423d5fed7c8d5a434ddf70e8f9ab34db8104cf88d810a535f2701'; // pragma: allowlist secret
34
- const exchangeKeyOther = '24a58ab4837d2a7dbed477abf03c87816dfbae113604a1e3d93093194291907e'; // pragma: allowlist secret
35
- function makeTestHcp(props) {
36
- const hcpId = primitives.randomUuid();
37
- return new HealthcareParty_1.HealthcareParty({
38
- id: hcpId,
39
- name: `Test-${primitives.randomUuid()}`,
40
- hcPartyKeys: props.includeHcPartyKeys
41
- ? {
42
- [hcpId]: [
43
- '785fd227c9a4bb185adea3070fdc571696df3f5e513ba7fe3e5f50b0cf5a449def0cbc7e806a626945c441adcd09feaf6c6bf3da6460347efc620be3b81bdbf3804cabdfdeac3f4d5417db0191a3a1032e57670be7db630256c862db0ed87a67454c8660cb30e7bd8bf3d3ec218dae2107616933e3882200add851ae49cb2ec731f0425f1cea7d69a530d6debff6c60e1663733c946e48ac800a70044ecc32bb5cbe184484e4bb6ac3ad42435e80d6c3d2b8684d1cfff9fe77bdb3fdaae71482f018945d878175a12407af3b9ef245cc6128ea956292f8e7f5e2d74368de42445675326b7e1dbd7990502cb098b1abef8e33f3d353a332912221d0039f787c69', // pragma: allowlist secret
44
- '785fd227c9a4bb185adea3070fdc571696df3f5e513ba7fe3e5f50b0cf5a449def0cbc7e806a626945c441adcd09feaf6c6bf3da6460347efc620be3b81bdbf3804cabdfdeac3f4d5417db0191a3a1032e57670be7db630256c862db0ed87a67454c8660cb30e7bd8bf3d3ec218dae2107616933e3882200add851ae49cb2ec731f0425f1cea7d69a530d6debff6c60e1663733c946e48ac800a70044ecc32bb5cbe184484e4bb6ac3ad42435e80d6c3d2b8684d1cfff9fe77bdb3fdaae71482f018945d878175a12407af3b9ef245cc6128ea956292f8e7f5e2d74368de42445675326b7e1dbd7990502cb098b1abef8e33f3d353a332912221d0039f787c69', // pragma: allowlist secret
45
- ],
46
- 'dc88f05e-6f9f-4203-bc8d-59b1737322f4': [
47
- // pragma: allowlist secret
48
- '9e8ce2e76f0716a5ff537ea56c6ec7725ed067afc3a8c1eb8ef63f5a6c6de1a901c651c433f558224be3ea6e09748c2dfa535b0d9114a5058126db7803a21ba99dc9877b372e6fbbdacf6d8e3410ee93c985959ab4f0267acf562619fee7723f050542ecfc1642dcf6f5d678994d58d8c83d8be65b5f399af19205777216d9eb28ecbb00c5ce57f253973403845f98b94d86361cccaeb33772aa491b9c1dc1fc95c0a9f74b2d26e895a4ff80d9b32fd318ea42088e6249f027a2b6afe98bd9dece83dc24e454a8a62e78b88952f38a87cdb580dda47c87496e44a5fde0e9886289aeded4a404411a1e28d28fc09fd305f4f43e0bce0c3605eb419b2795be70e7', // pragma: allowlist secret
49
- '27511848a060104b0b92447df4a6e1a11de92d65892b6d07104eab6add3ce57f664a1fd2431e509818a232e0601f0621ecf35df4492c53b18ceb21747a51cd863852c586fa9f3a0dd4e19b1038540ecc63724115cbb6909793a1ffceea4498dc7ae5e9fd4120912c13b276639036a6d859a2cc836b267aaeb33a876c8d40caa5ae4c5fde2122b1d3107f074ad28c38be6a96b5c899d5fda2e66c8bef4a541c41f177e868d8e521b35be07b96def15a6b15cd5a8d1e6fc2df3ce6fbd280d315082160054d904f71cd8b4d3822a2812a1a5224390ec4591319c0bad98429ccadba3f04f9b602d92a9e95f367bdd03fe5c943d4bc9ea595be27f53797b3d7c00f03', // pragma: allowlist secret
50
- ],
51
- }
52
- : {},
53
- aesExchangeKeys: props.includeAesExchangeKeys
54
- ? {
55
- // pragma: allowlist nextline secret
56
- '30820122300d06092a864886f70d01010105000382010f003082010a0282010100a53f247f466c8f4e39d04ac72e260949f66d0e6f0aa2875d670f3d7f6c7f45ecbfe8ce31a26abbca8008d75d135339a739ca3e0ee058b9595722db46701cd0dfbb9ef4f96d1ac337cf78fe4449a26be244020464d44ff0d3bf0b7bcb53666750fa76298e832386eb6e5a6e15d2e366e5c8e53acf0a6ecf20a43fd752f708797e58aaa60ceec23cf3ddc5eacca6630a068ef0e7ea52bfdec756456124610b5bcce6025e2cd4a03eb54a7bc2076531348136671102a89ea3a275147b273bfb17f11b759f20c2068c5ba4fa081cc7087b582300d8acb7c6bcc2b8485290d7c165f855180176662fa08af735e64091086d6d5d1f6a2fb1ccc08799369fcd6d68d8250203010001': {
57
- [hcpId]: {
58
- // pragma: allowlist secret
59
- ccc08799369fcd6d68d8250203010001: '785fd227c9a4bb185adea3070fdc571696df3f5e513ba7fe3e5f50b0cf5a449def0cbc7e806a626945c441adcd09feaf6c6bf3da6460347efc620be3b81bdbf3804cabdfdeac3f4d5417db0191a3a1032e57670be7db630256c862db0ed87a67454c8660cb30e7bd8bf3d3ec218dae2107616933e3882200add851ae49cb2ec731f0425f1cea7d69a530d6debff6c60e1663733c946e48ac800a70044ecc32bb5cbe184484e4bb6ac3ad42435e80d6c3d2b8684d1cfff9fe77bdb3fdaae71482f018945d878175a12407af3b9ef245cc6128ea956292f8e7f5e2d74368de42445675326b7e1dbd7990502cb098b1abef8e33f3d353a332912221d0039f787c69', // pragma: allowlist secret
60
- },
61
- 'dc88f05e-6f9f-4203-bc8d-59b1737322f4': {
62
- // pragma: allowlist secret
63
- // pragma: allowlist secret
64
- ccc08799369fcd6d68d8250203010001: '9e8ce2e76f0716a5ff537ea56c6ec7725ed067afc3a8c1eb8ef63f5a6c6de1a901c651c433f558224be3ea6e09748c2dfa535b0d9114a5058126db7803a21ba99dc9877b372e6fbbdacf6d8e3410ee93c985959ab4f0267acf562619fee7723f050542ecfc1642dcf6f5d678994d58d8c83d8be65b5f399af19205777216d9eb28ecbb00c5ce57f253973403845f98b94d86361cccaeb33772aa491b9c1dc1fc95c0a9f74b2d26e895a4ff80d9b32fd318ea42088e6249f027a2b6afe98bd9dece83dc24e454a8a62e78b88952f38a87cdb580dda47c87496e44a5fde0e9886289aeded4a404411a1e28d28fc09fd305f4f43e0bce0c3605eb419b2795be70e7', // pragma: allowlist secret
65
- // pragma: allowlist nextline secret
66
- '0c8b6fa8a116ecfee683b10203010001': '27511848a060104b0b92447df4a6e1a11de92d65892b6d07104eab6add3ce57f664a1fd2431e509818a232e0601f0621ecf35df4492c53b18ceb21747a51cd863852c586fa9f3a0dd4e19b1038540ecc63724115cbb6909793a1ffceea4498dc7ae5e9fd4120912c13b276639036a6d859a2cc836b267aaeb33a876c8d40caa5ae4c5fde2122b1d3107f074ad28c38be6a96b5c899d5fda2e66c8bef4a541c41f177e868d8e521b35be07b96def15a6b15cd5a8d1e6fc2df3ce6fbd280d315082160054d904f71cd8b4d3822a2812a1a5224390ec4591319c0bad98429ccadba3f04f9b602d92a9e95f367bdd03fe5c943d4bc9ea595be27f53797b3d7c00f03', // pragma: allowlist secret
67
- },
68
- },
69
- }
70
- : {},
71
- publicKey: pubKeyHex,
72
- });
73
- }
74
- (0, mocha_1.before)(function () {
75
- return __awaiter(this, void 0, void 0, function* () {
76
- const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
77
- env = yield initializer.execute((0, types_1.getEnvVariables)());
78
- masterApi = yield test_utils_1.TestUtils.initMasterApi(env);
79
- primitives = masterApi.cryptoApi.primitives;
80
- });
81
- });
82
- function doLegacyKeysTestWithDeletedDataOwner(hcp) {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- const userPw = primitives.randomUuid();
85
- const user = yield masterApi.userApi.createUser({
86
- id: primitives.randomUuid(),
87
- email: `${primitives.randomUuid()}@test.icure.com`,
88
- passwordHash: userPw,
89
- healthcarePartyId: hcp.id,
90
- });
91
- const hcpKeypair = yield primitives.RSA.importKeyPair('pkcs8', (0, icc_x_api_1.ua2ab)((0, icc_x_api_1.hex2ua)(privKeyHex)), 'spki', (0, icc_x_api_1.ua2ab)((0, icc_x_api_1.hex2ua)(pubKeyHex)), icc_x_api_1.ShaVersion.Sha1);
92
- const testApi = yield (0, TestApi_1.TestApi)(env.iCureUrl, user.email, userPw, crypto_1.webcrypto, hcpKeypair);
93
- const selfKeys = yield testApi.cryptoApi.exchangeKeys.getDecryptionExchangeKeysFor(hcp.id, hcp.id);
94
- (0, chai_1.expect)(selfKeys.length).to.eq(1);
95
- const selfKeyHex = (0, icc_x_api_1.ua2hex)(yield primitives.AES.exportKey(selfKeys[0], 'raw'));
96
- (0, chai_1.expect)(selfKeyHex).to.eq(exchangeKeySelf);
97
- const delegateKeys = yield testApi.cryptoApi.exchangeKeys.getDecryptionExchangeKeysFor(hcp.id, deletedOtherId);
98
- (0, chai_1.expect)(delegateKeys.length).to.eq(1);
99
- const delegateKeysHex = (0, icc_x_api_1.ua2hex)(yield primitives.AES.exportKey(delegateKeys[0], 'raw'));
100
- (0, chai_1.expect)(delegateKeysHex).to.eq(exchangeKeyOther);
101
- });
102
- }
103
- it('hcp with hcPartyKeys to soft-deleted user', () => __awaiter(this, void 0, void 0, function* () {
104
- const hcp = yield masterApi.healthcarePartyApi.createHealthcareParty(makeTestHcp({ includeHcPartyKeys: true }));
105
- yield doLegacyKeysTestWithDeletedDataOwner(hcp);
106
- }));
107
- it('hcp with aesExchangeKeys to soft-deleted user', () => __awaiter(this, void 0, void 0, function* () {
108
- const hcp = yield masterApi.healthcarePartyApi.createHealthcareParty(makeTestHcp({ includeAesExchangeKeys: true }));
109
- yield doLegacyKeysTestWithDeletedDataOwner(hcp);
110
- }));
111
- });
112
- });
113
- //# sourceMappingURL=soft-deleted-data-owners.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"soft-deleted-data-owners.js","sourceRoot":"","sources":["../../../../test/icc-x-api/crypto/soft-deleted-data-owners.ts"],"names":[],"mappings":"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","sourcesContent":["import 'isomorphic-fetch'\nimport 'mocha'\nimport { createNewHcpApi, getEnvironmentInitializer, setLocalStorage, TestUtils } from '../../utils/test_utils'\nimport { before } from 'mocha'\nimport { getEnvVariables, TestVars } from '@icure/test-setup/types'\nimport { CryptoPrimitives, hex2ua, IcureApi, ShaVersion, ua2ab, ua2hex } from '../../../icc-x-api'\nimport { randomUUID, webcrypto } from 'crypto'\nimport { HealthcareParty } from '../../../icc-api/model/HealthcareParty'\nimport { TestApi } from '../../utils/TestApi'\nimport { he } from 'date-fns/locale'\nimport { expect } from 'chai'\n\nsetLocalStorage(fetch)\n\ndescribe('SDL in an environment with soft-deleted data owners', async function () {\n this.timeout(600000)\n let env: TestVars\n let masterApi: IcureApi\n let primitives: CryptoPrimitives\n\n // Test values, not real data\n const pubKeyHex =\n '30820122300d06092a864886f70d01010105000382010f003082010a0282010100a53f247f466c8f4e39d04ac72e260949f66d0e6f0aa2875d670f3d7f6c7f45ecbfe8ce31a26abbca8008d75d135339a739ca3e0ee058b9595722db46701cd0dfbb9ef4f96d1ac337cf78fe4449a26be244020464d44ff0d3bf0b7bcb53666750fa76298e832386eb6e5a6e15d2e366e5c8e53acf0a6ecf20a43fd752f708797e58aaa60ceec23cf3ddc5eacca6630a068ef0e7ea52bfdec756456124610b5bcce6025e2cd4a03eb54a7bc2076531348136671102a89ea3a275147b273bfb17f11b759f20c2068c5ba4fa081cc7087b582300d8acb7c6bcc2b8485290d7c165f855180176662fa08af735e64091086d6d5d1f6a2fb1ccc08799369fcd6d68d8250203010001' // pragma: allowlist secret\n const privKeyHex =\n '308204bd020100300d06092a864886f70d0101010500048204a7308204a30201000282010100a53f247f466c8f4e39d04ac72e260949f66d0e6f0aa2875d670f3d7f6c7f45ecbfe8ce31a26abbca8008d75d135339a739ca3e0ee058b9595722db46701cd0dfbb9ef4f96d1ac337cf78fe4449a26be244020464d44ff0d3bf0b7bcb53666750fa76298e832386eb6e5a6e15d2e366e5c8e53acf0a6ecf20a43fd752f708797e58aaa60ceec23cf3ddc5eacca6630a068ef0e7ea52bfdec756456124610b5bcce6025e2cd4a03eb54a7bc2076531348136671102a89ea3a275147b273bfb17f11b759f20c2068c5ba4fa081cc7087b582300d8acb7c6bcc2b8485290d7c165f855180176662fa08af735e64091086d6d5d1f6a2fb1ccc08799369fcd6d68d8250203010001028201000189beeb385a9652e212e03f4e5ca84579f7b5e4aeb2a893e3fbae54db4babf8f2285692fbb206a171e3a32d889a83b4dcc2d725084d8b1c1bc58548f88e2c1b890187c23293c73163cafa82e43490d080558c78ebc8fab2ddda5b829efa1b0813ecb9a24bf22eb54e47a532aacdd70d587b59bac79c146d7759e8c52aeb774603f4b282e699aca98793aa0086233a8aafc8fad58b62df011f33c1dcc6efdfc9aa51f4f11ea450ba5e02f9b69de33c756f3504ff086d2e58c25db871e3c021ee3720837466bb41d886bd4300eeac41742206110158578315d29a527b520e11ec6f7e98558931bdde63a4402635473244fa9764bb3527ff33473ff08f63b3a94102818100c8032014c593f8aecc15287d3dfd6143c75e8fb27faf7944fa030016b26fa5133d8e0d13a5244bcd6155ba29258a498e44fef239dc75dee9db4756c9a2b2be93cf2c67049ff2b2f5cbf949960e44e3fc56c90a66485ec22079a0eb864100404e0d7ea96f21ced9793633d87c49056be4c507768d51c310f69605befec087bbcd02818100d380b7a8cbc5a87c5d91e1497949acfe3c61671b31bc4c54f2f8e8cd8e709a617b49d1e7d6c0333fbb42af119db8660d1a58165e716b976bebdb12104c0dba951719f8c6711e84b704bcdd80248a767609680e4ff125126a23bbee5362f88d881c5c24c5ff0400edde1dd7044fd0d5d06a9cda33a1004daad7df8aa2eb63a5b90281801d0ab721ccfe8b617628ac546327e373a0034f0230201e8fb16db61995973874eebf2d8ee8afb881fddc20c7d0b79fae94be2015deb90ec10e21f1ac1d7faec46f9496f0c8f8c89b801e965cbf7da94cfe9cfa7197988abf8469a5493d2ef8275d36430bebf0c90b1c9fb2937956dc2fbf9c31ce9b4ca3adea62b334f267c3110281806453facb275e6bbe12e4d0697a0f68f070d40384f2e2cf92bc6f367fcbc1be79df71f51074de577133f33df8ad487ba05b8ecd8d9f5fda44676d53f4471f7c129d12c4dfdd690cab84a3d2aea6a6c7ead62b761e95d57016c93caca101a1c6017af27abf316944c79145b66965333b39d258f568e846ac910e360c1d9c6b788102818100879751ba5fe91d86410037ca9df05b2bb689734af710ab50a75b1aa1083dd596f295d710ba630c9fbfe6dcdedd8f0fca22595f8723376e72721c01275572692ebd2d5b39d5715ea052ed0968a9dabb76f7eef7c4c894a5031ae237772c21b62a43322e324c793fccf8b3abe340ca029e54255ed735549918352f3abaaf0850b7' // pragma: allowlist secret\n const deletedOtherId = 'dc88f05e-6f9f-4203-bc8d-59b1737322f4' // pragma: allowlist secret\n const exchangeKeySelf = '6aac0c669a4423d5fed7c8d5a434ddf70e8f9ab34db8104cf88d810a535f2701' // pragma: allowlist secret\n const exchangeKeyOther = '24a58ab4837d2a7dbed477abf03c87816dfbae113604a1e3d93093194291907e' // pragma: allowlist secret\n function makeTestHcp(props: { includeHcPartyKeys?: boolean; includeAesExchangeKeys?: boolean }): HealthcareParty {\n const hcpId = primitives.randomUuid()\n return new HealthcareParty({\n id: hcpId,\n name: `Test-${primitives.randomUuid()}`,\n hcPartyKeys: props.includeHcPartyKeys\n ? {\n [hcpId]: [\n '785fd227c9a4bb185adea3070fdc571696df3f5e513ba7fe3e5f50b0cf5a449def0cbc7e806a626945c441adcd09feaf6c6bf3da6460347efc620be3b81bdbf3804cabdfdeac3f4d5417db0191a3a1032e57670be7db630256c862db0ed87a67454c8660cb30e7bd8bf3d3ec218dae2107616933e3882200add851ae49cb2ec731f0425f1cea7d69a530d6debff6c60e1663733c946e48ac800a70044ecc32bb5cbe184484e4bb6ac3ad42435e80d6c3d2b8684d1cfff9fe77bdb3fdaae71482f018945d878175a12407af3b9ef245cc6128ea956292f8e7f5e2d74368de42445675326b7e1dbd7990502cb098b1abef8e33f3d353a332912221d0039f787c69', // pragma: allowlist secret\n '785fd227c9a4bb185adea3070fdc571696df3f5e513ba7fe3e5f50b0cf5a449def0cbc7e806a626945c441adcd09feaf6c6bf3da6460347efc620be3b81bdbf3804cabdfdeac3f4d5417db0191a3a1032e57670be7db630256c862db0ed87a67454c8660cb30e7bd8bf3d3ec218dae2107616933e3882200add851ae49cb2ec731f0425f1cea7d69a530d6debff6c60e1663733c946e48ac800a70044ecc32bb5cbe184484e4bb6ac3ad42435e80d6c3d2b8684d1cfff9fe77bdb3fdaae71482f018945d878175a12407af3b9ef245cc6128ea956292f8e7f5e2d74368de42445675326b7e1dbd7990502cb098b1abef8e33f3d353a332912221d0039f787c69', // pragma: allowlist secret\n ],\n 'dc88f05e-6f9f-4203-bc8d-59b1737322f4': [\n // pragma: allowlist secret\n '9e8ce2e76f0716a5ff537ea56c6ec7725ed067afc3a8c1eb8ef63f5a6c6de1a901c651c433f558224be3ea6e09748c2dfa535b0d9114a5058126db7803a21ba99dc9877b372e6fbbdacf6d8e3410ee93c985959ab4f0267acf562619fee7723f050542ecfc1642dcf6f5d678994d58d8c83d8be65b5f399af19205777216d9eb28ecbb00c5ce57f253973403845f98b94d86361cccaeb33772aa491b9c1dc1fc95c0a9f74b2d26e895a4ff80d9b32fd318ea42088e6249f027a2b6afe98bd9dece83dc24e454a8a62e78b88952f38a87cdb580dda47c87496e44a5fde0e9886289aeded4a404411a1e28d28fc09fd305f4f43e0bce0c3605eb419b2795be70e7', // pragma: allowlist secret\n '27511848a060104b0b92447df4a6e1a11de92d65892b6d07104eab6add3ce57f664a1fd2431e509818a232e0601f0621ecf35df4492c53b18ceb21747a51cd863852c586fa9f3a0dd4e19b1038540ecc63724115cbb6909793a1ffceea4498dc7ae5e9fd4120912c13b276639036a6d859a2cc836b267aaeb33a876c8d40caa5ae4c5fde2122b1d3107f074ad28c38be6a96b5c899d5fda2e66c8bef4a541c41f177e868d8e521b35be07b96def15a6b15cd5a8d1e6fc2df3ce6fbd280d315082160054d904f71cd8b4d3822a2812a1a5224390ec4591319c0bad98429ccadba3f04f9b602d92a9e95f367bdd03fe5c943d4bc9ea595be27f53797b3d7c00f03', // pragma: allowlist secret\n ],\n }\n : {},\n aesExchangeKeys: props.includeAesExchangeKeys\n ? {\n // pragma: allowlist nextline secret\n '30820122300d06092a864886f70d01010105000382010f003082010a0282010100a53f247f466c8f4e39d04ac72e260949f66d0e6f0aa2875d670f3d7f6c7f45ecbfe8ce31a26abbca8008d75d135339a739ca3e0ee058b9595722db46701cd0dfbb9ef4f96d1ac337cf78fe4449a26be244020464d44ff0d3bf0b7bcb53666750fa76298e832386eb6e5a6e15d2e366e5c8e53acf0a6ecf20a43fd752f708797e58aaa60ceec23cf3ddc5eacca6630a068ef0e7ea52bfdec756456124610b5bcce6025e2cd4a03eb54a7bc2076531348136671102a89ea3a275147b273bfb17f11b759f20c2068c5ba4fa081cc7087b582300d8acb7c6bcc2b8485290d7c165f855180176662fa08af735e64091086d6d5d1f6a2fb1ccc08799369fcd6d68d8250203010001':\n {\n [hcpId]: {\n // pragma: allowlist secret\n ccc08799369fcd6d68d8250203010001:\n '785fd227c9a4bb185adea3070fdc571696df3f5e513ba7fe3e5f50b0cf5a449def0cbc7e806a626945c441adcd09feaf6c6bf3da6460347efc620be3b81bdbf3804cabdfdeac3f4d5417db0191a3a1032e57670be7db630256c862db0ed87a67454c8660cb30e7bd8bf3d3ec218dae2107616933e3882200add851ae49cb2ec731f0425f1cea7d69a530d6debff6c60e1663733c946e48ac800a70044ecc32bb5cbe184484e4bb6ac3ad42435e80d6c3d2b8684d1cfff9fe77bdb3fdaae71482f018945d878175a12407af3b9ef245cc6128ea956292f8e7f5e2d74368de42445675326b7e1dbd7990502cb098b1abef8e33f3d353a332912221d0039f787c69', // pragma: allowlist secret\n },\n 'dc88f05e-6f9f-4203-bc8d-59b1737322f4': {\n // pragma: allowlist secret\n // pragma: allowlist secret\n ccc08799369fcd6d68d8250203010001:\n '9e8ce2e76f0716a5ff537ea56c6ec7725ed067afc3a8c1eb8ef63f5a6c6de1a901c651c433f558224be3ea6e09748c2dfa535b0d9114a5058126db7803a21ba99dc9877b372e6fbbdacf6d8e3410ee93c985959ab4f0267acf562619fee7723f050542ecfc1642dcf6f5d678994d58d8c83d8be65b5f399af19205777216d9eb28ecbb00c5ce57f253973403845f98b94d86361cccaeb33772aa491b9c1dc1fc95c0a9f74b2d26e895a4ff80d9b32fd318ea42088e6249f027a2b6afe98bd9dece83dc24e454a8a62e78b88952f38a87cdb580dda47c87496e44a5fde0e9886289aeded4a404411a1e28d28fc09fd305f4f43e0bce0c3605eb419b2795be70e7', // pragma: allowlist secret\n // pragma: allowlist nextline secret\n '0c8b6fa8a116ecfee683b10203010001':\n '27511848a060104b0b92447df4a6e1a11de92d65892b6d07104eab6add3ce57f664a1fd2431e509818a232e0601f0621ecf35df4492c53b18ceb21747a51cd863852c586fa9f3a0dd4e19b1038540ecc63724115cbb6909793a1ffceea4498dc7ae5e9fd4120912c13b276639036a6d859a2cc836b267aaeb33a876c8d40caa5ae4c5fde2122b1d3107f074ad28c38be6a96b5c899d5fda2e66c8bef4a541c41f177e868d8e521b35be07b96def15a6b15cd5a8d1e6fc2df3ce6fbd280d315082160054d904f71cd8b4d3822a2812a1a5224390ec4591319c0bad98429ccadba3f04f9b602d92a9e95f367bdd03fe5c943d4bc9ea595be27f53797b3d7c00f03', // pragma: allowlist secret\n },\n },\n }\n : {},\n publicKey: pubKeyHex,\n })\n }\n\n before(async function () {\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n masterApi = await TestUtils.initMasterApi(env)\n primitives = masterApi.cryptoApi.primitives\n })\n\n async function doLegacyKeysTestWithDeletedDataOwner(hcp: HealthcareParty) {\n const userPw = primitives.randomUuid()\n const user = await masterApi.userApi.createUser({\n id: primitives.randomUuid(),\n email: `${primitives.randomUuid()}@test.icure.com`,\n passwordHash: userPw,\n healthcarePartyId: hcp.id!,\n })\n const hcpKeypair = await primitives.RSA.importKeyPair('pkcs8', ua2ab(hex2ua(privKeyHex)), 'spki', ua2ab(hex2ua(pubKeyHex)), ShaVersion.Sha1)\n const testApi = await TestApi(env.iCureUrl, user.email!, userPw, webcrypto as any, hcpKeypair)\n const selfKeys = await testApi.cryptoApi.exchangeKeys.getDecryptionExchangeKeysFor(hcp.id!, hcp.id!)\n expect(selfKeys.length).to.eq(1)\n const selfKeyHex = ua2hex(await primitives.AES.exportKey(selfKeys[0], 'raw'))\n expect(selfKeyHex).to.eq(exchangeKeySelf)\n const delegateKeys = await testApi.cryptoApi.exchangeKeys.getDecryptionExchangeKeysFor(hcp.id!, deletedOtherId)\n expect(delegateKeys.length).to.eq(1)\n const delegateKeysHex = ua2hex(await primitives.AES.exportKey(delegateKeys[0], 'raw'))\n expect(delegateKeysHex).to.eq(exchangeKeyOther)\n }\n\n it('hcp with hcPartyKeys to soft-deleted user', async () => {\n const hcp = await masterApi.healthcarePartyApi.createHealthcareParty(makeTestHcp({ includeHcPartyKeys: true }))\n await doLegacyKeysTestWithDeletedDataOwner(hcp)\n })\n\n it('hcp with aesExchangeKeys to soft-deleted user', async () => {\n const hcp = await masterApi.healthcarePartyApi.createHealthcareParty(makeTestHcp({ includeAesExchangeKeys: true }))\n await doLegacyKeysTestWithDeletedDataOwner(hcp)\n })\n})\n"]}
@@ -1 +0,0 @@
1
- import 'isomorphic-fetch';
@@ -1,246 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const mocha_1 = require("mocha");
13
- const crypto_1 = require("crypto");
14
- require("isomorphic-fetch");
15
- const chai_1 = require("chai");
16
- const test_utils_1 = require("../../utils/test_utils");
17
- const TestStorage_1 = require("../../utils/TestStorage");
18
- const TestCryptoStrategies_1 = require("../../utils/TestCryptoStrategies");
19
- const types_1 = require("@icure/test-setup/types");
20
- const icc_x_api_1 = require("../../../icc-x-api");
21
- const apiV6_1 = require("@icure/apiV6");
22
- (0, test_utils_1.setLocalStorage)(fetch);
23
- let env;
24
- (0, mocha_1.describe)('Key manager', function () {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- this.timeout(600000);
27
- (0, mocha_1.before)(function () {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- const initializer = yield (0, test_utils_1.getEnvironmentInitializer)();
30
- env = yield initializer.execute((0, types_1.getEnvVariables)());
31
- });
32
- });
33
- (0, mocha_1.it)(`Should not ask crypto strategies to recover available keys`, () => __awaiter(this, void 0, void 0, function* () {
34
- const apis = yield (0, test_utils_1.createHcpHierarchyApis)(env);
35
- const storageWithoutParentKey = yield (0, TestStorage_1.testStorageWithKeys)([
36
- {
37
- dataOwnerId: apis.grandCredentials.dataOwnerId,
38
- pairs: [
39
- { keyPair: { privateKey: apis.grandCredentials.privateKey, publicKey: apis.grandCredentials.publicKey }, shaVersion: icc_x_api_1.ShaVersion.Sha1 },
40
- ],
41
- },
42
- {
43
- dataOwnerId: apis.childCredentials.dataOwnerId,
44
- pairs: [
45
- { keyPair: { privateKey: apis.childCredentials.privateKey, publicKey: apis.childCredentials.publicKey }, shaVersion: icc_x_api_1.ShaVersion.Sha1 },
46
- ],
47
- },
48
- ]);
49
- const cryptoStrats = new TestCryptoStrategies_1.TestCryptoStrategies(undefined, {}, undefined, {
50
- [apis.parentCredentials.dataOwnerId]: {
51
- pair: { privateKey: apis.parentCredentials.privateKey, publicKey: apis.parentCredentials.publicKey },
52
- shaVersion: icc_x_api_1.ShaVersion.Sha1,
53
- },
54
- });
55
- yield icc_x_api_1.IcureApi.initialise(env.iCureUrl, { username: apis.childCredentials.user, password: apis.childCredentials.password }, cryptoStrats, crypto_1.webcrypto, fetch, {
56
- storage: storageWithoutParentKey.storage,
57
- keyStorage: storageWithoutParentKey.keyStorage,
58
- entryKeysFactory: storageWithoutParentKey.keyFactory,
59
- });
60
- (0, chai_1.expect)(cryptoStrats.recoverAndVerifyCallsParams).to.have.length(1);
61
- const params = cryptoStrats.recoverAndVerifyCallsParams[0];
62
- (0, chai_1.expect)(params).to.have.length(3);
63
- (0, chai_1.expect)(params[0].dataOwner.dataOwner.id).to.equal(apis.grandCredentials.dataOwnerId);
64
- (0, chai_1.expect)(params[0].unavailableKeys).to.be.empty;
65
- (0, chai_1.expect)(params[0].unknownKeys).to.be.empty;
66
- (0, chai_1.expect)(params[1].dataOwner.dataOwner.id).to.equal(apis.parentCredentials.dataOwnerId);
67
- (0, chai_1.expect)(params[1].unavailableKeys).to.have.members([apis.parentCredentials.publicKey]);
68
- (0, chai_1.expect)(params[1].unknownKeys).to.have.members([apis.parentCredentials.publicKey]);
69
- (0, chai_1.expect)(params[2].dataOwner.dataOwner.id).to.equal(apis.childCredentials.dataOwnerId);
70
- (0, chai_1.expect)(params[2].unavailableKeys).to.be.empty;
71
- (0, chai_1.expect)(params[2].unknownKeys).to.be.empty;
72
- }));
73
- (0, mocha_1.it)('Should not ask crypto strategies to recover keys if all keys are available', () => __awaiter(this, void 0, void 0, function* () {
74
- const apis = yield (0, test_utils_1.createHcpHierarchyApis)(env);
75
- const storageWithoutParentKey = yield (0, TestStorage_1.testStorageWithKeys)([
76
- {
77
- dataOwnerId: apis.grandCredentials.dataOwnerId,
78
- pairs: [
79
- { keyPair: { privateKey: apis.grandCredentials.privateKey, publicKey: apis.grandCredentials.publicKey }, shaVersion: icc_x_api_1.ShaVersion.Sha1 },
80
- ],
81
- },
82
- {
83
- dataOwnerId: apis.parentCredentials.dataOwnerId,
84
- pairs: [
85
- { keyPair: { privateKey: apis.parentCredentials.privateKey, publicKey: apis.parentCredentials.publicKey }, shaVersion: icc_x_api_1.ShaVersion.Sha1 },
86
- ],
87
- },
88
- {
89
- dataOwnerId: apis.childCredentials.dataOwnerId,
90
- pairs: [
91
- { keyPair: { privateKey: apis.childCredentials.privateKey, publicKey: apis.childCredentials.publicKey }, shaVersion: icc_x_api_1.ShaVersion.Sha1 },
92
- ],
93
- },
94
- ]);
95
- const cryptoStrats = new TestCryptoStrategies_1.TestCryptoStrategies();
96
- yield icc_x_api_1.IcureApi.initialise(env.iCureUrl, { username: apis.childCredentials.user, password: apis.childCredentials.password }, cryptoStrats, crypto_1.webcrypto, fetch, {
97
- storage: storageWithoutParentKey.storage,
98
- keyStorage: storageWithoutParentKey.keyStorage,
99
- entryKeysFactory: storageWithoutParentKey.keyFactory,
100
- });
101
- (0, chai_1.expect)(cryptoStrats.recoverAndVerifyCallsParams).to.have.length(0);
102
- }));
103
- (0, mocha_1.it)('Should allow to retrieve all keys for a data owner and his parents', () => __awaiter(this, void 0, void 0, function* () {
104
- const apis = yield (0, test_utils_1.createHcpHierarchyApis)(env);
105
- const keysData = yield apis.childApi.cryptoApi.getEncryptionDecryptionKeypairsForDataOwnerHierarchy();
106
- function checkKey(userDetails, key) {
107
- return __awaiter(this, void 0, void 0, function* () {
108
- const exportedPrivateKey = (0, apiV6_1.ua2hex)(yield apis.childApi.cryptoApi.primitives.RSA.exportKey(key.privateKey, 'pkcs8'));
109
- const exportedPublicKey = (0, apiV6_1.ua2hex)(yield apis.childApi.cryptoApi.primitives.RSA.exportKey(key.publicKey, 'spki'));
110
- (0, chai_1.expect)(exportedPublicKey).to.equal(userDetails.publicKey);
111
- (0, chai_1.expect)(exportedPrivateKey).to.equal(userDetails.privateKey);
112
- });
113
- }
114
- (0, chai_1.expect)(keysData.self.dataOwnerId).to.equal(apis.childCredentials.dataOwnerId);
115
- (0, chai_1.expect)(keysData.self.keys).to.have.length(1);
116
- (0, chai_1.expect)(keysData.self.keys[0].verified).to.be.true;
117
- yield checkKey(apis.childCredentials, keysData.self.keys[0].pair);
118
- (0, chai_1.expect)(keysData.parents).to.have.length(2);
119
- (0, chai_1.expect)(keysData.parents[0].dataOwnerId).to.equal(apis.grandCredentials.dataOwnerId);
120
- (0, chai_1.expect)(keysData.parents[0].keys).to.have.length(1);
121
- yield checkKey(apis.grandCredentials, keysData.parents[0].keys[0].pair);
122
- (0, chai_1.expect)(keysData.parents[1].dataOwnerId).to.equal(apis.parentCredentials.dataOwnerId);
123
- (0, chai_1.expect)(keysData.parents[1].keys).to.have.length(1);
124
- yield checkKey(apis.parentCredentials, keysData.parents[1].keys[0].pair);
125
- }));
126
- (0, mocha_1.it)('If a HCP has no key yet, but the parent does the crypto strategies should first ask to recover the keys for the parent then ask for the generation of a new key to the data owner', () => __awaiter(this, void 0, void 0, function* () {
127
- const hcpsInfo = yield (0, test_utils_1.createNewHcpWithoutKeyAndParentWithKey)(env);
128
- const cryptoStrats = new (class {
129
- constructor() {
130
- this.generateNewKeyCalled = false;
131
- this.recoverCalled = false;
132
- this.generatedKeyPair = undefined;
133
- }
134
- generateNewKeyForDataOwner(self, cryptoPrimitives) {
135
- return __awaiter(this, void 0, void 0, function* () {
136
- if (this.generateNewKeyCalled)
137
- throw new Error('generateNewKeyForDataOwner called twice');
138
- if (!this.recoverCalled)
139
- throw new Error('generateNewKeyForDataOwner called before recoverAndVerifySelfHierarchyKeys');
140
- this.generateNewKeyCalled = true;
141
- (0, chai_1.expect)(self.dataOwner.id).to.equal(hcpsInfo.childDataOwnerId);
142
- return (this.generatedKeyPair = yield cryptoPrimitives.RSA.generateKeyPair(icc_x_api_1.ShaVersion.Sha256));
143
- });
144
- }
145
- recoverAndVerifySelfHierarchyKeys(keysData, cryptoPrimitives) {
146
- return __awaiter(this, void 0, void 0, function* () {
147
- if (this.recoverCalled)
148
- throw new Error('recoverAndVerifySelfHierarchyKeys called twice');
149
- this.recoverCalled = true;
150
- (0, chai_1.expect)(keysData).to.have.length(2);
151
- (0, chai_1.expect)(keysData[0].dataOwner.dataOwner.id).to.equal(hcpsInfo.parentCredentials.dataOwnerId);
152
- (0, chai_1.expect)(keysData[0].unknownKeys).to.have.members([hcpsInfo.parentCredentials.publicKey]);
153
- (0, chai_1.expect)(keysData[0].unavailableKeys).to.have.members([hcpsInfo.parentCredentials.publicKey]);
154
- (0, chai_1.expect)(keysData[1].dataOwner.dataOwner.id).to.equal(hcpsInfo.childDataOwnerId);
155
- (0, chai_1.expect)(keysData[1].unknownKeys).to.be.empty;
156
- (0, chai_1.expect)(keysData[1].unavailableKeys).to.be.empty;
157
- return {
158
- [hcpsInfo.parentCredentials.dataOwnerId]: {
159
- recoveredKeys: {
160
- [hcpsInfo.parentCredentials.publicKey.slice(-32)]: yield cryptoPrimitives.RSA.importKeyPair('pkcs8', (0, icc_x_api_1.ua2ab)((0, icc_x_api_1.hex2ua)(hcpsInfo.parentCredentials.privateKey)), 'spki', (0, icc_x_api_1.ua2ab)((0, icc_x_api_1.hex2ua)(hcpsInfo.parentCredentials.publicKey)), icc_x_api_1.ShaVersion.Sha1),
161
- },
162
- keyAuthenticity: {},
163
- },
164
- [hcpsInfo.childDataOwnerId]: {
165
- recoveredKeys: {},
166
- keyAuthenticity: {},
167
- },
168
- };
169
- });
170
- }
171
- verifyDelegatePublicKeys(delegate, publicKeys, cryptoPrimitives) {
172
- throw new Error('This method should not be called by this test');
173
- }
174
- dataOwnerRequiresAnonymousDelegation(dataOwner) {
175
- return false;
176
- }
177
- })();
178
- const childApi = yield icc_x_api_1.IcureApi.initialise(env.iCureUrl, { username: hcpsInfo.childUser, password: hcpsInfo.childPassword }, cryptoStrats, crypto_1.webcrypto, fetch, {
179
- storage: new TestStorage_1.TestStorage(),
180
- keyStorage: new TestStorage_1.TestKeyStorage(),
181
- });
182
- (0, chai_1.expect)(cryptoStrats.generateNewKeyCalled).to.be.true;
183
- (0, chai_1.expect)(cryptoStrats.recoverCalled).to.be.true;
184
- const keys = Array.from(childApi.dataOwnerApi.getHexPublicKeysOf((yield childApi.dataOwnerApi.getCurrentDataOwner()).dataOwner));
185
- (0, chai_1.expect)(keys).to.have.length(1);
186
- (0, chai_1.expect)(Array.from(keys)[0]).to.equal((0, apiV6_1.ua2hex)(yield childApi.cryptoApi.primitives.RSA.exportKey(cryptoStrats.generatedKeyPair.publicKey, 'spki')));
187
- }));
188
- (0, mocha_1.it)('If a HCP has no key yet, but the parent does and the key is available the crypto strategies should ask for the generation of a new key to the data owner', () => __awaiter(this, void 0, void 0, function* () {
189
- function doTest(initialiseEmptyKeyForChild) {
190
- return __awaiter(this, void 0, void 0, function* () {
191
- const hcpsInfo = yield (0, test_utils_1.createNewHcpWithoutKeyAndParentWithKey)(env, { initialiseEmptyKeyForChild });
192
- const cryptoStrats = new (class {
193
- constructor() {
194
- this.generateNewKeyCalled = false;
195
- this.generatedKeyPair = undefined;
196
- }
197
- generateNewKeyForDataOwner(self, cryptoPrimitives) {
198
- return __awaiter(this, void 0, void 0, function* () {
199
- if (this.generateNewKeyCalled)
200
- throw new Error('generateNewKeyForDataOwner called twice');
201
- this.generateNewKeyCalled = true;
202
- (0, chai_1.expect)(self.dataOwner.id).to.equal(hcpsInfo.childDataOwnerId);
203
- return (this.generatedKeyPair = yield cryptoPrimitives.RSA.generateKeyPair(icc_x_api_1.ShaVersion.Sha256));
204
- });
205
- }
206
- recoverAndVerifySelfHierarchyKeys(keysData, cryptoPrimitives) {
207
- return __awaiter(this, void 0, void 0, function* () {
208
- throw new Error('This method should not be called by this test');
209
- });
210
- }
211
- dataOwnerRequiresAnonymousDelegation(dataOwner) {
212
- return false;
213
- }
214
- verifyDelegatePublicKeys(delegate, publicKeys, cryptoPrimitives) {
215
- throw new Error('This method should not be called by this test');
216
- }
217
- })();
218
- const storages = yield (0, TestStorage_1.testStorageWithKeys)([
219
- {
220
- dataOwnerId: hcpsInfo.parentCredentials.dataOwnerId,
221
- pairs: [
222
- {
223
- keyPair: { privateKey: hcpsInfo.parentCredentials.privateKey, publicKey: hcpsInfo.parentCredentials.publicKey },
224
- shaVersion: icc_x_api_1.ShaVersion.Sha1,
225
- },
226
- ],
227
- },
228
- ]);
229
- const childApi = yield icc_x_api_1.IcureApi.initialise(env.iCureUrl, { username: hcpsInfo.childUser, password: hcpsInfo.childPassword }, cryptoStrats, crypto_1.webcrypto, fetch, {
230
- storage: storages.storage,
231
- keyStorage: storages.keyStorage,
232
- entryKeysFactory: storages.keyFactory,
233
- });
234
- (0, chai_1.expect)(cryptoStrats.generateNewKeyCalled).to.be.true;
235
- const initialisedHcp = (yield childApi.dataOwnerApi.getCurrentDataOwner()).dataOwner;
236
- const keys = Array.from(childApi.dataOwnerApi.getHexPublicKeysOf(initialisedHcp));
237
- (0, chai_1.expect)(keys).to.have.length(1);
238
- (0, chai_1.expect)(keys[0]).to.equal((0, apiV6_1.ua2hex)(yield childApi.cryptoApi.primitives.RSA.exportKey(cryptoStrats.generatedKeyPair.publicKey, 'spki')));
239
- });
240
- }
241
- yield doTest(false);
242
- yield doTest(true);
243
- }));
244
- });
245
- });
246
- //# sourceMappingURL=user-encryption-keys-manager-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user-encryption-keys-manager-test.js","sourceRoot":"","sources":["../../../../test/icc-x-api/crypto/user-encryption-keys-manager-test.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuid } from 'uuid'\nimport { User } from '../../../icc-api/model/User'\nimport { before, describe, it } from 'mocha'\n\nimport { webcrypto } from 'crypto'\nimport 'isomorphic-fetch'\nimport { expect } from 'chai'\nimport { createHcpHierarchyApis, createNewHcpWithoutKeyAndParentWithKey, getEnvironmentInitializer, setLocalStorage } from '../../utils/test_utils'\nimport { TestKeyStorage, TestStorage, testStorageWithKeys } from '../../utils/TestStorage'\nimport { TestCryptoStrategies } from '../../utils/TestCryptoStrategies'\nimport { getEnvVariables, TestVars, UserDetails } from '@icure/test-setup/types'\nimport { CryptoPrimitives, CryptoStrategies, hex2ua, IcureApi, KeyPair, ShaVersion, ua2ab } from '../../../icc-x-api'\nimport { ua2hex } from '@icure/apiV6'\nimport { DataOwnerWithType } from '../../../icc-api/model/DataOwnerWithType'\nimport { CryptoActorStubWithType } from '../../../icc-api/model/CryptoActorStub'\n\nsetLocalStorage(fetch)\n\nlet env: TestVars\n\ndescribe('Key manager', async function () {\n this.timeout(600000)\n\n before(async function () {\n const initializer = await getEnvironmentInitializer()\n env = await initializer.execute(getEnvVariables())\n })\n\n it(`Should not ask crypto strategies to recover available keys`, async () => {\n const apis = await createHcpHierarchyApis(env)\n const storageWithoutParentKey = await testStorageWithKeys([\n {\n dataOwnerId: apis.grandCredentials.dataOwnerId,\n pairs: [\n { keyPair: { privateKey: apis.grandCredentials.privateKey, publicKey: apis.grandCredentials.publicKey }, shaVersion: ShaVersion.Sha1 },\n ],\n },\n {\n dataOwnerId: apis.childCredentials.dataOwnerId,\n pairs: [\n { keyPair: { privateKey: apis.childCredentials.privateKey, publicKey: apis.childCredentials.publicKey }, shaVersion: ShaVersion.Sha1 },\n ],\n },\n ])\n const cryptoStrats = new TestCryptoStrategies(undefined, {}, undefined, {\n [apis.parentCredentials.dataOwnerId]: {\n pair: { privateKey: apis.parentCredentials.privateKey, publicKey: apis.parentCredentials.publicKey },\n shaVersion: ShaVersion.Sha1,\n },\n })\n await IcureApi.initialise(\n env.iCureUrl,\n { username: apis.childCredentials.user, password: apis.childCredentials.password },\n cryptoStrats,\n webcrypto as any,\n fetch,\n {\n storage: storageWithoutParentKey.storage,\n keyStorage: storageWithoutParentKey.keyStorage,\n entryKeysFactory: storageWithoutParentKey.keyFactory,\n }\n )\n expect(cryptoStrats.recoverAndVerifyCallsParams).to.have.length(1)\n const params = cryptoStrats.recoverAndVerifyCallsParams[0]\n expect(params).to.have.length(3)\n expect(params[0].dataOwner.dataOwner.id).to.equal(apis.grandCredentials.dataOwnerId)\n expect(params[0].unavailableKeys).to.be.empty\n expect(params[0].unknownKeys).to.be.empty\n expect(params[1].dataOwner.dataOwner.id).to.equal(apis.parentCredentials.dataOwnerId)\n expect(params[1].unavailableKeys).to.have.members([apis.parentCredentials.publicKey])\n expect(params[1].unknownKeys).to.have.members([apis.parentCredentials.publicKey])\n expect(params[2].dataOwner.dataOwner.id).to.equal(apis.childCredentials.dataOwnerId)\n expect(params[2].unavailableKeys).to.be.empty\n expect(params[2].unknownKeys).to.be.empty\n })\n\n it('Should not ask crypto strategies to recover keys if all keys are available', async () => {\n const apis = await createHcpHierarchyApis(env)\n const storageWithoutParentKey = await testStorageWithKeys([\n {\n dataOwnerId: apis.grandCredentials.dataOwnerId,\n pairs: [\n { keyPair: { privateKey: apis.grandCredentials.privateKey, publicKey: apis.grandCredentials.publicKey }, shaVersion: ShaVersion.Sha1 },\n ],\n },\n {\n dataOwnerId: apis.parentCredentials.dataOwnerId,\n pairs: [\n { keyPair: { privateKey: apis.parentCredentials.privateKey, publicKey: apis.parentCredentials.publicKey }, shaVersion: ShaVersion.Sha1 },\n ],\n },\n {\n dataOwnerId: apis.childCredentials.dataOwnerId,\n pairs: [\n { keyPair: { privateKey: apis.childCredentials.privateKey, publicKey: apis.childCredentials.publicKey }, shaVersion: ShaVersion.Sha1 },\n ],\n },\n ])\n const cryptoStrats = new TestCryptoStrategies()\n await IcureApi.initialise(\n env.iCureUrl,\n { username: apis.childCredentials.user, password: apis.childCredentials.password },\n cryptoStrats,\n webcrypto as any,\n fetch,\n {\n storage: storageWithoutParentKey.storage,\n keyStorage: storageWithoutParentKey.keyStorage,\n entryKeysFactory: storageWithoutParentKey.keyFactory,\n }\n )\n expect(cryptoStrats.recoverAndVerifyCallsParams).to.have.length(0)\n })\n\n it('Should allow to retrieve all keys for a data owner and his parents', async () => {\n const apis = await createHcpHierarchyApis(env)\n const keysData = await apis.childApi.cryptoApi.getEncryptionDecryptionKeypairsForDataOwnerHierarchy()\n async function checkKey(userDetails: UserDetails, key: KeyPair<CryptoKey>) {\n const exportedPrivateKey = ua2hex(await apis.childApi.cryptoApi.primitives.RSA.exportKey(key.privateKey, 'pkcs8'))\n const exportedPublicKey = ua2hex(await apis.childApi.cryptoApi.primitives.RSA.exportKey(key.publicKey, 'spki'))\n expect(exportedPublicKey).to.equal(userDetails.publicKey)\n expect(exportedPrivateKey).to.equal(userDetails.privateKey)\n }\n expect(keysData.self.dataOwnerId).to.equal(apis.childCredentials.dataOwnerId)\n expect(keysData.self.keys).to.have.length(1)\n expect(keysData.self.keys[0].verified).to.be.true\n await checkKey(apis.childCredentials, keysData.self.keys[0].pair)\n expect(keysData.parents).to.have.length(2)\n expect(keysData.parents[0].dataOwnerId).to.equal(apis.grandCredentials.dataOwnerId)\n expect(keysData.parents[0].keys).to.have.length(1)\n await checkKey(apis.grandCredentials, keysData.parents[0].keys[0].pair)\n expect(keysData.parents[1].dataOwnerId).to.equal(apis.parentCredentials.dataOwnerId)\n expect(keysData.parents[1].keys).to.have.length(1)\n await checkKey(apis.parentCredentials, keysData.parents[1].keys[0].pair)\n })\n\n it('If a HCP has no key yet, but the parent does the crypto strategies should first ask to recover the keys for the parent then ask for the generation of a new key to the data owner', async () => {\n const hcpsInfo = await createNewHcpWithoutKeyAndParentWithKey(env)\n const cryptoStrats = new (class implements CryptoStrategies {\n generateNewKeyCalled: boolean = false\n recoverCalled: boolean = false\n generatedKeyPair: KeyPair<CryptoKey> | undefined = undefined\n\n async generateNewKeyForDataOwner(self: DataOwnerWithType, cryptoPrimitives: CryptoPrimitives): Promise<KeyPair<CryptoKey> | boolean> {\n if (this.generateNewKeyCalled) throw new Error('generateNewKeyForDataOwner called twice')\n if (!this.recoverCalled) throw new Error('generateNewKeyForDataOwner called before recoverAndVerifySelfHierarchyKeys')\n this.generateNewKeyCalled = true\n expect(self.dataOwner.id).to.equal(hcpsInfo.childDataOwnerId)\n return (this.generatedKeyPair = await cryptoPrimitives.RSA.generateKeyPair(ShaVersion.Sha256))\n }\n\n async recoverAndVerifySelfHierarchyKeys(\n keysData: {\n dataOwner: DataOwnerWithType\n unknownKeys: string[]\n unavailableKeys: string[]\n }[],\n cryptoPrimitives: CryptoPrimitives\n ): Promise<{\n [p: string]: { recoveredKeys: { [p: string]: KeyPair<CryptoKey> }; keyAuthenticity: { [p: string]: boolean } }\n }> {\n if (this.recoverCalled) throw new Error('recoverAndVerifySelfHierarchyKeys called twice')\n this.recoverCalled = true\n expect(keysData).to.have.length(2)\n expect(keysData[0].dataOwner.dataOwner.id).to.equal(hcpsInfo.parentCredentials.dataOwnerId)\n expect(keysData[0].unknownKeys).to.have.members([hcpsInfo.parentCredentials.publicKey])\n expect(keysData[0].unavailableKeys).to.have.members([hcpsInfo.parentCredentials.publicKey])\n expect(keysData[1].dataOwner.dataOwner.id).to.equal(hcpsInfo.childDataOwnerId)\n expect(keysData[1].unknownKeys).to.be.empty\n expect(keysData[1].unavailableKeys).to.be.empty\n return {\n [hcpsInfo.parentCredentials.dataOwnerId]: {\n recoveredKeys: {\n [hcpsInfo.parentCredentials.publicKey.slice(-32)]: await cryptoPrimitives.RSA.importKeyPair(\n 'pkcs8',\n ua2ab(hex2ua(hcpsInfo.parentCredentials.privateKey)),\n 'spki',\n ua2ab(hex2ua(hcpsInfo.parentCredentials.publicKey)),\n ShaVersion.Sha1\n ),\n },\n keyAuthenticity: {},\n },\n [hcpsInfo.childDataOwnerId]: {\n recoveredKeys: {},\n keyAuthenticity: {},\n },\n }\n }\n\n verifyDelegatePublicKeys(delegate: CryptoActorStubWithType, publicKeys: string[], cryptoPrimitives: CryptoPrimitives): Promise<string[]> {\n throw new Error('This method should not be called by this test')\n }\n\n dataOwnerRequiresAnonymousDelegation(dataOwner: CryptoActorStubWithType): boolean {\n return false\n }\n })()\n const childApi = await IcureApi.initialise(\n env.iCureUrl,\n { username: hcpsInfo.childUser, password: hcpsInfo.childPassword },\n cryptoStrats,\n webcrypto as any,\n fetch,\n {\n storage: new TestStorage(),\n keyStorage: new TestKeyStorage(),\n }\n )\n expect(cryptoStrats.generateNewKeyCalled).to.be.true\n expect(cryptoStrats.recoverCalled).to.be.true\n const keys = Array.from(childApi.dataOwnerApi.getHexPublicKeysOf((await childApi.dataOwnerApi.getCurrentDataOwner()).dataOwner))\n expect(keys).to.have.length(1)\n expect(Array.from(keys)[0]).to.equal(ua2hex(await childApi.cryptoApi.primitives.RSA.exportKey(cryptoStrats.generatedKeyPair!.publicKey, 'spki')))\n })\n\n it('If a HCP has no key yet, but the parent does and the key is available the crypto strategies should ask for the generation of a new key to the data owner', async () => {\n async function doTest(initialiseEmptyKeyForChild: boolean) {\n const hcpsInfo = await createNewHcpWithoutKeyAndParentWithKey(env, { initialiseEmptyKeyForChild })\n const cryptoStrats = new (class implements CryptoStrategies {\n generateNewKeyCalled: boolean = false\n generatedKeyPair: KeyPair<CryptoKey> | undefined = undefined\n\n async generateNewKeyForDataOwner(self: DataOwnerWithType, cryptoPrimitives: CryptoPrimitives): Promise<KeyPair<CryptoKey> | boolean> {\n if (this.generateNewKeyCalled) throw new Error('generateNewKeyForDataOwner called twice')\n this.generateNewKeyCalled = true\n expect(self.dataOwner.id).to.equal(hcpsInfo.childDataOwnerId)\n return (this.generatedKeyPair = await cryptoPrimitives.RSA.generateKeyPair(ShaVersion.Sha256))\n }\n\n async recoverAndVerifySelfHierarchyKeys(\n keysData: {\n dataOwner: DataOwnerWithType\n unknownKeys: string[]\n unavailableKeys: string[]\n }[],\n cryptoPrimitives: CryptoPrimitives\n ): Promise<{\n [p: string]: { recoveredKeys: { [p: string]: KeyPair<CryptoKey> }; keyAuthenticity: { [p: string]: boolean } }\n }> {\n throw new Error('This method should not be called by this test')\n }\n\n dataOwnerRequiresAnonymousDelegation(dataOwner: CryptoActorStubWithType): boolean {\n return false\n }\n\n verifyDelegatePublicKeys(delegate: CryptoActorStubWithType, publicKeys: string[], cryptoPrimitives: CryptoPrimitives): Promise<string[]> {\n throw new Error('This method should not be called by this test')\n }\n })()\n const storages = await testStorageWithKeys([\n {\n dataOwnerId: hcpsInfo.parentCredentials.dataOwnerId,\n pairs: [\n {\n keyPair: { privateKey: hcpsInfo.parentCredentials.privateKey, publicKey: hcpsInfo.parentCredentials.publicKey },\n shaVersion: ShaVersion.Sha1,\n },\n ],\n },\n ])\n const childApi = await IcureApi.initialise(\n env.iCureUrl,\n { username: hcpsInfo.childUser, password: hcpsInfo.childPassword },\n cryptoStrats,\n webcrypto as any,\n fetch,\n {\n storage: storages.storage,\n keyStorage: storages.keyStorage,\n entryKeysFactory: storages.keyFactory,\n }\n )\n expect(cryptoStrats.generateNewKeyCalled).to.be.true\n const initialisedHcp = (await childApi.dataOwnerApi.getCurrentDataOwner()).dataOwner\n const keys = Array.from(childApi.dataOwnerApi.getHexPublicKeysOf(initialisedHcp))\n expect(keys).to.have.length(1)\n expect(keys[0]).to.equal(ua2hex(await childApi.cryptoApi.primitives.RSA.exportKey(cryptoStrats.generatedKeyPair!.publicKey, 'spki')))\n }\n await doTest(false)\n await doTest(true)\n })\n})\n"]}
@@ -1 +0,0 @@
1
- import 'isomorphic-fetch';