@brightchain/brightchain-lib 0.29.26 → 0.30.1

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 (290) hide show
  1. package/package.json +10 -4
  2. package/src/index.d.ts +1 -1
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +2 -1
  5. package/src/index.js.map +1 -1
  6. package/src/lib/constants.d.ts +3 -26
  7. package/src/lib/constants.d.ts.map +1 -1
  8. package/src/lib/constants.js +2 -1
  9. package/src/lib/constants.js.map +1 -1
  10. package/src/lib/db/collection.d.ts +1 -1
  11. package/src/lib/db/collection.d.ts.map +1 -1
  12. package/src/lib/db/collection.js +2 -1
  13. package/src/lib/db/collection.js.map +1 -1
  14. package/src/lib/enumeration-translations/index.d.ts +2 -0
  15. package/src/lib/enumeration-translations/index.d.ts.map +1 -1
  16. package/src/lib/enumeration-translations/index.js +1 -0
  17. package/src/lib/enumeration-translations/index.js.map +1 -1
  18. package/src/lib/enumeration-translations/memberStatusType.d.ts +5 -0
  19. package/src/lib/enumeration-translations/memberStatusType.d.ts.map +1 -0
  20. package/src/lib/enumeration-translations/memberStatusType.js +58 -0
  21. package/src/lib/enumeration-translations/memberStatusType.js.map +1 -0
  22. package/src/lib/enumerations/brightChainStrings.d.ts +61 -0
  23. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  24. package/src/lib/enumerations/brightChainStrings.js +64 -0
  25. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  26. package/src/lib/enumerations/brightchainFeatures.d.ts +1 -0
  27. package/src/lib/enumerations/brightchainFeatures.d.ts.map +1 -1
  28. package/src/lib/enumerations/brightchainFeatures.js +1 -0
  29. package/src/lib/enumerations/brightchainFeatures.js.map +1 -1
  30. package/src/lib/enumerations/communication.d.ts +7 -1
  31. package/src/lib/enumerations/communication.d.ts.map +1 -1
  32. package/src/lib/enumerations/communication.js +6 -0
  33. package/src/lib/enumerations/communication.js.map +1 -1
  34. package/src/lib/enumerations/friendRequestStatus.d.ts +7 -0
  35. package/src/lib/enumerations/friendRequestStatus.d.ts.map +1 -0
  36. package/src/lib/enumerations/friendRequestStatus.js +11 -0
  37. package/src/lib/enumerations/friendRequestStatus.js.map +1 -0
  38. package/src/lib/enumerations/friendsErrorCode.d.ts +10 -0
  39. package/src/lib/enumerations/friendsErrorCode.d.ts.map +1 -0
  40. package/src/lib/enumerations/friendsErrorCode.js +14 -0
  41. package/src/lib/enumerations/friendsErrorCode.js.map +1 -0
  42. package/src/lib/enumerations/friendshipStatus.d.ts +7 -0
  43. package/src/lib/enumerations/friendshipStatus.d.ts.map +1 -0
  44. package/src/lib/enumerations/friendshipStatus.js +11 -0
  45. package/src/lib/enumerations/friendshipStatus.js.map +1 -0
  46. package/src/lib/enumerations/index.d.ts +3 -0
  47. package/src/lib/enumerations/index.d.ts.map +1 -1
  48. package/src/lib/enumerations/index.js +4 -0
  49. package/src/lib/enumerations/index.js.map +1 -1
  50. package/src/lib/enumerations/messaging/emailErrorType.d.ts +15 -2
  51. package/src/lib/enumerations/messaging/emailErrorType.d.ts.map +1 -1
  52. package/src/lib/enumerations/messaging/emailErrorType.js +17 -1
  53. package/src/lib/enumerations/messaging/emailErrorType.js.map +1 -1
  54. package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts +4 -2
  55. package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts.map +1 -1
  56. package/src/lib/enumerations/messaging/messageEncryptionScheme.js +3 -1
  57. package/src/lib/enumerations/messaging/messageEncryptionScheme.js.map +1 -1
  58. package/src/lib/errors/encryptionErrors.d.ts +71 -0
  59. package/src/lib/errors/encryptionErrors.d.ts.map +1 -0
  60. package/src/lib/errors/encryptionErrors.js +112 -0
  61. package/src/lib/errors/encryptionErrors.js.map +1 -0
  62. package/src/lib/errors/friendsServiceError.d.ts +20 -0
  63. package/src/lib/errors/friendsServiceError.d.ts.map +1 -0
  64. package/src/lib/errors/friendsServiceError.js +48 -0
  65. package/src/lib/errors/friendsServiceError.js.map +1 -0
  66. package/src/lib/errors/index.d.ts +15 -0
  67. package/src/lib/errors/index.d.ts.map +1 -1
  68. package/src/lib/errors/index.js +21 -0
  69. package/src/lib/errors/index.js.map +1 -1
  70. package/src/lib/i18n/i18n-setup.d.ts +2 -2
  71. package/src/lib/i18n/i18n-setup.d.ts.map +1 -1
  72. package/src/lib/i18n/strings/englishUK.d.ts +2 -2
  73. package/src/lib/i18n/strings/englishUK.d.ts.map +1 -1
  74. package/src/lib/i18n/strings/englishUK.js.map +1 -1
  75. package/src/lib/i18n/strings/englishUs.d.ts +2 -2
  76. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  77. package/src/lib/i18n/strings/englishUs.js +65 -1
  78. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  79. package/src/lib/i18n/strings/french.d.ts +2 -2
  80. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  81. package/src/lib/i18n/strings/french.js +78 -13
  82. package/src/lib/i18n/strings/french.js.map +1 -1
  83. package/src/lib/i18n/strings/german.d.ts +2 -2
  84. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  85. package/src/lib/i18n/strings/german.js +77 -12
  86. package/src/lib/i18n/strings/german.js.map +1 -1
  87. package/src/lib/i18n/strings/japanese.d.ts +2 -2
  88. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  89. package/src/lib/i18n/strings/japanese.js +77 -12
  90. package/src/lib/i18n/strings/japanese.js.map +1 -1
  91. package/src/lib/i18n/strings/mandarin.d.ts +2 -2
  92. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  93. package/src/lib/i18n/strings/mandarin.js +77 -12
  94. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  95. package/src/lib/i18n/strings/spanish.d.ts +2 -2
  96. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  97. package/src/lib/i18n/strings/spanish.js +77 -12
  98. package/src/lib/i18n/strings/spanish.js.map +1 -1
  99. package/src/lib/i18n/strings/ukrainian.d.ts +2 -2
  100. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  101. package/src/lib/i18n/strings/ukrainian.js +77 -12
  102. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  103. package/src/lib/index.d.ts +31 -0
  104. package/src/lib/index.d.ts.map +1 -1
  105. package/src/lib/index.js +29 -1
  106. package/src/lib/index.js.map +1 -1
  107. package/src/lib/interfaces/appSubsystemPlugin.d.ts +69 -0
  108. package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -0
  109. package/src/lib/interfaces/appSubsystemPlugin.js +3 -0
  110. package/src/lib/interfaces/appSubsystemPlugin.js.map +1 -0
  111. package/src/lib/interfaces/auth/writeProof.d.ts +2 -0
  112. package/src/lib/interfaces/auth/writeProof.d.ts.map +1 -1
  113. package/src/lib/interfaces/auth/writeProofUtils.d.ts +1 -1
  114. package/src/lib/interfaces/auth/writeProofUtils.d.ts.map +1 -1
  115. package/src/lib/interfaces/auth/writeProofUtils.js +2 -2
  116. package/src/lib/interfaces/auth/writeProofUtils.js.map +1 -1
  117. package/src/lib/interfaces/availability/gossipService.d.ts +99 -1
  118. package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
  119. package/src/lib/interfaces/availability/gossipService.js +4 -0
  120. package/src/lib/interfaces/availability/gossipService.js.map +1 -1
  121. package/src/lib/interfaces/communication/blockContentStore.d.ts +57 -0
  122. package/src/lib/interfaces/communication/blockContentStore.d.ts.map +1 -0
  123. package/src/lib/interfaces/communication/blockContentStore.js +21 -0
  124. package/src/lib/interfaces/communication/blockContentStore.js.map +1 -0
  125. package/src/lib/interfaces/communication/chatStorageProvider.d.ts +77 -0
  126. package/src/lib/interfaces/communication/chatStorageProvider.d.ts.map +1 -0
  127. package/src/lib/interfaces/communication/chatStorageProvider.js +25 -0
  128. package/src/lib/interfaces/communication/chatStorageProvider.js.map +1 -0
  129. package/src/lib/interfaces/communication/index.d.ts +4 -0
  130. package/src/lib/interfaces/communication/index.d.ts.map +1 -0
  131. package/src/lib/interfaces/communication/index.js +3 -0
  132. package/src/lib/interfaces/communication/index.js.map +1 -0
  133. package/src/lib/interfaces/communication/server.d.ts +57 -0
  134. package/src/lib/interfaces/communication/server.d.ts.map +1 -0
  135. package/src/lib/interfaces/communication/server.js +14 -0
  136. package/src/lib/interfaces/communication/server.js.map +1 -0
  137. package/src/lib/interfaces/communication.d.ts +62 -5
  138. package/src/lib/interfaces/communication.d.ts.map +1 -1
  139. package/src/lib/interfaces/communication.js +8 -0
  140. package/src/lib/interfaces/communication.js.map +1 -1
  141. package/src/lib/interfaces/communicationEvents.d.ts +59 -1
  142. package/src/lib/interfaces/communicationEvents.d.ts.map +1 -1
  143. package/src/lib/interfaces/constants.d.ts +2 -0
  144. package/src/lib/interfaces/constants.d.ts.map +1 -1
  145. package/src/lib/interfaces/events/communicationEventEmitter.d.ts +9 -0
  146. package/src/lib/interfaces/events/communicationEventEmitter.d.ts.map +1 -1
  147. package/src/lib/interfaces/events/communicationEventEmitter.js +9 -0
  148. package/src/lib/interfaces/events/communicationEventEmitter.js.map +1 -1
  149. package/src/lib/interfaces/friends/baseFriendRequest.d.ts +13 -0
  150. package/src/lib/interfaces/friends/baseFriendRequest.d.ts.map +1 -0
  151. package/src/lib/interfaces/friends/baseFriendRequest.js +3 -0
  152. package/src/lib/interfaces/friends/baseFriendRequest.js.map +1 -0
  153. package/src/lib/interfaces/friends/baseFriendship.d.ts +11 -0
  154. package/src/lib/interfaces/friends/baseFriendship.d.ts.map +1 -0
  155. package/src/lib/interfaces/friends/baseFriendship.js +3 -0
  156. package/src/lib/interfaces/friends/baseFriendship.js.map +1 -0
  157. package/src/lib/interfaces/friends/friendsService.d.ts +32 -0
  158. package/src/lib/interfaces/friends/friendsService.d.ts.map +1 -0
  159. package/src/lib/interfaces/friends/friendsService.js +3 -0
  160. package/src/lib/interfaces/friends/friendsService.js.map +1 -0
  161. package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts +17 -0
  162. package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts.map +1 -0
  163. package/src/lib/interfaces/friends/friendsSuggestionProvider.js +3 -0
  164. package/src/lib/interfaces/friends/friendsSuggestionProvider.js.map +1 -0
  165. package/src/lib/interfaces/friends/index.d.ts +6 -0
  166. package/src/lib/interfaces/friends/index.d.ts.map +1 -0
  167. package/src/lib/interfaces/friends/index.js +3 -0
  168. package/src/lib/interfaces/friends/index.js.map +1 -0
  169. package/src/lib/interfaces/friends/pagination.d.ts +11 -0
  170. package/src/lib/interfaces/friends/pagination.d.ts.map +1 -0
  171. package/src/lib/interfaces/friends/pagination.js +3 -0
  172. package/src/lib/interfaces/friends/pagination.js.map +1 -0
  173. package/src/lib/interfaces/index.d.ts +6 -1
  174. package/src/lib/interfaces/index.d.ts.map +1 -1
  175. package/src/lib/interfaces/index.js +3 -0
  176. package/src/lib/interfaces/index.js.map +1 -1
  177. package/src/lib/interfaces/messaging/gpgKey.d.ts +93 -0
  178. package/src/lib/interfaces/messaging/gpgKey.d.ts.map +1 -0
  179. package/src/lib/interfaces/messaging/gpgKey.js +12 -0
  180. package/src/lib/interfaces/messaging/gpgKey.js.map +1 -0
  181. package/src/lib/interfaces/messaging/index.d.ts +4 -0
  182. package/src/lib/interfaces/messaging/index.d.ts.map +1 -1
  183. package/src/lib/interfaces/messaging/index.js +4 -0
  184. package/src/lib/interfaces/messaging/index.js.map +1 -1
  185. package/src/lib/interfaces/messaging/keyStore.d.ts +100 -0
  186. package/src/lib/interfaces/messaging/keyStore.d.ts.map +1 -0
  187. package/src/lib/interfaces/messaging/keyStore.js +13 -0
  188. package/src/lib/interfaces/messaging/keyStore.js.map +1 -0
  189. package/src/lib/interfaces/messaging/recipientKeyResolver.d.ts +92 -0
  190. package/src/lib/interfaces/messaging/recipientKeyResolver.d.ts.map +1 -0
  191. package/src/lib/interfaces/messaging/recipientKeyResolver.js +13 -0
  192. package/src/lib/interfaces/messaging/recipientKeyResolver.js.map +1 -0
  193. package/src/lib/interfaces/messaging/smimeCertificate.d.ts +99 -0
  194. package/src/lib/interfaces/messaging/smimeCertificate.d.ts.map +1 -0
  195. package/src/lib/interfaces/messaging/smimeCertificate.js +12 -0
  196. package/src/lib/interfaces/messaging/smimeCertificate.js.map +1 -0
  197. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts +8 -0
  198. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts.map +1 -1
  199. package/src/lib/interfaces/responses/communicationResponses.d.ts +25 -0
  200. package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -1
  201. package/src/lib/interfaces/storage/documentTypes.d.ts +4 -0
  202. package/src/lib/interfaces/storage/documentTypes.d.ts.map +1 -1
  203. package/src/lib/services/blockService.d.ts +11 -3
  204. package/src/lib/services/blockService.d.ts.map +1 -1
  205. package/src/lib/services/blockService.js +22 -2
  206. package/src/lib/services/blockService.js.map +1 -1
  207. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts +108 -0
  208. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts.map +1 -0
  209. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js +284 -0
  210. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js.map +1 -0
  211. package/src/lib/services/communication/attachmentUtils.d.ts +20 -0
  212. package/src/lib/services/communication/attachmentUtils.d.ts.map +1 -0
  213. package/src/lib/services/communication/attachmentUtils.js +43 -0
  214. package/src/lib/services/communication/attachmentUtils.js.map +1 -0
  215. package/src/lib/services/communication/channelService.d.ts +143 -14
  216. package/src/lib/services/communication/channelService.d.ts.map +1 -1
  217. package/src/lib/services/communication/channelService.js +562 -41
  218. package/src/lib/services/communication/channelService.js.map +1 -1
  219. package/src/lib/services/communication/conversationService.d.ts +91 -4
  220. package/src/lib/services/communication/conversationService.d.ts.map +1 -1
  221. package/src/lib/services/communication/conversationService.js +269 -7
  222. package/src/lib/services/communication/conversationService.js.map +1 -1
  223. package/src/lib/services/communication/eciesKeyEncryptionHandler.d.ts +36 -0
  224. package/src/lib/services/communication/eciesKeyEncryptionHandler.d.ts.map +1 -0
  225. package/src/lib/services/communication/eciesKeyEncryptionHandler.js +30 -0
  226. package/src/lib/services/communication/eciesKeyEncryptionHandler.js.map +1 -0
  227. package/src/lib/services/communication/groupService.d.ts +99 -21
  228. package/src/lib/services/communication/groupService.d.ts.map +1 -1
  229. package/src/lib/services/communication/groupService.js +387 -41
  230. package/src/lib/services/communication/groupService.js.map +1 -1
  231. package/src/lib/services/communication/index.d.ts +6 -1
  232. package/src/lib/services/communication/index.d.ts.map +1 -1
  233. package/src/lib/services/communication/index.js +20 -1
  234. package/src/lib/services/communication/index.js.map +1 -1
  235. package/src/lib/services/communication/keyEpochManager.d.ts +41 -0
  236. package/src/lib/services/communication/keyEpochManager.d.ts.map +1 -0
  237. package/src/lib/services/communication/keyEpochManager.js +59 -0
  238. package/src/lib/services/communication/keyEpochManager.js.map +1 -0
  239. package/src/lib/services/communication/rehydrationHelpers.d.ts +32 -0
  240. package/src/lib/services/communication/rehydrationHelpers.d.ts.map +1 -0
  241. package/src/lib/services/communication/rehydrationHelpers.js +58 -0
  242. package/src/lib/services/communication/rehydrationHelpers.js.map +1 -0
  243. package/src/lib/services/communication/serverService.d.ts +193 -0
  244. package/src/lib/services/communication/serverService.d.ts.map +1 -0
  245. package/src/lib/services/communication/serverService.js +495 -0
  246. package/src/lib/services/communication/serverService.js.map +1 -0
  247. package/src/lib/services/copyOnWrite.service.d.ts +110 -0
  248. package/src/lib/services/copyOnWrite.service.d.ts.map +1 -0
  249. package/src/lib/services/copyOnWrite.service.js +256 -0
  250. package/src/lib/services/copyOnWrite.service.js.map +1 -0
  251. package/src/lib/services/index.d.ts +1 -0
  252. package/src/lib/services/index.d.ts.map +1 -1
  253. package/src/lib/services/index.js +1 -0
  254. package/src/lib/services/index.js.map +1 -1
  255. package/src/lib/services/memberStore.d.ts +17 -1
  256. package/src/lib/services/memberStore.d.ts.map +1 -1
  257. package/src/lib/services/memberStore.js +98 -17
  258. package/src/lib/services/memberStore.js.map +1 -1
  259. package/src/lib/services/messaging/emailEncryptionService.d.ts +162 -0
  260. package/src/lib/services/messaging/emailEncryptionService.d.ts.map +1 -1
  261. package/src/lib/services/messaging/emailEncryptionService.js +293 -0
  262. package/src/lib/services/messaging/emailEncryptionService.js.map +1 -1
  263. package/src/lib/services/messaging/emailMessageService.d.ts +64 -0
  264. package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
  265. package/src/lib/services/messaging/emailMessageService.js +142 -13
  266. package/src/lib/services/messaging/emailMessageService.js.map +1 -1
  267. package/src/lib/services/messaging/gpgKeyManager.d.ts +130 -0
  268. package/src/lib/services/messaging/gpgKeyManager.d.ts.map +1 -0
  269. package/src/lib/services/messaging/gpgKeyManager.js +381 -0
  270. package/src/lib/services/messaging/gpgKeyManager.js.map +1 -0
  271. package/src/lib/services/messaging/index.d.ts +3 -0
  272. package/src/lib/services/messaging/index.d.ts.map +1 -1
  273. package/src/lib/services/messaging/index.js +3 -0
  274. package/src/lib/services/messaging/index.js.map +1 -1
  275. package/src/lib/services/messaging/recipientKeyResolver.d.ts +47 -0
  276. package/src/lib/services/messaging/recipientKeyResolver.d.ts.map +1 -0
  277. package/src/lib/services/messaging/recipientKeyResolver.js +132 -0
  278. package/src/lib/services/messaging/recipientKeyResolver.js.map +1 -0
  279. package/src/lib/services/messaging/smimeCertificateManager.d.ts +207 -0
  280. package/src/lib/services/messaging/smimeCertificateManager.d.ts.map +1 -0
  281. package/src/lib/services/messaging/smimeCertificateManager.js +696 -0
  282. package/src/lib/services/messaging/smimeCertificateManager.js.map +1 -0
  283. package/src/lib/utils/index.d.ts +6 -0
  284. package/src/lib/utils/index.d.ts.map +1 -1
  285. package/src/lib/utils/index.js +9 -0
  286. package/src/lib/utils/index.js.map +1 -1
  287. package/src/lib/utils/sortPair.d.ts +6 -0
  288. package/src/lib/utils/sortPair.d.ts.map +1 -0
  289. package/src/lib/utils/sortPair.js +11 -0
  290. package/src/lib/utils/sortPair.js.map +1 -0
