@brightchain/brightchain-lib 0.12.0 → 0.14.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 (447) hide show
  1. package/package.json +3 -3
  2. package/src/browser.d.ts +1 -1
  3. package/src/browser.d.ts.map +1 -1
  4. package/src/browser.js +3 -3
  5. package/src/browser.js.map +1 -1
  6. package/src/lib/blocks/cblBase.d.ts.map +1 -1
  7. package/src/lib/blocks/cblBase.js +8 -1
  8. package/src/lib/blocks/cblBase.js.map +1 -1
  9. package/src/lib/blocks/encryptedBlockFactory.d.ts +6 -1
  10. package/src/lib/blocks/encryptedBlockFactory.d.ts.map +1 -1
  11. package/src/lib/blocks/encryptedBlockFactory.js +14 -5
  12. package/src/lib/blocks/encryptedBlockFactory.js.map +1 -1
  13. package/src/lib/documents/member/memberDocument.d.ts +12 -1
  14. package/src/lib/documents/member/memberDocument.d.ts.map +1 -1
  15. package/src/lib/documents/member/memberDocument.js +24 -4
  16. package/src/lib/documents/member/memberDocument.js.map +1 -1
  17. package/src/lib/documents/member/memberProfileHydration.d.ts.map +1 -1
  18. package/src/lib/documents/member/memberProfileHydration.js +23 -23
  19. package/src/lib/documents/member/memberProfileHydration.js.map +1 -1
  20. package/src/lib/enumeration-translations/blockSize.d.ts.map +1 -1
  21. package/src/lib/enumeration-translations/blockSize.js +58 -59
  22. package/src/lib/enumeration-translations/blockSize.js.map +1 -1
  23. package/src/lib/enumeration-translations/blockType.d.ts.map +1 -1
  24. package/src/lib/enumeration-translations/blockType.js +2 -2
  25. package/src/lib/enumeration-translations/blockType.js.map +1 -1
  26. package/src/lib/enumeration-translations/index.d.ts +8 -0
  27. package/src/lib/enumeration-translations/index.d.ts.map +1 -1
  28. package/src/lib/enumeration-translations/index.js +7 -0
  29. package/src/lib/enumeration-translations/index.js.map +1 -1
  30. package/src/lib/enumeration-translations/memberType.d.ts.map +1 -1
  31. package/src/lib/enumeration-translations/memberType.js +2 -2
  32. package/src/lib/enumeration-translations/memberType.js.map +1 -1
  33. package/src/lib/enumeration-translations/quorumDataRecordAction.d.ts.map +1 -1
  34. package/src/lib/enumeration-translations/quorumDataRecordAction.js +2 -2
  35. package/src/lib/enumeration-translations/quorumDataRecordAction.js.map +1 -1
  36. package/src/lib/enumeration-translations/security-event-severity.d.ts.map +1 -1
  37. package/src/lib/enumeration-translations/security-event-severity.js +2 -2
  38. package/src/lib/enumeration-translations/security-event-severity.js.map +1 -1
  39. package/src/lib/enumeration-translations/security-event-type.d.ts.map +1 -1
  40. package/src/lib/enumeration-translations/security-event-type.js +2 -2
  41. package/src/lib/enumeration-translations/security-event-type.js.map +1 -1
  42. package/src/lib/enumerations/blockSize.d.ts.map +1 -1
  43. package/src/lib/enumerations/brightChainStrings.d.ts +10 -4
  44. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  45. package/src/lib/enumerations/brightChainStrings.js +9 -4
  46. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  47. package/src/lib/enumerations/durabilityLevel.d.ts +4 -0
  48. package/src/lib/enumerations/durabilityLevel.d.ts.map +1 -1
  49. package/src/lib/enumerations/durabilityLevel.js +10 -1
  50. package/src/lib/enumerations/durabilityLevel.js.map +1 -1
  51. package/src/lib/enumerations/healthStatus.d.ts +10 -0
  52. package/src/lib/enumerations/healthStatus.d.ts.map +1 -0
  53. package/src/lib/enumerations/healthStatus.js +14 -0
  54. package/src/lib/enumerations/healthStatus.js.map +1 -0
  55. package/src/lib/enumerations/index.d.ts +4 -0
  56. package/src/lib/enumerations/index.d.ts.map +1 -1
  57. package/src/lib/enumerations/index.js +4 -0
  58. package/src/lib/enumerations/index.js.map +1 -1
  59. package/src/lib/enumerations/memberErrorType.d.ts +5 -1
  60. package/src/lib/enumerations/memberErrorType.d.ts.map +1 -1
  61. package/src/lib/enumerations/memberErrorType.js +4 -0
  62. package/src/lib/enumerations/memberErrorType.js.map +1 -1
  63. package/src/lib/enumerations/messaging/deliveryStatus.d.ts +50 -0
  64. package/src/lib/enumerations/messaging/deliveryStatus.d.ts.map +1 -0
  65. package/src/lib/enumerations/messaging/deliveryStatus.js +68 -0
  66. package/src/lib/enumerations/messaging/deliveryStatus.js.map +1 -0
  67. package/src/lib/enumerations/messaging/emailErrorType.d.ts +36 -0
  68. package/src/lib/enumerations/messaging/emailErrorType.d.ts.map +1 -0
  69. package/src/lib/enumerations/messaging/emailErrorType.js +46 -0
  70. package/src/lib/enumerations/messaging/emailErrorType.js.map +1 -0
  71. package/src/lib/enumerations/messaging/index.d.ts +2 -1
  72. package/src/lib/enumerations/messaging/index.d.ts.map +1 -1
  73. package/src/lib/enumerations/messaging/index.js +2 -1
  74. package/src/lib/enumerations/messaging/index.js.map +1 -1
  75. package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts +4 -2
  76. package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts.map +1 -1
  77. package/src/lib/enumerations/messaging/messageEncryptionScheme.js +3 -1
  78. package/src/lib/enumerations/messaging/messageEncryptionScheme.js.map +1 -1
  79. package/src/lib/enumerations/nodeCapability.d.ts +12 -0
  80. package/src/lib/enumerations/nodeCapability.d.ts.map +1 -0
  81. package/src/lib/enumerations/nodeCapability.js +16 -0
  82. package/src/lib/enumerations/nodeCapability.js.map +1 -0
  83. package/src/lib/enumerations/nodeEventType.d.ts +13 -0
  84. package/src/lib/enumerations/nodeEventType.d.ts.map +1 -0
  85. package/src/lib/enumerations/nodeEventType.js +17 -0
  86. package/src/lib/enumerations/nodeEventType.js.map +1 -0
  87. package/src/lib/enumerations/nodeStatus.d.ts +12 -0
  88. package/src/lib/enumerations/nodeStatus.d.ts.map +1 -0
  89. package/src/lib/enumerations/nodeStatus.js +16 -0
  90. package/src/lib/enumerations/nodeStatus.js.map +1 -0
  91. package/src/lib/enumerations/votingDerivationErrorType.d.ts.map +1 -1
  92. package/src/lib/errors/block/blockAccess.d.ts.map +1 -1
  93. package/src/lib/errors/block/blockAccess.js.map +1 -1
  94. package/src/lib/errors/block/blockCapacity.d.ts.map +1 -1
  95. package/src/lib/errors/block/blockCapacity.js.map +1 -1
  96. package/src/lib/errors/block/blockError.d.ts.map +1 -1
  97. package/src/lib/errors/block/blockError.js.map +1 -1
  98. package/src/lib/errors/block/blockMetadata.d.ts.map +1 -1
  99. package/src/lib/errors/block/blockMetadata.js.map +1 -1
  100. package/src/lib/errors/block/blockValidation.d.ts.map +1 -1
  101. package/src/lib/errors/block/blockValidation.js.map +1 -1
  102. package/src/lib/errors/blockServiceError.d.ts.map +1 -1
  103. package/src/lib/errors/blockServiceError.js.map +1 -1
  104. package/src/lib/errors/bufferError.js.map +1 -1
  105. package/src/lib/errors/cblError.d.ts.map +1 -1
  106. package/src/lib/errors/cblError.js.map +1 -1
  107. package/src/lib/errors/disposed.d.ts.map +1 -1
  108. package/src/lib/errors/disposed.js +1 -1
  109. package/src/lib/errors/disposed.js.map +1 -1
  110. package/src/lib/errors/document.d.ts.map +1 -1
  111. package/src/lib/errors/document.js.map +1 -1
  112. package/src/lib/errors/eciesError.d.ts.map +1 -1
  113. package/src/lib/errors/eciesError.js.map +1 -1
  114. package/src/lib/errors/enhancedValidationError.d.ts.map +1 -1
  115. package/src/lib/errors/extendedCblError.d.ts.map +1 -1
  116. package/src/lib/errors/extendedCblError.js.map +1 -1
  117. package/src/lib/errors/failedToHydrate.js.map +1 -1
  118. package/src/lib/errors/fecError.d.ts +3 -1
  119. package/src/lib/errors/fecError.d.ts.map +1 -1
  120. package/src/lib/errors/fecError.js.map +1 -1
  121. package/src/lib/errors/handleTupleError.d.ts.map +1 -1
  122. package/src/lib/errors/handleTupleError.js.map +1 -1
  123. package/src/lib/errors/invalidIDFormat.js.map +1 -1
  124. package/src/lib/errors/isolatedKeyError.d.ts.map +1 -1
  125. package/src/lib/errors/isolatedKeyError.js.map +1 -1
  126. package/src/lib/errors/memberError.d.ts.map +1 -1
  127. package/src/lib/errors/memberError.js +1 -0
  128. package/src/lib/errors/memberError.js.map +1 -1
  129. package/src/lib/errors/memoryTupleError.d.ts.map +1 -1
  130. package/src/lib/errors/memoryTupleError.js.map +1 -1
  131. package/src/lib/errors/messaging/emailError.d.ts +55 -0
  132. package/src/lib/errors/messaging/emailError.d.ts.map +1 -0
  133. package/src/lib/errors/messaging/emailError.js +64 -0
  134. package/src/lib/errors/messaging/emailError.js.map +1 -0
  135. package/src/lib/errors/messaging/index.d.ts +1 -0
  136. package/src/lib/errors/messaging/index.d.ts.map +1 -1
  137. package/src/lib/errors/messaging/index.js +1 -0
  138. package/src/lib/errors/messaging/index.js.map +1 -1
  139. package/src/lib/errors/multiEncryptedError.d.ts.map +1 -1
  140. package/src/lib/errors/multiEncryptedError.js.map +1 -1
  141. package/src/lib/errors/notImplemented.js.map +1 -1
  142. package/src/lib/errors/quorumError.d.ts.map +1 -1
  143. package/src/lib/errors/quorumError.js.map +1 -1
  144. package/src/lib/errors/sealingError.d.ts.map +1 -1
  145. package/src/lib/errors/sealingError.js.map +1 -1
  146. package/src/lib/errors/secureStorage.d.ts.map +1 -1
  147. package/src/lib/errors/storeError.d.ts +2 -1
  148. package/src/lib/errors/storeError.d.ts.map +1 -1
  149. package/src/lib/errors/storeError.js.map +1 -1
  150. package/src/lib/errors/streamError.d.ts.map +1 -1
  151. package/src/lib/errors/streamError.js.map +1 -1
  152. package/src/lib/errors/symmetricError.d.ts.map +1 -1
  153. package/src/lib/errors/symmetricError.js.map +1 -1
  154. package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
  155. package/src/lib/errors/systemKeyringError.js.map +1 -1
  156. package/src/lib/errors/translatableBrightChainError.d.ts.map +1 -1
  157. package/src/lib/errors/tupleError.d.ts.map +1 -1
  158. package/src/lib/errors/tupleError.js.map +1 -1
  159. package/src/lib/errors/typedError.d.ts +5 -5
  160. package/src/lib/errors/typedError.d.ts.map +1 -1
  161. package/src/lib/errors/typedError.js +2 -2
  162. package/src/lib/errors/typedError.js.map +1 -1
  163. package/src/lib/errors/typedWithReasonError.d.ts.map +1 -1
  164. package/src/lib/errors/whitenedError.d.ts.map +1 -1
  165. package/src/lib/errors/whitenedError.js.map +1 -1
  166. package/src/lib/i18n/i18n-setup.d.ts +86 -0
  167. package/src/lib/i18n/i18n-setup.d.ts.map +1 -0
  168. package/src/lib/i18n/i18n-setup.js +291 -0
  169. package/src/lib/i18n/i18n-setup.js.map +1 -0
  170. package/src/lib/i18n/index.d.ts +1 -54
  171. package/src/lib/i18n/index.d.ts.map +1 -1
  172. package/src/lib/i18n/index.js +1 -257
  173. package/src/lib/i18n/index.js.map +1 -1
  174. package/src/lib/i18n/strings/englishUK.d.ts.map +1 -1
  175. package/src/lib/i18n/strings/englishUK.js.map +1 -1
  176. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  177. package/src/lib/i18n/strings/englishUs.js +4 -0
  178. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  179. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  180. package/src/lib/i18n/strings/french.js +4 -0
  181. package/src/lib/i18n/strings/french.js.map +1 -1
  182. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  183. package/src/lib/i18n/strings/german.js +4 -0
  184. package/src/lib/i18n/strings/german.js.map +1 -1
  185. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  186. package/src/lib/i18n/strings/japanese.js +4 -0
  187. package/src/lib/i18n/strings/japanese.js.map +1 -1
  188. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  189. package/src/lib/i18n/strings/mandarin.js +4 -0
  190. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  191. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  192. package/src/lib/i18n/strings/spanish.js +4 -0
  193. package/src/lib/i18n/strings/spanish.js.map +1 -1
  194. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  195. package/src/lib/i18n/strings/ukrainian.js +4 -0
  196. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  197. package/src/lib/interfaces/availability/gossipService.d.ts +171 -4
  198. package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
  199. package/src/lib/interfaces/availability/gossipService.js +139 -0
  200. package/src/lib/interfaces/availability/gossipService.js.map +1 -1
  201. package/src/lib/interfaces/blockLocationInfo.d.ts +10 -0
  202. package/src/lib/interfaces/blockLocationInfo.d.ts.map +1 -0
  203. package/src/lib/interfaces/blockLocationInfo.js +3 -0
  204. package/src/lib/interfaces/blockLocationInfo.js.map +1 -0
  205. package/src/lib/interfaces/dependencyStatus.d.ts +11 -0
  206. package/src/lib/interfaces/dependencyStatus.d.ts.map +1 -0
  207. package/src/lib/interfaces/{network/networkTransport.js → dependencyStatus.js} +1 -1
  208. package/src/lib/interfaces/dependencyStatus.js.map +1 -0
  209. package/src/lib/interfaces/index.d.ts +4 -0
  210. package/src/lib/interfaces/index.d.ts.map +1 -1
  211. package/src/lib/interfaces/index.js.map +1 -1
  212. package/src/lib/interfaces/messaging/attachmentMetadata.d.ts +47 -0
  213. package/src/lib/interfaces/messaging/attachmentMetadata.d.ts.map +1 -0
  214. package/src/lib/interfaces/messaging/attachmentMetadata.js +3 -0
  215. package/src/lib/interfaces/messaging/attachmentMetadata.js.map +1 -0
  216. package/src/lib/interfaces/messaging/emailAddress.d.ts +210 -0
  217. package/src/lib/interfaces/messaging/emailAddress.d.ts.map +1 -0
  218. package/src/lib/interfaces/messaging/emailAddress.js +213 -0
  219. package/src/lib/interfaces/messaging/emailAddress.js.map +1 -0
  220. package/src/lib/interfaces/messaging/emailDelivery.d.ts +80 -0
  221. package/src/lib/interfaces/messaging/emailDelivery.d.ts.map +1 -0
  222. package/src/lib/interfaces/messaging/emailDelivery.js +50 -0
  223. package/src/lib/interfaces/messaging/emailDelivery.js.map +1 -0
  224. package/src/lib/interfaces/messaging/emailMetadata.d.ts +269 -0
  225. package/src/lib/interfaces/messaging/emailMetadata.d.ts.map +1 -0
  226. package/src/lib/interfaces/messaging/emailMetadata.js +16 -0
  227. package/src/lib/interfaces/messaging/emailMetadata.js.map +1 -0
  228. package/src/lib/interfaces/messaging/index.d.ts +5 -1
  229. package/src/lib/interfaces/messaging/index.d.ts.map +1 -1
  230. package/src/lib/interfaces/messaging/index.js +5 -1
  231. package/src/lib/interfaces/messaging/index.js.map +1 -1
  232. package/src/lib/interfaces/messaging/messageMetadata.d.ts +2 -2
  233. package/src/lib/interfaces/messaging/messageMetadata.d.ts.map +1 -1
  234. package/src/lib/interfaces/messaging/messageMetadataStore.d.ts +2 -2
  235. package/src/lib/interfaces/messaging/messageMetadataStore.d.ts.map +1 -1
  236. package/src/lib/interfaces/messaging/mimePart.d.ts +214 -0
  237. package/src/lib/interfaces/messaging/mimePart.d.ts.map +1 -0
  238. package/src/lib/interfaces/messaging/mimePart.js +71 -0
  239. package/src/lib/interfaces/messaging/mimePart.js.map +1 -0
  240. package/src/lib/interfaces/network/index.d.ts +5 -1
  241. package/src/lib/interfaces/network/index.d.ts.map +1 -1
  242. package/src/lib/interfaces/network/node.d.ts +5 -107
  243. package/src/lib/interfaces/network/node.d.ts.map +1 -1
  244. package/src/lib/interfaces/network/node.js +0 -37
  245. package/src/lib/interfaces/network/node.js.map +1 -1
  246. package/src/lib/interfaces/network/nodeAdvertisement.d.ts +22 -0
  247. package/src/lib/interfaces/network/nodeAdvertisement.d.ts.map +1 -0
  248. package/src/lib/interfaces/network/nodeAdvertisement.js +3 -0
  249. package/src/lib/interfaces/network/nodeAdvertisement.js.map +1 -0
  250. package/src/lib/interfaces/network/nodeConfig.d.ts +14 -0
  251. package/src/lib/interfaces/network/nodeConfig.d.ts.map +1 -0
  252. package/src/lib/interfaces/{responses/apiMessage.js → network/nodeConfig.js} +1 -1
  253. package/src/lib/interfaces/network/nodeConfig.js.map +1 -0
  254. package/src/lib/interfaces/network/nodeEvent.d.ts +12 -0
  255. package/src/lib/interfaces/network/nodeEvent.d.ts.map +1 -0
  256. package/src/lib/interfaces/{messaging/messageRouter.js → network/nodeEvent.js} +1 -1
  257. package/src/lib/interfaces/network/nodeEvent.js.map +1 -0
  258. package/src/lib/interfaces/network/nodeLocation.d.ts +15 -0
  259. package/src/lib/interfaces/network/nodeLocation.d.ts.map +1 -0
  260. package/src/lib/interfaces/network/nodeLocation.js +3 -0
  261. package/src/lib/interfaces/network/nodeLocation.js.map +1 -0
  262. package/src/lib/interfaces/network/nodeResources.d.ts +20 -0
  263. package/src/lib/interfaces/network/nodeResources.d.ts.map +1 -0
  264. package/src/lib/interfaces/network/nodeResources.js +3 -0
  265. package/src/lib/interfaces/network/nodeResources.js.map +1 -0
  266. package/src/lib/interfaces/nodeInfo.d.ts +13 -0
  267. package/src/lib/interfaces/nodeInfo.d.ts.map +1 -0
  268. package/src/lib/interfaces/nodeInfo.js +3 -0
  269. package/src/lib/interfaces/nodeInfo.js.map +1 -0
  270. package/src/lib/interfaces/replicationNodeResult.d.ts +9 -0
  271. package/src/lib/interfaces/replicationNodeResult.d.ts.map +1 -0
  272. package/src/lib/interfaces/replicationNodeResult.js +3 -0
  273. package/src/lib/interfaces/replicationNodeResult.js.map +1 -0
  274. package/src/lib/interfaces/responses/apiError.d.ts +1 -1
  275. package/src/lib/interfaces/responses/apiError.d.ts.map +1 -1
  276. package/src/lib/interfaces/responses/apiExpressValidationError.d.ts +1 -1
  277. package/src/lib/interfaces/responses/apiExpressValidationError.d.ts.map +1 -1
  278. package/src/lib/interfaces/responses/blockLocationResponse.d.ts +11 -0
  279. package/src/lib/interfaces/responses/blockLocationResponse.d.ts.map +1 -0
  280. package/src/lib/interfaces/responses/blockLocationResponse.js +3 -0
  281. package/src/lib/interfaces/responses/blockLocationResponse.js.map +1 -0
  282. package/src/lib/interfaces/responses/deleteMessageResponse.d.ts +11 -0
  283. package/src/lib/interfaces/responses/deleteMessageResponse.d.ts.map +1 -0
  284. package/src/lib/interfaces/responses/deleteMessageResponse.js +3 -0
  285. package/src/lib/interfaces/responses/deleteMessageResponse.js.map +1 -0
  286. package/src/lib/interfaces/responses/detailedHealthResponse.d.ts +14 -0
  287. package/src/lib/interfaces/responses/detailedHealthResponse.d.ts.map +1 -0
  288. package/src/lib/interfaces/responses/detailedHealthResponse.js +3 -0
  289. package/src/lib/interfaces/responses/detailedHealthResponse.js.map +1 -0
  290. package/src/lib/interfaces/responses/discoverBlockResponse.d.ts +17 -0
  291. package/src/lib/interfaces/responses/discoverBlockResponse.d.ts.map +1 -0
  292. package/src/lib/interfaces/responses/discoverBlockResponse.js +3 -0
  293. package/src/lib/interfaces/responses/discoverBlockResponse.js.map +1 -0
  294. package/src/lib/interfaces/responses/getBlock.d.ts +1 -1
  295. package/src/lib/interfaces/responses/getBlock.d.ts.map +1 -1
  296. package/src/lib/interfaces/responses/getCbl.d.ts +1 -1
  297. package/src/lib/interfaces/responses/getCbl.d.ts.map +1 -1
  298. package/src/lib/interfaces/responses/getMessageResponse.d.ts +11 -0
  299. package/src/lib/interfaces/responses/getMessageResponse.d.ts.map +1 -0
  300. package/src/lib/interfaces/responses/getMessageResponse.js +3 -0
  301. package/src/lib/interfaces/responses/getMessageResponse.js.map +1 -0
  302. package/src/lib/interfaces/responses/getNodeResponse.d.ts +10 -0
  303. package/src/lib/interfaces/responses/getNodeResponse.d.ts.map +1 -0
  304. package/src/lib/interfaces/responses/getNodeResponse.js +3 -0
  305. package/src/lib/interfaces/responses/getNodeResponse.js.map +1 -0
  306. package/src/lib/interfaces/responses/healthResponse.d.ts +13 -0
  307. package/src/lib/interfaces/responses/healthResponse.d.ts.map +1 -0
  308. package/src/lib/interfaces/responses/healthResponse.js +3 -0
  309. package/src/lib/interfaces/responses/healthResponse.js.map +1 -0
  310. package/src/lib/interfaces/responses/index.d.ts +16 -1
  311. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  312. package/src/lib/interfaces/responses/listNodesResponse.d.ts +11 -0
  313. package/src/lib/interfaces/responses/listNodesResponse.d.ts.map +1 -0
  314. package/src/lib/interfaces/responses/listNodesResponse.js +3 -0
  315. package/src/lib/interfaces/responses/listNodesResponse.js.map +1 -0
  316. package/src/lib/interfaces/responses/members.d.ts +4 -2
  317. package/src/lib/interfaces/responses/members.d.ts.map +1 -1
  318. package/src/lib/interfaces/responses/queryMessageResponse.d.ts +18 -0
  319. package/src/lib/interfaces/responses/queryMessageResponse.d.ts.map +1 -0
  320. package/src/lib/interfaces/responses/queryMessageResponse.js +3 -0
  321. package/src/lib/interfaces/responses/queryMessageResponse.js.map +1 -0
  322. package/src/lib/interfaces/responses/reconcileResponse.d.ts +10 -0
  323. package/src/lib/interfaces/responses/reconcileResponse.d.ts.map +1 -0
  324. package/src/lib/interfaces/responses/reconcileResponse.js +3 -0
  325. package/src/lib/interfaces/responses/reconcileResponse.js.map +1 -0
  326. package/src/lib/interfaces/responses/registerNodeResponse.d.ts +10 -0
  327. package/src/lib/interfaces/responses/registerNodeResponse.d.ts.map +1 -0
  328. package/src/lib/interfaces/responses/registerNodeResponse.js +3 -0
  329. package/src/lib/interfaces/responses/registerNodeResponse.js.map +1 -0
  330. package/src/lib/interfaces/responses/replicateBlockResponse.d.ts +11 -0
  331. package/src/lib/interfaces/responses/replicateBlockResponse.d.ts.map +1 -0
  332. package/src/lib/interfaces/responses/replicateBlockResponse.js +3 -0
  333. package/src/lib/interfaces/responses/replicateBlockResponse.js.map +1 -0
  334. package/src/lib/interfaces/responses/retrieveSCBLResponse.d.ts +10 -0
  335. package/src/lib/interfaces/responses/retrieveSCBLResponse.d.ts.map +1 -0
  336. package/src/lib/interfaces/responses/retrieveSCBLResponse.js +3 -0
  337. package/src/lib/interfaces/responses/retrieveSCBLResponse.js.map +1 -0
  338. package/src/lib/interfaces/responses/sendMessageResponse.d.ts +13 -0
  339. package/src/lib/interfaces/responses/sendMessageResponse.d.ts.map +1 -0
  340. package/src/lib/interfaces/responses/sendMessageResponse.js +3 -0
  341. package/src/lib/interfaces/responses/sendMessageResponse.js.map +1 -0
  342. package/src/lib/interfaces/responses/storeBlock.d.ts +1 -1
  343. package/src/lib/interfaces/responses/storeBlock.d.ts.map +1 -1
  344. package/src/lib/interfaces/responses/storeCbl.d.ts +1 -1
  345. package/src/lib/interfaces/responses/storeCbl.d.ts.map +1 -1
  346. package/src/lib/interfaces/responses/storeSCBLResponse.d.ts +15 -0
  347. package/src/lib/interfaces/responses/storeSCBLResponse.d.ts.map +1 -0
  348. package/src/lib/interfaces/responses/storeSCBLResponse.js +3 -0
  349. package/src/lib/interfaces/responses/storeSCBLResponse.js.map +1 -0
  350. package/src/lib/interfaces/responses/syncRequestResponse.d.ts +11 -0
  351. package/src/lib/interfaces/responses/syncRequestResponse.d.ts.map +1 -0
  352. package/src/lib/interfaces/responses/syncRequestResponse.js +3 -0
  353. package/src/lib/interfaces/responses/syncRequestResponse.js.map +1 -0
  354. package/src/lib/interfaces/services/quorumService.d.ts +6 -6
  355. package/src/lib/interfaces/services/quorumService.d.ts.map +1 -1
  356. package/src/lib/schemas/messaging/messageMetadataSchema.d.ts.map +1 -1
  357. package/src/lib/schemas/messaging/messageMetadataSchema.js.map +1 -1
  358. package/src/lib/schemas/network/networkDocumentSchema.js.map +1 -1
  359. package/src/lib/security/securityAuditLogger.js +1 -1
  360. package/src/lib/security/securityAuditLogger.js.map +1 -1
  361. package/src/lib/services/fec.service.js +2 -2
  362. package/src/lib/services/fec.service.js.map +1 -1
  363. package/src/lib/services/member/memberCblService.d.ts +7 -1
  364. package/src/lib/services/member/memberCblService.d.ts.map +1 -1
  365. package/src/lib/services/member/memberCblService.js +87 -29
  366. package/src/lib/services/member/memberCblService.js.map +1 -1
  367. package/src/lib/services/memberStore.d.ts +30 -0
  368. package/src/lib/services/memberStore.d.ts.map +1 -1
  369. package/src/lib/services/memberStore.js +446 -39
  370. package/src/lib/services/memberStore.js.map +1 -1
  371. package/src/lib/services/messaging/deliveryTimeoutService.js +2 -2
  372. package/src/lib/services/messaging/deliveryTimeoutService.js.map +1 -1
  373. package/src/lib/services/messaging/emailEncryptionService.d.ts +250 -0
  374. package/src/lib/services/messaging/emailEncryptionService.d.ts.map +1 -0
  375. package/src/lib/services/messaging/emailEncryptionService.js +420 -0
  376. package/src/lib/services/messaging/emailEncryptionService.js.map +1 -0
  377. package/src/lib/services/messaging/emailMessageService.d.ts +669 -0
  378. package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -0
  379. package/src/lib/services/messaging/emailMessageService.js +1013 -0
  380. package/src/lib/services/messaging/emailMessageService.js.map +1 -0
  381. package/src/lib/services/messaging/emailParser.d.ts +458 -0
  382. package/src/lib/services/messaging/emailParser.d.ts.map +1 -0
  383. package/src/lib/services/messaging/emailParser.js +1298 -0
  384. package/src/lib/services/messaging/emailParser.js.map +1 -0
  385. package/src/lib/services/messaging/emailSerializer.d.ts +403 -0
  386. package/src/lib/services/messaging/emailSerializer.d.ts.map +1 -0
  387. package/src/lib/services/messaging/emailSerializer.js +852 -0
  388. package/src/lib/services/messaging/emailSerializer.js.map +1 -0
  389. package/src/lib/services/messaging/emailValidator.d.ts +448 -0
  390. package/src/lib/services/messaging/emailValidator.d.ts.map +1 -0
  391. package/src/lib/services/messaging/emailValidator.js +810 -0
  392. package/src/lib/services/messaging/emailValidator.js.map +1 -0
  393. package/src/lib/services/messaging/gossipRetryService.d.ts +204 -0
  394. package/src/lib/services/messaging/gossipRetryService.d.ts.map +1 -0
  395. package/src/lib/services/messaging/gossipRetryService.js +319 -0
  396. package/src/lib/services/messaging/gossipRetryService.js.map +1 -0
  397. package/src/lib/services/messaging/inMemoryEmailMetadataStore.d.ts +60 -0
  398. package/src/lib/services/messaging/inMemoryEmailMetadataStore.d.ts.map +1 -0
  399. package/src/lib/services/messaging/inMemoryEmailMetadataStore.js +281 -0
  400. package/src/lib/services/messaging/inMemoryEmailMetadataStore.js.map +1 -0
  401. package/src/lib/services/messaging/index.d.ts +11 -5
  402. package/src/lib/services/messaging/index.d.ts.map +1 -1
  403. package/src/lib/services/messaging/index.js +19 -5
  404. package/src/lib/services/messaging/index.js.map +1 -1
  405. package/src/lib/services/messaging/messageCBLService.js +2 -2
  406. package/src/lib/services/messaging/messageCBLService.js.map +1 -1
  407. package/src/lib/stores/messaging/memoryMessageMetadataStore.d.ts +2 -2
  408. package/src/lib/stores/messaging/memoryMessageMetadataStore.d.ts.map +1 -1
  409. package/src/lib/stores/messaging/memoryMessageMetadataStore.js +2 -2
  410. package/src/lib/stores/messaging/memoryMessageMetadataStore.js.map +1 -1
  411. package/src/lib/enumerations/messaging/messageDeliveryStatus.d.ts +0 -18
  412. package/src/lib/enumerations/messaging/messageDeliveryStatus.d.ts.map +0 -1
  413. package/src/lib/enumerations/messaging/messageDeliveryStatus.js +0 -22
  414. package/src/lib/enumerations/messaging/messageDeliveryStatus.js.map +0 -1
  415. package/src/lib/enumerations/messaging/routingStrategy.d.ts +0 -12
  416. package/src/lib/enumerations/messaging/routingStrategy.d.ts.map +0 -1
  417. package/src/lib/enumerations/messaging/routingStrategy.js +0 -16
  418. package/src/lib/enumerations/messaging/routingStrategy.js.map +0 -1
  419. package/src/lib/interfaces/messaging/messageRouter.d.ts +0 -48
  420. package/src/lib/interfaces/messaging/messageRouter.d.ts.map +0 -1
  421. package/src/lib/interfaces/messaging/messageRouter.js.map +0 -1
  422. package/src/lib/interfaces/network/networkTransport.d.ts +0 -19
  423. package/src/lib/interfaces/network/networkTransport.d.ts.map +0 -1
  424. package/src/lib/interfaces/network/networkTransport.js.map +0 -1
  425. package/src/lib/interfaces/responses/apiMessage.d.ts +0 -4
  426. package/src/lib/interfaces/responses/apiMessage.d.ts.map +0 -1
  427. package/src/lib/interfaces/responses/apiMessage.js.map +0 -1
  428. package/src/lib/services/messaging/broadcastMessageRouter.d.ts +0 -18
  429. package/src/lib/services/messaging/broadcastMessageRouter.d.ts.map +0 -1
  430. package/src/lib/services/messaging/broadcastMessageRouter.js +0 -32
  431. package/src/lib/services/messaging/broadcastMessageRouter.js.map +0 -1
  432. package/src/lib/services/messaging/directMessageRouter.d.ts +0 -25
  433. package/src/lib/services/messaging/directMessageRouter.d.ts.map +0 -1
  434. package/src/lib/services/messaging/directMessageRouter.js +0 -58
  435. package/src/lib/services/messaging/directMessageRouter.js.map +0 -1
  436. package/src/lib/services/messaging/messageForwardingService.d.ts +0 -40
  437. package/src/lib/services/messaging/messageForwardingService.d.ts.map +0 -1
  438. package/src/lib/services/messaging/messageForwardingService.js +0 -74
  439. package/src/lib/services/messaging/messageForwardingService.js.map +0 -1
  440. package/src/lib/services/messaging/messageRouter.d.ts +0 -24
  441. package/src/lib/services/messaging/messageRouter.d.ts.map +0 -1
  442. package/src/lib/services/messaging/messageRouter.js +0 -111
  443. package/src/lib/services/messaging/messageRouter.js.map +0 -1
  444. package/src/lib/services/messaging/webSocketTransport.d.ts +0 -34
  445. package/src/lib/services/messaging/webSocketTransport.d.ts.map +0 -1
  446. package/src/lib/services/messaging/webSocketTransport.js +0 -115
  447. package/src/lib/services/messaging/webSocketTransport.js.map +0 -1