@@ -6,13 +6,53 @@
6
6
  * encrypted content storage to MessagePassingService. Supports cursor-based
7
7
  * pagination, message deletion, and conversation promotion to groups.
8
8
  *
9
- * Requirements: 10.1
9
+ * Uses epoch-aware key management via IKeyEpochState for forward secrecy.
10
+ * DM conversations generate a 256-bit DM_Key at creation, wrapped per-participant
11
+ * using the injected key encryption handler. Messages record the keyEpoch they
12
+ * were encrypted under.
13
+ *
14
+ * When an IChatStorageProvider is injected, conversations and messages are
15
+ * also persisted to the provider's collections (write-through). Sync helper
16
+ * methods continue to read from the in-memory Maps so their signatures
17
+ * remain unchanged.
18
+ *
19
+ * Requirements: 10.1, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 9.2
10
20
  */
11
21
  Object.defineProperty(exports, "__esModule", { value: true });
12
22
  exports.ConversationService = exports.GroupPromotionNotConfiguredError = exports.NotMessageAuthorError = exports.MessageNotFoundError = exports.NotParticipantError = exports.ConversationNotFoundError = exports.RecipientNotReachableError = void 0;
23
+ exports.extractConversationKeyFromDefault = extractConversationKeyFromDefault;
13
24
  const uuid_1 = require("uuid");
25
+ const platformCrypto_1 = require("../../crypto/platformCrypto");
26
+ const attachmentUtils_1 = require("./attachmentUtils");
14
27
  const events_1 = require("../../interfaces/events");
15
28
  const pagination_1 = require("../../utils/pagination");
29
+ const encryptionErrors_1 = require("../../errors/encryptionErrors");
30
+ const rehydrationHelpers_1 = require("./rehydrationHelpers");
31
+ /**
32
+ * Default key encryption: base64-encodes the key prefixed with memberId.
33
+ * Placeholder; real implementations use ECIES.
34
+ */
35
+ function defaultKeyEncryption(memberId, symmetricKey) {
36
+ const binary = Array.from(symmetricKey)
37
+ .map((b) => String.fromCharCode(b))
38
+ .join('');
39
+ const base64 = btoa(binary);
40
+ return `enc:${memberId}:${base64}`;
41
+ }
42
+ /**
43
+ * Extract the symmetric key from a default-encrypted key string.
44
+ * Only works with the default placeholder encryption.
45
+ */
46
+ function extractConversationKeyFromDefault(encrypted) {
47
+ const parts = encrypted.split(':');
48
+ const base64 = parts[2];
49
+ const binary = atob(base64);
50
+ const bytes = new Uint8Array(binary.length);
51
+ for (let i = 0; i < binary.length; i++) {
52
+ bytes[i] = binary.charCodeAt(i);
53
+ }
54
+ return bytes;
55
+ }
16
56
  /**
17
57
  * Uniform error thrown when a recipient is not reachable.
18
58
  * The message is intentionally identical for non-existent and blocked members
@@ -71,13 +111,139 @@ class ConversationService {
71
111
  blockedPairs = new Set();
72
112
  /** Set of known member IDs */