@@ -0,0 +1,420 @@
1
+ "use strict";
2
+ /**
3
+ * Email Encryption Service
4
+ *
5
+ * Provides encryption, decryption, signing, and signature verification
6
+ * for email messages in the BrightChain messaging system.
7
+ *
8
+ * Supports:
9
+ * - ECIES (per-recipient public key encryption via BlockECIES)
10
+ * - Symmetric encryption (AES-256-GCM with a shared key)
11
+ * - S/MIME-style digital signatures (sign with sender's private key, verify with public key)
12
+ *
13
+ * @see Requirements 16.1, 16.3, 16.4, 16.5, 16.6, 16.7, 16.8
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.EmailEncryptionService = void 0;
17
+ const crypto_1 = require("crypto");
18
+ const ecies_1 = require("../../access/ecies");
19
+ const emailErrorType_1 = require("../../enumerations/messaging/emailErrorType");
20
+ const messageEncryptionScheme_1 = require("../../enumerations/messaging/messageEncryptionScheme");
21
+ const emailError_1 = require("../../errors/messaging/emailError");
22
+ // ─── EmailEncryptionService ─────────────────────────────────────────────────
23
+ /**
24
+ * Service for encrypting and decrypting email content.
25
+ *
26
+ * Encryption flow (ECIES / RECIPIENT_KEYS):
27
+ * 1. Generate a random AES-256-GCM symmetric key
28
+ * 2. Encrypt the email content with the symmetric key
29
+ * 3. Encrypt the symmetric key with each recipient's ECIES public key
30
+ * 4. Store the encrypted content + per-recipient encrypted keys
31
+ *
32
+ * Encryption flow (SYMMETRIC / SHARED_KEY):
33
+ * 1. Use the provided shared symmetric key directly
34
+ * 2. Encrypt the email content with AES-256-GCM
35
+ *
36
+ * @see Requirements 16.1, 16.3, 16.4, 16.5, 16.6, 16.7, 16.8
37
+ */
38
+ class EmailEncryptionService {
39
+ // ─── ECIES Content Encryption (Requirement 16.1, 16.3) ─────────────
40
+ /**
41
+ * Encrypts email content using ECIES for a single recipient.
42
+ *
43
+ * Generates a random AES-256-GCM key, encrypts the content, then
44
+ * encrypts the symmetric key with the recipient's ECIES public key.
45
+ *
46
+ * @param content - Plaintext email content
47
+ * @param recipientPublicKey - Recipient's ECIES public key
48
+ * @returns Encrypted content and encryption metadata
49
+ * @throws {EmailError} If encryption fails
50
+ *
51
+ * @see Requirement 16.1 - End-to-end encryption using ECIES
52
+ * @see Requirement 16.3 - Encrypt content blocks using recipient's public key
53
+ */
54
+ async encryptContent(content, recipientPublicKey) {
55
+ try {
56
+ // Generate a random AES-256-GCM key and IV
57
+ const symmetricKey = (0, crypto_1.randomBytes)(32);
58
+ const iv = (0, crypto_1.randomBytes)(12);
59
+ // Encrypt content with AES-256-GCM
60
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-gcm', symmetricKey, iv);
61
+ const encrypted = Buffer.concat([cipher.update(content), cipher.final()]);
62
+ const authTag = cipher.getAuthTag();
63
+ // Encrypt the symmetric key with the recipient's ECIES public key
64
+ const encryptedKey = await ecies_1.BlockECIES.encrypt(recipientPublicKey, symmetricKey);
65
+ const recipientAddress = 'recipient';
66
+ const encryptedKeys = new Map();
67
+ encryptedKeys.set(recipientAddress, encryptedKey);
68
+ return {
69
+ encryptedContent: new Uint8Array(encrypted),
70
+ encryptionMetadata: {
71
+ scheme: messageEncryptionScheme_1.MessageEncryptionScheme.RECIPIENT_KEYS,
72
+ encryptedKeys,
73
+ iv: new Uint8Array(iv),
74
+ authTag: new Uint8Array(authTag),
75
+ isSigned: false,
76
+ },
77
+ };
78
+ }
79
+ catch (error) {
80
+ if (error instanceof emailError_1.EmailError)
81
+ throw error;
82
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, `Failed to encrypt email content: ${error instanceof Error ? error.message : String(error)}`, { scheme: 'ECIES' });
83
+ }
84
+ }
85
+ /**
86
+ * Encrypts email content using a shared symmetric key (AES-256-GCM).
87
+ *
88
+ * @param content - Plaintext email content
89
+ * @param sharedKey - 32-byte shared symmetric key
90
+ * @returns Encrypted content and encryption metadata
91
+ * @throws {EmailError} If encryption fails
92
+ *
93
+ * @see Requirement 16.1 - Support SYMMETRIC encryption scheme
94
+ */
95
+ encryptContentSymmetric(content, sharedKey) {
96
+ try {
97
+ if (sharedKey.length !== 32) {
98
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, 'Shared key must be exactly 32 bytes for AES-256-GCM', { keyLength: sharedKey.length });
99
+ }
100
+ const iv = (0, crypto_1.randomBytes)(12);
101
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-gcm', sharedKey, iv);
102
+ const encrypted = Buffer.concat([cipher.update(content), cipher.final()]);
103
+ const authTag = cipher.getAuthTag();
104
+ return {
105
+ encryptedContent: new Uint8Array(encrypted),
106
+ encryptionMetadata: {
107
+ scheme: messageEncryptionScheme_1.MessageEncryptionScheme.SHARED_KEY,
108
+ iv: new Uint8Array(iv),
109
+ authTag: new Uint8Array(authTag),
110
+ isSigned: false,
111
+ },
112
+ };
113
+ }
114
+ catch (error) {
115
+ if (error instanceof emailError_1.EmailError)
116
+ throw error;
117
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, `Failed to encrypt email content with symmetric key: ${error instanceof Error ? error.message : String(error)}`, { scheme: 'SYMMETRIC' });
118
+ }
119
+ }
120
+ // ─── Decryption ─────────────────────────────────────────────────────
121
+ /**
122
+ * Decrypts email content encrypted with ECIES (RECIPIENT_KEYS scheme).
123
+ *
124
+ * 1. Decrypts the per-recipient symmetric key using the recipient's private key
125
+ * 2. Decrypts the content using the recovered symmetric key
126
+ *
127
+ * @param encryptedContent - The encrypted email content
128
+ * @param metadata - Encryption metadata containing the encrypted key, IV, and auth tag
129
+ * @param recipientAddress - The recipient's address (key in encryptedKeys map)
130
+ * @param recipientPrivateKey - The recipient's ECIES private key
131
+ * @returns Decrypted plaintext content
132
+ * @throws {EmailError} If decryption fails
133
+ */
134
+ async decryptContent(encryptedContent, metadata, recipientAddress, recipientPrivateKey) {
135
+ try {
136
+ if (!metadata.encryptedKeys) {
137
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.DECRYPTION_FAILED, 'No encrypted keys found in encryption metadata');
138
+ }
139
+ const encryptedKey = metadata.encryptedKeys.get(recipientAddress);
140
+ if (!encryptedKey) {
141
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.DECRYPTION_FAILED, `No encrypted key found for recipient: ${recipientAddress}`, { recipientAddress });
142
+ }
143
+ if (!metadata.iv || !metadata.authTag) {
144
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.DECRYPTION_FAILED, 'Missing IV or auth tag in encryption metadata');
145
+ }
146
+ // Decrypt the symmetric key with the recipient's private key
147
+ const symmetricKey = await ecies_1.BlockECIES.decrypt(recipientPrivateKey, encryptedKey);
148
+ // Decrypt the content with the recovered symmetric key
149
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', symmetricKey, metadata.iv);
150
+ decipher.setAuthTag(metadata.authTag);
151
+ const decrypted = Buffer.concat([
152
+ decipher.update(encryptedContent),
153
+ decipher.final(),
154
+ ]);
155
+ return new Uint8Array(decrypted);
156
+ }
157
+ catch (error) {
158
+ if (error instanceof emailError_1.EmailError)
159
+ throw error;
160
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.DECRYPTION_FAILED, `Failed to decrypt email content: ${error instanceof Error ? error.message : String(error)}`, { scheme: 'ECIES', recipientAddress });
161
+ }
162
+ }
163
+ /**
164
+ * Decrypts email content encrypted with a shared symmetric key.
165
+ *
166
+ * @param encryptedContent - The encrypted email content
167
+ * @param metadata - Encryption metadata containing IV and auth tag
168
+ * @param sharedKey - The 32-byte shared symmetric key
169
+ * @returns Decrypted plaintext content
170
+ * @throws {EmailError} If decryption fails
171
+ */
172
+ decryptContentSymmetric(encryptedContent, metadata, sharedKey) {
173
+ try {
174
+ if (!metadata.iv || !metadata.authTag) {
175
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.DECRYPTION_FAILED, 'Missing IV or auth tag in encryption metadata');
176
+ }
177
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', sharedKey, metadata.iv);
178
+ decipher.setAuthTag(metadata.authTag);
179
+ const decrypted = Buffer.concat([
180
+ decipher.update(encryptedContent),
181
+ decipher.final(),
182
+ ]);
183
+ return new Uint8Array(decrypted);
184
+ }
185
+ catch (error) {
186
+ if (error instanceof emailError_1.EmailError)
187
+ throw error;
188
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.DECRYPTION_FAILED, `Failed to decrypt email content with symmetric key: ${error instanceof Error ? error.message : String(error)}`, { scheme: 'SYMMETRIC' });
189
+ }
190
+ }
191
+ // ─── Per-Recipient Encryption (Requirement 16.4, 16.7) ─────────────
192
+ /**
193
+ * Encrypts email content for multiple recipients.
194
+ *
195
+ * Generates a single symmetric key, encrypts the content once,
196
+ * then encrypts the symmetric key separately for each recipient
197
+ * using their ECIES public key.
198
+ *
199
+ * @param content - Plaintext email content
200
+ * @param recipientPublicKeys - Map of recipient address to their ECIES public key
201
+ * @returns Encrypted content and per-recipient encryption metadata
202
+ * @throws {EmailError} If encryption fails for any recipient
203
+ *
204
+ * @see Requirement 16.4 - Create separate encrypted copies for each recipient
205
+ * @see Requirement 16.7 - Store encryption metadata in Email_Metadata
206
+ */
207
+ async encryptForRecipients(content, recipientPublicKeys) {
208
+ if (recipientPublicKeys.size === 0) {
209
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, 'No recipient public keys provided for encryption');
210
+ }
211
+ try {
212
+ // 1. Generate a random AES-256-GCM key and IV
213
+ const symmetricKey = (0, crypto_1.randomBytes)(32);
214
+ const iv = (0, crypto_1.randomBytes)(12);
215
+ // 2. Encrypt content once with the symmetric key
216
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-gcm', symmetricKey, iv);
217
+ const encrypted = Buffer.concat([cipher.update(content), cipher.final()]);
218
+ const authTag = cipher.getAuthTag();
219
+ // 3. Encrypt the symmetric key for each recipient
220
+ const encryptedKeys = new Map();
221
+ for (const [address, publicKey] of recipientPublicKeys.entries()) {
222
+ try {
223
+ const encryptedKey = await ecies_1.BlockECIES.encrypt(publicKey, symmetricKey);
224
+ encryptedKeys.set(address, encryptedKey);
225
+ }
226
+ catch (error) {
227
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, `Failed to encrypt symmetric key for recipient: ${address}`, {
228
+ recipientAddress: address,
229
+ error: error instanceof Error ? error.message : String(error),
230
+ });
231
+ }
232
+ }
233
+ return {
234
+ encryptedContent: new Uint8Array(encrypted),
235
+ encryptionMetadata: {
236
+ scheme: messageEncryptionScheme_1.MessageEncryptionScheme.RECIPIENT_KEYS,
237
+ encryptedKeys,
238
+ iv: new Uint8Array(iv),
239
+ authTag: new Uint8Array(authTag),
240
+ isSigned: false,
241
+ },
242
+ };
243
+ }
244
+ catch (error) {
245
+ if (error instanceof emailError_1.EmailError)
246
+ throw error;
247
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, `Failed to encrypt email for recipients: ${error instanceof Error ? error.message : String(error)}`);
248
+ }
249
+ }
250
+ // ─── S/MIME Signature Support (Requirement 16.5, 16.8) ─────────────
251
+ /**
252
+ * Signs email content with the sender's private key.
253
+ *
254
+ * Creates a SHA-256 hash of the content and encrypts it with the
255
+ * sender's private key using ECIES to produce a digital signature.
256
+ * The signature can be verified by anyone with the sender's public key.
257
+ *
258
+ * @param content - The email content to sign
259
+ * @param senderPrivateKey - The sender's ECIES private key
260
+ * @param senderPublicKey - The sender's ECIES public key (stored with signature)
261
+ * @returns The signature and signer's public key
262
+ * @throws {EmailError} If signing fails
263
+ *
264
+ * @see Requirement 16.5 - S/MIME signatures for sender authentication
265
+ */
266
+ signContent(content, senderPrivateKey, senderPublicKey) {
267
+ try {
268
+ // Create SHA-256 hash of the content
269
+ const hash = (0, crypto_1.createHash)('sha256').update(content).digest();
270
+ // Sign the hash using HMAC with the private key as the key.
271
+ // This provides a deterministic signature that can be verified
272
+ // by recomputing the HMAC with the same key.
273
+ // In a full S/MIME implementation, this would use ECDSA.
274
+ // Here we use HMAC-SHA256 as a simplified signing mechanism
275
+ // that works with the existing key infrastructure.
276
+ const hmac = (0, crypto_1.createHash)('sha256')
277
+ .update(Buffer.concat([senderPrivateKey, hash]))
278
+ .digest();
279
+ return {
280
+ signature: new Uint8Array(hmac),
281
+ signerPublicKey: senderPublicKey,
282
+ };
283
+ }
284
+ catch (error) {
285
+ if (error instanceof emailError_1.EmailError)
286
+ throw error;
287
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, `Failed to sign email content: ${error instanceof Error ? error.message : String(error)}`, { operation: 'sign' });
288
+ }
289
+ }
290
+ /**
291
+ * Verifies a digital signature on email content.
292
+ *
293
+ * Recomputes the signature using the provided private key and compares
294
+ * it to the stored signature. In a production S/MIME implementation,
295
+ * this would use ECDSA verification with only the public key.
296
+ *
297
+ * @param content - The email content that was signed
298
+ * @param signature - The signature to verify
299
+ * @param signerPrivateKey - The signer's private key (needed for HMAC verification)
300
+ * @returns true if the signature is valid
301
+ *
302
+ * @see Requirement 16.8 - Verify sender's signature on decryption
303
+ */
304
+ verifySignature(content, signature, signerPrivateKey) {
305
+ try {
306
+ const hash = (0, crypto_1.createHash)('sha256').update(content).digest();
307
+ const expectedSignature = (0, crypto_1.createHash)('sha256')
308
+ .update(Buffer.concat([signerPrivateKey, hash]))
309
+ .digest();
310
+ // Constant-time comparison to prevent timing attacks
311
+ if (signature.length !== expectedSignature.length)
312
+ return false;
313
+ let result = 0;
314
+ for (let i = 0; i < signature.length; i++) {
315
+ result |= signature[i] ^ expectedSignature[i];
316
+ }
317
+ return result === 0;
318
+ }
319
+ catch {
320
+ return false;
321
+ }
322
+ }
323
+ // ─── Combined Encrypt + Sign ────────────────────────────────────────
324
+ /**
325
+ * Encrypts and signs email content for multiple recipients.
326
+ *
327
+ * Combines per-recipient encryption with digital signing:
328
+ * 1. Signs the plaintext content with the sender's private key
329
+ * 2. Encrypts the content for all recipients
330
+ * 3. Returns encrypted content with signature metadata
331
+ *
332
+ * @param content - Plaintext email content
333
+ * @param recipientPublicKeys - Map of recipient address to ECIES public key
334
+ * @param senderPrivateKey - Sender's private key for signing
335
+ * @param senderPublicKey - Sender's public key (stored with signature)
336
+ * @returns Encrypted content with signature metadata
337
+ *
338
+ * @see Requirements 16.4, 16.5
339
+ */
340
+ async encryptAndSign(content, recipientPublicKeys, senderPrivateKey, senderPublicKey) {
341
+ // 1. Sign the plaintext content
342
+ const { signature, signerPublicKey } = this.signContent(content, senderPrivateKey, senderPublicKey);
343
+ // 2. Encrypt for all recipients
344
+ const result = await this.encryptForRecipients(content, recipientPublicKeys);
345
+ // 3. Attach signature metadata
346
+ result.encryptionMetadata.isSigned = true;
347
+ result.encryptionMetadata.signature = signature;
348
+ result.encryptionMetadata.signerPublicKey = signerPublicKey;
349
+ return result;
350
+ }
351
+ /**
352
+ * Decrypts email content and verifies the sender's signature.
353
+ *
354
+ * @param encryptedContent - The encrypted email content
355
+ * @param metadata - Encryption metadata with signature info
356
+ * @param recipientAddress - The recipient's address
357
+ * @param recipientPrivateKey - The recipient's private key for decryption
358
+ * @param signerPrivateKey - The signer's private key for HMAC verification
359
+ * @returns Decrypted content
360
+ * @throws {EmailError} If decryption or signature verification fails
361
+ *
362
+ * @see Requirement 16.8 - Verify sender's signature on decryption
363
+ */
364
+ async decryptAndVerify(encryptedContent, metadata, recipientAddress, recipientPrivateKey, signerPrivateKey) {
365
+ // 1. Decrypt the content
366
+ const decrypted = await this.decryptContent(encryptedContent, metadata, recipientAddress, recipientPrivateKey);
367
+ // 2. Verify signature if present
368
+ if (metadata.isSigned && metadata.signature) {
369
+ const isValid = this.verifySignature(decrypted, metadata.signature, signerPrivateKey);
370
+ if (!isValid) {
371
+ throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.SIGNATURE_INVALID, 'Email signature verification failed: content may have been tampered with', { signerPublicKey: metadata.signerPublicKey });
372
+ }
373
+ }
374
+ return decrypted;
375
+ }
376
+ // ─── S/MIME Encryption (Requirement 16.6) ───────────────────────────
377
+ /**
378
+ * Encrypts email content using S/MIME-style encryption.
379
+ *
380
+ * S/MIME encryption combines signing and per-recipient encryption:
381
+ * 1. Signs the content with the sender's private key
382
+ * 2. Encrypts the signed content for each recipient using ECIES
383
+ *
384
+ * This is equivalent to `encryptAndSign` but explicitly sets the
385
+ * scheme to S_MIME for metadata tracking.
386
+ *
387
+ * @param content - Plaintext email content
388
+ * @param recipientPublicKeys - Map of recipient address to ECIES public key
389
+ * @param senderPrivateKey - Sender's private key for signing
390
+ * @param senderPublicKey - Sender's public key (stored with signature)
391
+ * @returns Encrypted content with S/MIME metadata
392
+ *
393
+ * @see Requirement 16.6 - S/MIME encryption as alternative method
394
+ */
395
+ async encryptSmime(content, recipientPublicKeys, senderPrivateKey, senderPublicKey) {
396
+ const result = await this.encryptAndSign(content, recipientPublicKeys, senderPrivateKey, senderPublicKey);
397
+ // Override scheme to S_MIME
398
+ result.encryptionMetadata.scheme = messageEncryptionScheme_1.MessageEncryptionScheme.S_MIME;
399
+ return result;
400
+ }
401
+ /**
402
+ * Decrypts S/MIME encrypted email content and verifies the signature.
403
+ *
404
+ * @param encryptedContent - The encrypted email content
405
+ * @param metadata - Encryption metadata with S/MIME info
406
+ * @param recipientAddress - The recipient's address
407
+ * @param recipientPrivateKey - The recipient's private key for decryption
408
+ * @param signerPrivateKey - The signer's private key for HMAC verification
409
+ * @returns Decrypted content
410
+ * @throws {EmailError} If decryption or signature verification fails
411
+ *
412
+ * @see Requirement 16.6 - S/MIME encryption
413
+ * @see Requirement 16.8 - Verify sender's signature on decryption
414
+ */
415
+ async decryptSmime(encryptedContent, metadata, recipientAddress, recipientPrivateKey, signerPrivateKey) {
416
+ return this.decryptAndVerify(encryptedContent, metadata, recipientAddress, recipientPrivateKey, signerPrivateKey);
417
+ }
418
+ }
419
+ exports.EmailEncryptionService = EmailEncryptionService;
420
+ //# sourceMappingURL=emailEncryptionService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailEncryptionService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/messaging/emailEncryptionService.ts"],"names":[],"mappings":"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"}