73
113
  knownMembers = new Set();
114
+ /** conversationId → epoch-aware key state (raw keys + wrapped keys per epoch) */
115
+ keyEpochStates = new Map();
74
116
  groupPromotionHandler = null;
117
+ initialized = false;
75
118
  memberReachabilityCheck;
76
119
  eventEmitter;
77
- constructor(memberReachabilityCheck = null, eventEmitter = new events_1.NullEventEmitter()) {
120
+ encryptKey;
121
+ randomBytesProvider;
122
+ /** Optional persistent collection for conversations (write-through). */
123
+ conversationCollection;
124
+ /** Optional persistent collection for messages (write-through). */
125
+ messageCollection;
126
+ /** Optional block content store for storing message content as blocks. */
127
+ blockContentStore;
128
+ constructor(memberReachabilityCheck = null, eventEmitter = new events_1.NullEventEmitter(), storageProvider, encryptKey = defaultKeyEncryption, randomBytesProvider, blockContentStore) {
78
129
  this.memberReachabilityCheck = memberReachabilityCheck;
79
130
  this.eventEmitter = eventEmitter;
131
+ this.encryptKey = encryptKey;
132
+ this.randomBytesProvider = randomBytesProvider ?? platformCrypto_1.getRandomBytes;
133
+ this.blockContentStore = blockContentStore;
134
+ if (storageProvider) {
135
+ this.conversationCollection = storageProvider.conversations;
136
+ this.messageCollection = storageProvider.messages;
137
+ }
80
138
  }
139
+ // ─── Rehydration ────────────────────────────────────────────────────────
140
+ /**
141
+ * Load persisted conversations and messages from the storage provider
142
+ * into in-memory Maps, rebuilding derived indexes and key epoch states.
143
+ *
144
+ * No-op when no storage provider was injected or when already initialized.
145
+ *
146
+ * Requirements: 1.1, 1.5, 1.6, 2.1, 2.2, 2.3, 2.4, 2.5, 8.1, 8.2, 8.3, 9.1, 9.2
147
+ */
148
+ async init() {
149
+ if (this.initialized)
150
+ return;
151
+ if (!this.conversationCollection)
152
+ return;
153
+ this.initialized = true;
154
+ // ── Load conversations ──────────────────────────────────────────────
155
+ let loadedConversations;
156
+ try {
157
+ loadedConversations = await this.conversationCollection.findMany();
158
+ }
159
+ catch (error) {
160
+ console.error('[ConversationService] Failed to load from conversations collection:', error);
161
+ throw error;
162
+ }
163
+ for (const conversation of loadedConversations) {
164
+ this.conversations.set(conversation.id, conversation);
165
+ // Register participants as known members so reachability checks pass
166
+ for (const participantId of conversation.participants) {
167
+ this.knownMembers.add(participantId);
168
+ }
169
+ // Rebuild participant index
170
+ const key = this.participantKey(conversation.participants[0], conversation.participants[1]);
171
+ this.participantIndex.set(key, conversation.id);
172
+ // Reconstruct key epoch state
173
+ const epochState = (0, rehydrationHelpers_1.reconstructKeyEpochState)(conversation.encryptedSharedKey);
174
+ if (epochState) {
175
+ this.keyEpochStates.set(conversation.id, epochState);
176
+ }
177
+ else {
178
+ console.warn(`[ConversationService] Skipping key epoch reconstruction for conversation ${conversation.id}: malformed encryptedSharedKey`);
179
+ }
180
+ }
181
+ // ── Load messages ───────────────────────────────────────────────────
182
+ let loadedMessages;
183
+ try {
184
+ loadedMessages = await this.messageCollection.findMany();
185
+ }
186
+ catch (error) {
187
+ console.error('[ConversationService] Failed to load from messages collection:', error);
188
+ throw error;
189
+ }
190
+ const grouped = (0, rehydrationHelpers_1.groupAndSortMessages)(loadedMessages);
191
+ for (const [contextId, msgs] of grouped) {
192
+ this.messages.set(contextId, msgs);
193
+ }
194
+ }
195
+ // ─── Key management helpers ─────────────────────────────────────────────
196
+ generateSymmetricKey() {
197
+ return this.randomBytesProvider(32); // AES-256
198
+ }
199
+ /**
200
+ * Encrypt a symmetric key for multiple members, returning a Map<memberId, wrappedKey>.
201
+ * Wraps key wrapping failures as KeyUnwrapError with context information.
202
+ *
203
+ * Requirements: 12.3
204
+ */
205
+ encryptKeyForMembers(memberIds, symmetricKey, contextId, epoch) {
206
+ const encrypted = new Map();
207
+ for (const id of memberIds) {
208
+ try {
209
+ encrypted.set(id, this.encryptKey(id, symmetricKey));
210
+ }
211
+ catch (error) {
212
+ if (contextId !== undefined && epoch !== undefined) {
213
+ throw new encryptionErrors_1.KeyUnwrapError(contextId, id, epoch);
214
+ }
215
+ throw error;
216
+ }
217
+ }
218
+ return encrypted;
219
+ }
220
+ /**
221
+ * Assert that a key epoch exists in the epoch state for a given context.
222
+ * Throws KeyEpochNotFoundError if the epoch is not found.
223
+ *
224
+ * Requirements: 12.3, 12.4
225
+ */
226
+ assertEpochExists(contextId, keyEpoch) {
227
+ const state = this.keyEpochStates.get(contextId);
228
+ if (!state || !state.epochKeys.has(keyEpoch)) {
229
+ throw new encryptionErrors_1.KeyEpochNotFoundError(contextId, keyEpoch);
230
+ }
231
+ }
232
+ /**
233
+ * Create initial epoch state (epoch 0) for a new conversation.
234
+ * Uses KeyEpochManager pattern: creates epoch 0 with wrapped keys for all participants.
235
+ *
236
+ * Requirements: 4.1, 4.4
237
+ */
238
+ createInitialEpochState(symmetricKey, memberIds) {
239
+ const epochKeys = new Map();
240
+ epochKeys.set(0, symmetricKey);
241
+ const wrappedKeys = this.encryptKeyForMembers(memberIds, symmetricKey);
242
+ const encryptedEpochKeys = new Map();
243
+ encryptedEpochKeys.set(0, wrappedKeys);
244
+ return { currentEpoch: 0, epochKeys, encryptedEpochKeys };
245
+ }
246
+ // ─── Member management ──────────────────────────────────────────────────
81
247
  /**
82
248
  * Register a member as known (exists in the system).
83
249
  */
@@ -116,8 +282,12 @@ class ConversationService {
116
282
  participantKey(a, b) {
117
283
  return a < b ? `${a}:${b}` : `${b}:${a}`;
118
284
  }
285
+ // ─── Conversation lifecycle ─────────────────────────────────────────────
119
286
  /**
120
287
  * Create a new conversation between two members, or return the existing one.
288
+ * Generates a DM_Key and wraps for both participants using epoch-aware key management.
289
+ *
290
+ * Requirements: 4.1, 4.4, 9.2
121
291
  */
122
292
  async createOrGetConversation(memberA, memberB) {
123
293
  const key = this.participantKey(memberA, memberB);
@@ -129,15 +299,25 @@ class ConversationService {
129
299
  }
130
300
  }
131
301
  const now = new Date();
302
+ const symmetricKey = this.generateSymmetricKey();
303
+ const participants = [memberA, memberB];
304
+ // Create initial epoch state (epoch 0) with wrapped keys for both participants
305
+ const epochState = this.createInitialEpochState(symmetricKey, participants);
132
306
  const conversation = {
133
307
  id: (0, uuid_1.v4)(),
134
- participants: [memberA, memberB],
308
+ participants,
309
+ encryptedSharedKey: epochState.encryptedEpochKeys,
135
310
  createdAt: now,
136
311
  lastMessageAt: now,
137
312
  };
138
313
  this.conversations.set(conversation.id, conversation);
139
314
  this.messages.set(conversation.id, []);
315
+ this.keyEpochStates.set(conversation.id, epochState);
140
316
  this.participantIndex.set(key, conversation.id);
317
+ // Persist to storage provider if available
318
+ if (this.conversationCollection) {
319
+ await this.conversationCollection.create(conversation);
320
+ }
141
321
  return conversation;
142
322
  }
143
323
  /**
@@ -152,7 +332,13 @@ class ConversationService {
152
332
  }
153
333
  /**
154
334
  * Get messages in a conversation, in chronological order.
335
+ * Messages are returned with their keyEpoch so clients can decrypt
336
+ * using the appropriate epoch's DM_Key.
337
+ * Validates that each message's keyEpoch exists in the epoch state;
338
+ * throws KeyEpochNotFoundError if a message references a non-existent epoch.
155
339
  * Supports cursor-based pagination.
340
+ *
341
+ * Requirements: 4.3, 4.5, 12.3, 12.4
156
342
  */
157
343
  async getMessages(conversationId, memberId, cursor, limit = 50) {
158
344
  const conversation = this.conversations.get(conversationId);
@@ -164,19 +350,53 @@ class ConversationService {
164
350
  throw new NotParticipantError();
165
351
  }
166
352
  const msgs = this.messages.get(conversationId) ?? [];
167
- return (0, pagination_1.paginateItems)(msgs, cursor, limit);
353
+ // Validate that each message's keyEpoch exists in the epoch state
354
+ for (const msg of msgs) {
355
+ this.assertEpochExists(conversationId, msg.keyEpoch);
356
+ }
357
+ const result = (0, pagination_1.paginateItems)(msgs, cursor, limit);
358
+ // Resolve block references (magnet URLs) back to readable content
359
+ if (this.blockContentStore) {
360
+ const resolved = await Promise.all(result.items.map(async (msg) => {
361
+ if (msg.deleted)
362
+ return msg;
363
+ try {
364
+ const contentBytes = await this.blockContentStore.retrieveContent(msg.encryptedContent);
365
+ if (contentBytes) {
366
+ return {
367
+ ...msg,
368
+ encryptedContent: new TextDecoder().decode(contentBytes),
369
+ };
370
+ }
371
+ }
372
+ catch {
373
+ // Fall back to stored value if retrieval fails
374
+ }
375
+ return msg;
376
+ }));
377
+ return { ...result, items: resolved };
378
+ }
379
+ return result;
168
380
  }
169
381
  /**
170
382
  * Send a message in a conversation.
171
383
  * Creates the conversation if it doesn't exist.
384
+ * Encrypts content with the current epoch's DM_Key and records the keyEpoch.
172
385
  * Checks recipient reachability and returns a uniform error for
173
386
  * non-existent or blocked members.
387
+ * Optionally accepts attachments which are validated against platform limits.
388
+ *
389
+ * Requirements: 4.2, 4.5, 9.2, 11.1, 11.2, 11.4, 11.5
174
390
  */
175
- async sendMessage(senderId, recipientId, content, conversationId) {
391
+ async sendMessage(senderId, recipientId, content, conversationId, attachments) {
176
392
  // Check reachability: uniform error for blocked/non-existent
177
393
  if (!this.isReachable(senderId, recipientId)) {
178
394
  throw new RecipientNotReachableError();
179
395
  }
396
+ // Validate and prepare attachment metadata before creating the message
397
+ const attachmentMetadata = attachments?.length
398
+ ? (0, attachmentUtils_1.validateAndPrepareAttachments)(attachments)
399
+ : [];
180
400
  let conversation;
181
401
  if (conversationId) {
182
402
  const existing = this.conversations.get(conversationId);
@@ -188,18 +408,28 @@ class ConversationService {
188
408
  else {
189
409
  conversation = await this.createOrGetConversation(senderId, recipientId);
190
410
  }
411
+ const state = this.keyEpochStates.get(conversation.id);
412
+ const currentEpoch = state?.currentEpoch ?? 0;
413
+ // Store content via block content store if available; otherwise use raw content
414
+ let messageContent = content;
415
+ if (this.blockContentStore) {
416
+ const { blockReference } = await this.blockContentStore.storeContent(content, senderId, [recipientId]);
417
+ messageContent = blockReference;
418
+ }
191
419
  const now = new Date();
192
420
  const message = {
193
421
  id: (0, uuid_1.v4)(),
194
422
  contextType: 'conversation',
195
423
  contextId: conversation.id,
196
424
  senderId,
197
- encryptedContent: content,
425
+ encryptedContent: messageContent,
198
426
  createdAt: now,
199
427
  editHistory: [],
200
428
  deleted: false,
201
429
  pinned: false,
202
430
  reactions: [],
431
+ keyEpoch: currentEpoch,
432
+ attachments: attachmentMetadata,
203
433
  };
204
434
  const msgs = this.messages.get(conversation.id);
205
435
  if (msgs) {
@@ -207,9 +437,20 @@ class ConversationService {
207
437
  }
208
438
  // Update conversation's lastMessageAt
209
439
  conversation.lastMessageAt = now;
440
+ // Persist to storage provider if available
441
+ if (this.messageCollection) {
442
+ await this.messageCollection.create(message);
443
+ }
444
+ if (this.conversationCollection) {
445
+ await this.conversationCollection.update(conversation.id, conversation);
446
+ }
210
447
  // Emit message sent event
211
448
  this.eventEmitter.emitMessageSent('conversation', conversation.id, message.id, senderId);
212
- return message;
449
+ // Return the message with the original readable content for display,
450
+ // while the stored version retains the block reference (magnet URL)
451
+ return this.blockContentStore
452
+ ? { ...message, encryptedContent: content }
453
+ : message;
213
454
  }
214
455
  /**
215
456
  * Delete a message authored by the requesting member.
@@ -234,6 +475,10 @@ class ConversationService {
234
475
  }
235
476
  message.deleted = true;
236
477
  message.deletedBy = memberId;
478
+ // Persist deletion to storage provider if available
479
+ if (this.messageCollection) {
480
+ await this.messageCollection.update(messageId, message);
481
+ }
237
482
  // Emit message deleted event
238
483
  this.eventEmitter.emitMessageDeleted('conversation', conversationId, messageId, memberId);
239
484
  }
@@ -256,12 +501,29 @@ class ConversationService {
256
501
  const msgs = this.messages.get(conversationId) ?? [];
257
502
  return this.groupPromotionHandler(conversationId, conversation.participants, newMemberIds, msgs, requesterId);
258
503
  }
504
+ // ─── Accessors (for testing / internal use) ───────────────────────────
259
505
  /**
260
506
  * Get a conversation by ID. Returns undefined if not found.
261
507
  */
262
508
  getConversation(conversationId) {
263
509
  return this.conversations.get(conversationId);
264
510
  }
511
+ /**
512
+ * Get the current epoch's raw symmetric key for a conversation.
513
+ * Returns the key for the latest epoch (backward-compatible accessor).
514
+ */
515
+ getSymmetricKey(conversationId) {
516
+ const state = this.keyEpochStates.get(conversationId);
517
+ if (!state)
518
+ return undefined;
519
+ return state.epochKeys.get(state.currentEpoch);
520
+ }
521
+ /**
522
+ * Get the full epoch state for a conversation (testing / internal use).
523
+ */
524
+ getKeyEpochState(conversationId) {
525
+ return this.keyEpochStates.get(conversationId);
526
+ }
265
527
  /**
266
528
  * Get all messages for a conversation (no pagination). Used internally
267
529
  * for promotion and testing.
@@ -1 +1 @@
1
- {"version":3,"file":"conversationService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/conversationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversationService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/conversationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @fileoverview ECIES Key Encryption Handler Factory
3
+ *
4
+ * Provides async key encryption/decryption handler types and a factory
5
+ * function that creates ECIES-backed key encryption handlers. These replace
6
+ * the placeholder base64 encoding used by ChannelService and GroupService.
7
+ *
8
+ * @see Requirements 8.1, 8.2, 8.3, 8.5, 12.1, 12.2
9
+ */
10
+ /**
11
+ * Async key encryption handler type — replaces the sync placeholder.
12
+ * Returns encrypted key as Uint8Array (not string) for proper binary handling.
13
+ */
14
+ export type AsyncKeyEncryptionHandler = (memberId: string, symmetricKey: Uint8Array) => Promise<Uint8Array>;
15
+ /**
16
+ * Async key decryption handler type — unwraps a wrapped key using a member's private key.
17
+ */
18
+ export type AsyncKeyDecryptionHandler = (memberId: string, wrappedKey: Uint8Array) => Promise<Uint8Array>;
19
+ /**
20
+ * Dependencies for creating the ECIES key encryption handler.
21
+ */
22
+ export interface IEciesHandlerDeps {
23
+ eciesService: {
24
+ encryptBasic: (publicKey: Uint8Array, plaintext: Uint8Array) => Promise<Uint8Array>;
25
+ };
26
+ getMemberPublicKey: (memberId: string) => Promise<Uint8Array | null | undefined>;
27
+ }
28
+ /**
29
+ * Creates an async ECIES-backed key encryption handler.
30
+ * Looks up the member's public key, then encrypts the symmetric key under it.
31
+ *
32
+ * @throws {MissingPublicKeyError} when getMemberPublicKey returns null/undefined
33
+ * @see Requirements 8.1, 8.2, 8.3, 8.5, 12.1, 12.2
34
+ */
35
+ export declare function createEciesKeyEncryptionHandler(deps: IEciesHandlerDeps): AsyncKeyEncryptionHandler;
36
+ //# sourceMappingURL=eciesKeyEncryptionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eciesKeyEncryptionHandler.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/eciesKeyEncryptionHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,UAAU,KACrB,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,KACnB,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE;QACZ,YAAY,EAAE,CACZ,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,UAAU,KAClB,OAAO,CAAC,UAAU,CAAC,CAAC;KAC1B,CAAC;IACF,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,iBAAiB,GACtB,yBAAyB,CAW3B"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview ECIES Key Encryption Handler Factory
4
+ *
5
+ * Provides async key encryption/decryption handler types and a factory
6
+ * function that creates ECIES-backed key encryption handlers. These replace
7
+ * the placeholder base64 encoding used by ChannelService and GroupService.
8
+ *
9
+ * @see Requirements 8.1, 8.2, 8.3, 8.5, 12.1, 12.2
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createEciesKeyEncryptionHandler = createEciesKeyEncryptionHandler;
13
+ const encryptionErrors_1 = require("../../errors/encryptionErrors");
14
+ /**
15
+ * Creates an async ECIES-backed key encryption handler.
16
+ * Looks up the member's public key, then encrypts the symmetric key under it.
17
+ *
18
+ * @throws {MissingPublicKeyError} when getMemberPublicKey returns null/undefined
19
+ * @see Requirements 8.1, 8.2, 8.3, 8.5, 12.1, 12.2
20
+ */
21
+ function createEciesKeyEncryptionHandler(deps) {
22
+ return async (memberId, symmetricKey) => {
23
+ const publicKey = await deps.getMemberPublicKey(memberId);
24
+ if (publicKey == null) {
25
+ throw new encryptionErrors_1.MissingPublicKeyError(memberId);
26
+ }
27
+ return deps.eciesService.encryptBasic(publicKey, symmetricKey);
28
+ };
29
+ }
30
+ //# sourceMappingURL=eciesKeyEncryptionHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eciesKeyEncryptionHandler.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/eciesKeyEncryptionHandler.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AA2CH,0EAaC;AAtDD,oEAAsE;AAkCtE;;;;;;GAMG;AACH,SAAgB,+BAA+B,CAC7C,IAAuB;IAEvB,OAAO,KAAK,EACV,QAAgB,EAChB,YAAwB,EACH,EAAE;QACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,wCAAqB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC"}