@brightchain/brightchain-lib 0.8.1 → 0.9.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 (342) hide show
  1. package/brightchain-lib/BLOCK_COVERAGE_AUDIT.md +169 -0
  2. package/package.json +2 -2
  3. package/src/browser.d.ts +1 -4
  4. package/src/browser.d.ts.map +1 -1
  5. package/src/browser.js +6 -9
  6. package/src/browser.js.map +1 -1
  7. package/src/lib/blockMetadata.d.ts +10 -9
  8. package/src/lib/blockMetadata.d.ts.map +1 -1
  9. package/src/lib/blockMetadata.js +20 -36
  10. package/src/lib/blockMetadata.js.map +1 -1
  11. package/src/lib/blocks/base.d.ts +23 -0
  12. package/src/lib/blocks/base.d.ts.map +1 -1
  13. package/src/lib/blocks/base.js +33 -15
  14. package/src/lib/blocks/base.js.map +1 -1
  15. package/src/lib/blocks/cbl.d.ts +34 -1
  16. package/src/lib/blocks/cbl.d.ts.map +1 -1
  17. package/src/lib/blocks/cbl.js +33 -0
  18. package/src/lib/blocks/cbl.js.map +1 -1
  19. package/src/lib/blocks/cblBase.d.ts +45 -1
  20. package/src/lib/blocks/cblBase.d.ts.map +1 -1
  21. package/src/lib/blocks/cblBase.js +89 -44
  22. package/src/lib/blocks/cblBase.js.map +1 -1
  23. package/src/lib/blocks/encrypted.d.ts.map +1 -1
  24. package/src/lib/blocks/encrypted.js +68 -21
  25. package/src/lib/blocks/encrypted.js.map +1 -1
  26. package/src/lib/blocks/ephemeral.d.ts.map +1 -1
  27. package/src/lib/blocks/ephemeral.js +17 -10
  28. package/src/lib/blocks/ephemeral.js.map +1 -1
  29. package/src/lib/blocks/rawData.d.ts.map +1 -1
  30. package/src/lib/blocks/rawData.js +5 -1
  31. package/src/lib/blocks/rawData.js.map +1 -1
  32. package/src/lib/constants.d.ts +37 -0
  33. package/src/lib/constants.d.ts.map +1 -1
  34. package/src/lib/constants.js +40 -1
  35. package/src/lib/constants.js.map +1 -1
  36. package/src/lib/documents/member/memberDocument.d.ts +4 -3
  37. package/src/lib/documents/member/memberDocument.d.ts.map +1 -1
  38. package/src/lib/documents/member/memberDocument.js +9 -8
  39. package/src/lib/documents/member/memberDocument.js.map +1 -1
  40. package/src/lib/documents/member/memberHydration.d.ts.map +1 -1
  41. package/src/lib/documents/member/memberHydration.js +11 -13
  42. package/src/lib/documents/member/memberHydration.js.map +1 -1
  43. package/src/lib/documents/member/memberOperational.d.ts.map +1 -1
  44. package/src/lib/documents/member/memberOperational.js +2 -2
  45. package/src/lib/documents/member/memberOperational.js.map +1 -1
  46. package/src/lib/documents/network/networkDocument.d.ts.map +1 -1
  47. package/src/lib/documents/network/networkDocument.js +4 -3
  48. package/src/lib/documents/network/networkDocument.js.map +1 -1
  49. package/src/lib/encryptedBlockMetadata.d.ts +11 -4
  50. package/src/lib/encryptedBlockMetadata.d.ts.map +1 -1
  51. package/src/lib/encryptedBlockMetadata.js +29 -22
  52. package/src/lib/encryptedBlockMetadata.js.map +1 -1
  53. package/src/lib/enumerations/blockSize.d.ts +2 -2
  54. package/src/lib/enumerations/blockSize.d.ts.map +1 -1
  55. package/src/lib/enumerations/blockSize.js +15 -15
  56. package/src/lib/enumerations/blockSize.js.map +1 -1
  57. package/src/lib/enumerations/{stringNames.d.ts → brightChainStrings.d.ts} +4 -3
  58. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -0
  59. package/src/lib/enumerations/brightChainStrings.js +437 -0
  60. package/src/lib/enumerations/brightChainStrings.js.map +1 -0
  61. package/src/lib/enumerations/cblErrorType.d.ts +1 -0
  62. package/src/lib/enumerations/cblErrorType.d.ts.map +1 -1
  63. package/src/lib/enumerations/cblErrorType.js +1 -0
  64. package/src/lib/enumerations/cblErrorType.js.map +1 -1
  65. package/src/lib/enumerations/index.d.ts +1 -1
  66. package/src/lib/enumerations/index.d.ts.map +1 -1
  67. package/src/lib/enumerations/index.js +1 -1
  68. package/src/lib/enumerations/index.js.map +1 -1
  69. package/src/lib/enumerations/votingDerivationErrorType.d.ts +2 -2
  70. package/src/lib/enumerations/votingDerivationErrorType.d.ts.map +1 -1
  71. package/src/lib/enumerations/votingDerivationErrorType.js +11 -11
  72. package/src/lib/enumerations/votingDerivationErrorType.js.map +1 -1
  73. package/src/lib/ephemeralBlockMetadata.d.ts +10 -7
  74. package/src/lib/ephemeralBlockMetadata.d.ts.map +1 -1
  75. package/src/lib/ephemeralBlockMetadata.js +24 -17
  76. package/src/lib/ephemeralBlockMetadata.js.map +1 -1
  77. package/src/lib/errors/block/blockAccess.d.ts +2 -2
  78. package/src/lib/errors/block/blockAccess.d.ts.map +1 -1
  79. package/src/lib/errors/block/blockAccess.js +8 -8
  80. package/src/lib/errors/block/blockAccess.js.map +1 -1
  81. package/src/lib/errors/block/blockCapacity.d.ts +2 -2
  82. package/src/lib/errors/block/blockCapacity.d.ts.map +1 -1
  83. package/src/lib/errors/block/blockCapacity.js +8 -8
  84. package/src/lib/errors/block/blockCapacity.js.map +1 -1
  85. package/src/lib/errors/block/blockError.d.ts +2 -2
  86. package/src/lib/errors/block/blockError.d.ts.map +1 -1
  87. package/src/lib/errors/block/blockError.js +16 -16
  88. package/src/lib/errors/block/blockError.js.map +1 -1
  89. package/src/lib/errors/block/blockMetadata.d.ts +2 -2
  90. package/src/lib/errors/block/blockMetadata.d.ts.map +1 -1
  91. package/src/lib/errors/block/blockMetadata.js +8 -8
  92. package/src/lib/errors/block/blockMetadata.js.map +1 -1
  93. package/src/lib/errors/block/blockValidation.d.ts +2 -2
  94. package/src/lib/errors/block/blockValidation.d.ts.map +1 -1
  95. package/src/lib/errors/block/blockValidation.js +36 -36
  96. package/src/lib/errors/block/blockValidation.js.map +1 -1
  97. package/src/lib/errors/block/cannotDecrypt.js +2 -2
  98. package/src/lib/errors/block/cannotDecrypt.js.map +1 -1
  99. package/src/lib/errors/block/cannotEncrypt.js +2 -2
  100. package/src/lib/errors/block/cannotEncrypt.js.map +1 -1
  101. package/src/lib/errors/blockServiceError.d.ts +2 -2
  102. package/src/lib/errors/blockServiceError.d.ts.map +1 -1
  103. package/src/lib/errors/blockServiceError.js +15 -15
  104. package/src/lib/errors/blockServiceError.js.map +1 -1
  105. package/src/lib/errors/bufferError.js +2 -2
  106. package/src/lib/errors/bufferError.js.map +1 -1
  107. package/src/lib/errors/cblError.d.ts +2 -2
  108. package/src/lib/errors/cblError.d.ts.map +1 -1
  109. package/src/lib/errors/cblError.js +37 -36
  110. package/src/lib/errors/cblError.js.map +1 -1
  111. package/src/lib/errors/checksumMismatch.js +2 -2
  112. package/src/lib/errors/checksumMismatch.js.map +1 -1
  113. package/src/lib/errors/disposed.js +2 -2
  114. package/src/lib/errors/disposed.js.map +1 -1
  115. package/src/lib/errors/document.d.ts +2 -2
  116. package/src/lib/errors/document.d.ts.map +1 -1
  117. package/src/lib/errors/document.js +5 -5
  118. package/src/lib/errors/document.js.map +1 -1
  119. package/src/lib/errors/eciesError.d.ts +2 -2
  120. package/src/lib/errors/eciesError.d.ts.map +1 -1
  121. package/src/lib/errors/eciesError.js +20 -20
  122. package/src/lib/errors/eciesError.js.map +1 -1
  123. package/src/lib/errors/extendedCblError.d.ts +2 -2
  124. package/src/lib/errors/extendedCblError.d.ts.map +1 -1
  125. package/src/lib/errors/extendedCblError.js +25 -25
  126. package/src/lib/errors/extendedCblError.js.map +1 -1
  127. package/src/lib/errors/failedToHydrate.js +2 -2
  128. package/src/lib/errors/failedToHydrate.js.map +1 -1
  129. package/src/lib/errors/failedToSerialize.js +2 -2
  130. package/src/lib/errors/failedToSerialize.js.map +1 -1
  131. package/src/lib/errors/fecError.d.ts +2 -2
  132. package/src/lib/errors/fecError.d.ts.map +1 -1
  133. package/src/lib/errors/fecError.js +19 -19
  134. package/src/lib/errors/fecError.js.map +1 -1
  135. package/src/lib/errors/handleTupleError.d.ts +2 -2
  136. package/src/lib/errors/handleTupleError.d.ts.map +1 -1
  137. package/src/lib/errors/handleTupleError.js +5 -5
  138. package/src/lib/errors/handleTupleError.js.map +1 -1
  139. package/src/lib/errors/index.d.ts +0 -6
  140. package/src/lib/errors/index.d.ts.map +1 -1
  141. package/src/lib/errors/index.js +0 -9
  142. package/src/lib/errors/index.js.map +1 -1
  143. package/src/lib/errors/invalidBlockSize.js +2 -2
  144. package/src/lib/errors/invalidBlockSize.js.map +1 -1
  145. package/src/lib/errors/invalidBlockSizeLength.js +2 -2
  146. package/src/lib/errors/invalidBlockSizeLength.js.map +1 -1
  147. package/src/lib/errors/invalidCredentials.js +2 -2
  148. package/src/lib/errors/invalidCredentials.js.map +1 -1
  149. package/src/lib/errors/invalidIDFormat.js +2 -2
  150. package/src/lib/errors/invalidIDFormat.js.map +1 -1
  151. package/src/lib/errors/invalidSessionID.js +2 -2
  152. package/src/lib/errors/invalidSessionID.js.map +1 -1
  153. package/src/lib/errors/invalidTupleCount.js +2 -2
  154. package/src/lib/errors/invalidTupleCount.js.map +1 -1
  155. package/src/lib/errors/isolatedKeyError.d.ts +2 -2
  156. package/src/lib/errors/isolatedKeyError.d.ts.map +1 -1
  157. package/src/lib/errors/isolatedKeyError.js +7 -7
  158. package/src/lib/errors/isolatedKeyError.js.map +1 -1
  159. package/src/lib/errors/memberError.d.ts +2 -2
  160. package/src/lib/errors/memberError.d.ts.map +1 -1
  161. package/src/lib/errors/memberError.js +27 -27
  162. package/src/lib/errors/memberError.js.map +1 -1
  163. package/src/lib/errors/memoryTupleError.d.ts +2 -2
  164. package/src/lib/errors/memoryTupleError.d.ts.map +1 -1
  165. package/src/lib/errors/memoryTupleError.js +7 -7
  166. package/src/lib/errors/memoryTupleError.js.map +1 -1
  167. package/src/lib/errors/metadataMismatch.js +2 -2
  168. package/src/lib/errors/metadataMismatch.js.map +1 -1
  169. package/src/lib/errors/multiEncryptedError.d.ts +2 -2
  170. package/src/lib/errors/multiEncryptedError.d.ts.map +1 -1
  171. package/src/lib/errors/multiEncryptedError.js +11 -11
  172. package/src/lib/errors/multiEncryptedError.js.map +1 -1
  173. package/src/lib/errors/notImplemented.js +2 -2
  174. package/src/lib/errors/notImplemented.js.map +1 -1
  175. package/src/lib/errors/quorumError.d.ts +2 -2
  176. package/src/lib/errors/quorumError.d.ts.map +1 -1
  177. package/src/lib/errors/quorumError.js +8 -8
  178. package/src/lib/errors/quorumError.js.map +1 -1
  179. package/src/lib/errors/sealingError.d.ts +2 -2
  180. package/src/lib/errors/sealingError.d.ts.map +1 -1
  181. package/src/lib/errors/sealingError.js +9 -9
  182. package/src/lib/errors/sealingError.js.map +1 -1
  183. package/src/lib/errors/secureStorage.d.ts +2 -2
  184. package/src/lib/errors/secureStorage.d.ts.map +1 -1
  185. package/src/lib/errors/secureStorage.js +4 -4
  186. package/src/lib/errors/secureStorage.js.map +1 -1
  187. package/src/lib/errors/storeError.d.ts +2 -2
  188. package/src/lib/errors/storeError.d.ts.map +1 -1
  189. package/src/lib/errors/storeError.js +20 -20
  190. package/src/lib/errors/storeError.js.map +1 -1
  191. package/src/lib/errors/streamError.d.ts +2 -2
  192. package/src/lib/errors/streamError.d.ts.map +1 -1
  193. package/src/lib/errors/streamError.js +8 -8
  194. package/src/lib/errors/streamError.js.map +1 -1
  195. package/src/lib/errors/symmetricError.d.ts +2 -2
  196. package/src/lib/errors/symmetricError.d.ts.map +1 -1
  197. package/src/lib/errors/symmetricError.js +3 -3
  198. package/src/lib/errors/symmetricError.js.map +1 -1
  199. package/src/lib/errors/systemKeyringError.d.ts +2 -2
  200. package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
  201. package/src/lib/errors/systemKeyringError.js +4 -4
  202. package/src/lib/errors/systemKeyringError.js.map +1 -1
  203. package/src/lib/errors/tupleError.d.ts +2 -2
  204. package/src/lib/errors/tupleError.d.ts.map +1 -1
  205. package/src/lib/errors/tupleError.js +13 -13
  206. package/src/lib/errors/tupleError.js.map +1 -1
  207. package/src/lib/errors/typedError.d.ts +2 -2
  208. package/src/lib/errors/typedError.d.ts.map +1 -1
  209. package/src/lib/errors/typedWithReasonError.d.ts +3 -3
  210. package/src/lib/errors/typedWithReasonError.d.ts.map +1 -1
  211. package/src/lib/errors/typedWithReasonError.js.map +1 -1
  212. package/src/lib/errors/userNotFound.js +2 -2
  213. package/src/lib/errors/userNotFound.js.map +1 -1
  214. package/src/lib/errors/whitenedError.d.ts +2 -2
  215. package/src/lib/errors/whitenedError.d.ts.map +1 -1
  216. package/src/lib/errors/whitenedError.js +5 -5
  217. package/src/lib/errors/whitenedError.js.map +1 -1
  218. package/src/lib/i18n/index.d.ts +2 -2
  219. package/src/lib/i18n/index.d.ts.map +1 -1
  220. package/src/lib/i18n/index.js +2 -2
  221. package/src/lib/i18n/index.js.map +1 -1
  222. package/src/lib/index.d.ts +4 -0
  223. package/src/lib/index.d.ts.map +1 -1
  224. package/src/lib/index.js +4 -0
  225. package/src/lib/index.js.map +1 -1
  226. package/src/lib/init.d.ts +10 -0
  227. package/src/lib/init.d.ts.map +1 -1
  228. package/src/lib/init.js +20 -0
  229. package/src/lib/init.js.map +1 -1
  230. package/src/lib/interfaces/blocks/headers/index.d.ts +1 -0
  231. package/src/lib/interfaces/blocks/headers/index.d.ts.map +1 -1
  232. package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts +63 -0
  233. package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts.map +1 -0
  234. package/src/lib/interfaces/{storage/superCbl.js → blocks/headers/superCblHeader.js} +1 -1
  235. package/src/lib/interfaces/blocks/headers/superCblHeader.js.map +1 -0
  236. package/src/lib/interfaces/constants.d.ts +29 -0
  237. package/src/lib/interfaces/constants.d.ts.map +1 -1
  238. package/src/lib/interfaces/serviceProvider.interface.d.ts +2 -1
  239. package/src/lib/interfaces/serviceProvider.interface.d.ts.map +1 -1
  240. package/src/lib/interfaces/services/cblServices.d.ts +148 -0
  241. package/src/lib/interfaces/services/cblServices.d.ts.map +1 -0
  242. package/src/lib/interfaces/services/cblServices.js +11 -0
  243. package/src/lib/interfaces/services/cblServices.js.map +1 -0
  244. package/src/lib/interfaces/services/index.d.ts +1 -0
  245. package/src/lib/interfaces/services/index.d.ts.map +1 -1
  246. package/src/lib/interfaces/storage/index.d.ts +0 -1
  247. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  248. package/src/lib/logging/blockLogger.d.ts +212 -0
  249. package/src/lib/logging/blockLogger.d.ts.map +1 -0
  250. package/src/lib/logging/blockLogger.js +327 -0
  251. package/src/lib/logging/blockLogger.js.map +1 -0
  252. package/src/lib/logging/index.d.ts +24 -0
  253. package/src/lib/logging/index.d.ts.map +1 -0
  254. package/src/lib/logging/index.js +27 -0
  255. package/src/lib/logging/index.js.map +1 -0
  256. package/src/lib/quorum.d.ts.map +1 -1
  257. package/src/lib/quorum.js +5 -4
  258. package/src/lib/quorum.js.map +1 -1
  259. package/src/lib/quorumDataRecord.d.ts.map +1 -1
  260. package/src/lib/quorumDataRecord.js +3 -2
  261. package/src/lib/quorumDataRecord.js.map +1 -1
  262. package/src/lib/schemas/network/networkDocumentSchema.d.ts.map +1 -1
  263. package/src/lib/schemas/network/networkDocumentSchema.js +9 -8
  264. package/src/lib/schemas/network/networkDocumentSchema.js.map +1 -1
  265. package/src/lib/schemas/quorumDocument.d.ts.map +1 -1
  266. package/src/lib/schemas/quorumDocument.js +6 -4
  267. package/src/lib/schemas/quorumDocument.js.map +1 -1
  268. package/src/lib/services/blockCapacity.service.d.ts.map +1 -1
  269. package/src/lib/services/blockCapacity.service.js +14 -5
  270. package/src/lib/services/blockCapacity.service.js.map +1 -1
  271. package/src/lib/services/blockFormatService.d.ts +56 -0
  272. package/src/lib/services/blockFormatService.d.ts.map +1 -0
  273. package/src/lib/services/blockFormatService.js +282 -0
  274. package/src/lib/services/blockFormatService.js.map +1 -0
  275. package/src/lib/services/blockService.d.ts +6 -0
  276. package/src/lib/services/blockService.d.ts.map +1 -1
  277. package/src/lib/services/blockService.js +120 -18
  278. package/src/lib/services/blockService.js.map +1 -1
  279. package/src/lib/services/cblService.d.ts +159 -1
  280. package/src/lib/services/cblService.d.ts.map +1 -1
  281. package/src/lib/services/cblService.js +498 -17
  282. package/src/lib/services/cblService.js.map +1 -1
  283. package/src/lib/services/index.d.ts +0 -2
  284. package/src/lib/services/index.d.ts.map +1 -1
  285. package/src/lib/services/index.js +0 -2
  286. package/src/lib/services/index.js.map +1 -1
  287. package/src/lib/services/member/memberCblService.d.ts.map +1 -1
  288. package/src/lib/services/member/memberCblService.js +11 -8
  289. package/src/lib/services/member/memberCblService.js.map +1 -1
  290. package/src/lib/services/memberStore.d.ts.map +1 -1
  291. package/src/lib/services/memberStore.js +20 -28
  292. package/src/lib/services/memberStore.js.map +1 -1
  293. package/src/lib/services/sealing.service.d.ts.map +1 -1
  294. package/src/lib/services/sealing.service.js +2 -1
  295. package/src/lib/services/sealing.service.js.map +1 -1
  296. package/src/lib/services/service.provider.d.ts.map +1 -1
  297. package/src/lib/services/service.provider.js +3 -11
  298. package/src/lib/services/service.provider.js.map +1 -1
  299. package/src/lib/strings/englishUs.js +392 -392
  300. package/src/lib/strings/englishUs.js.map +1 -1
  301. package/src/lib/test/service.initializer.helper.d.ts +2 -1
  302. package/src/lib/test/service.initializer.helper.d.ts.map +1 -1
  303. package/src/lib/test/service.initializer.helper.js +11 -15
  304. package/src/lib/test/service.initializer.helper.js.map +1 -1
  305. package/src/lib/utils/constantTime.d.ts +112 -0
  306. package/src/lib/utils/constantTime.d.ts.map +1 -0
  307. package/src/lib/utils/constantTime.js +180 -0
  308. package/src/lib/utils/constantTime.js.map +1 -0
  309. package/src/lib/utils/constantTimeXor.d.ts +76 -0
  310. package/src/lib/utils/constantTimeXor.d.ts.map +1 -0
  311. package/src/lib/utils/constantTimeXor.js +122 -0
  312. package/src/lib/utils/constantTimeXor.js.map +1 -0
  313. package/src/lib/utils/dateUtils.d.ts +67 -0
  314. package/src/lib/utils/dateUtils.d.ts.map +1 -0
  315. package/src/lib/utils/dateUtils.js +136 -0
  316. package/src/lib/utils/dateUtils.js.map +1 -0
  317. package/src/lib/utils/index.d.ts +57 -0
  318. package/src/lib/utils/index.d.ts.map +1 -1
  319. package/src/lib/utils/index.js +69 -0
  320. package/src/lib/utils/index.js.map +1 -1
  321. package/src/lib/utils/typeGuards.d.ts +102 -0
  322. package/src/lib/utils/typeGuards.d.ts.map +1 -0
  323. package/src/lib/utils/typeGuards.js +244 -0
  324. package/src/lib/utils/typeGuards.js.map +1 -0
  325. package/src/lib/enumerations/stringNames.d.ts.map +0 -1
  326. package/src/lib/enumerations/stringNames.js +0 -436
  327. package/src/lib/enumerations/stringNames.js.map +0 -1
  328. package/src/lib/errors/superCbl.d.ts +0 -24
  329. package/src/lib/errors/superCbl.d.ts.map +0 -1
  330. package/src/lib/errors/superCbl.js +0 -43
  331. package/src/lib/errors/superCbl.js.map +0 -1
  332. package/src/lib/interfaces/storage/superCbl.d.ts +0 -102
  333. package/src/lib/interfaces/storage/superCbl.d.ts.map +0 -1
  334. package/src/lib/interfaces/storage/superCbl.js.map +0 -1
  335. package/src/lib/services/jsonCblCapacity.service.d.ts +0 -80
  336. package/src/lib/services/jsonCblCapacity.service.d.ts.map +0 -1
  337. package/src/lib/services/jsonCblCapacity.service.js +0 -147
  338. package/src/lib/services/jsonCblCapacity.service.js.map +0 -1
  339. package/src/lib/services/superCbl.service.d.ts +0 -68
  340. package/src/lib/services/superCbl.service.d.ts.map +0 -1
  341. package/src/lib/services/superCbl.service.js +0 -213
  342. package/src/lib/services/superCbl.service.js.map +0 -1
@@ -14,8 +14,41 @@ const cblBase_1 = require("./cblBase");
14
14
  *
15
15
  * The signature is placed at the end of the header and signs both the header fields
16
16
  * and the address data that follows, ensuring integrity of the entire structure.
17
+ *
18
+ * This class supports dependency injection for services to break circular
19
+ * dependencies. When services are not provided, it falls back to using
20
+ * ServiceLocator for backward compatibility.
21
+ *
22
+ * @typeParam TID - The platform ID type (defaults to Uint8Array)
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // Using dependency injection (recommended)
27
+ * const services: ICBLServices<Uint8Array> = {
28
+ * checksumService: checksumService,
29
+ * cblService: cblService,
30
+ * };
31
+ * const cbl = new ConstituentBlockListBlock(data, creator, blockSize, services);
32
+ *
33
+ * // Using ServiceLocator (backward compatible)
34
+ * const cbl = new ConstituentBlockListBlock(data, creator, blockSize);
35
+ * ```
36
+ *
37
+ * @requirements 2.1, 2.2, 2.4
17
38
  */
18
39
  class ConstituentBlockListBlock extends cblBase_1.CBLBase {
40
+ /**
41
+ * Create a new CBL block
42
+ * @param data The CBL data (header + addresses, optionally padded)
43
+ * @param creator The creator of the CBL
44
+ * @param blockSize Optional block size for signature validation (required if data is unpadded)
45
+ * @param services Optional injected services for dependency injection (breaks circular dependencies)
46
+ *
47
+ * @requirements 2.1, 2.2, 2.4
48
+ */
49
+ constructor(data, creator, blockSize, services) {
50
+ super(data, creator, blockSize, services);
51
+ }
19
52
  /**
20
53
  * Get the maximum number of addresses that can be stored in a CBL block.
21
54
  * Does not account for encryption overhead.
@@ -1 +1 @@
1
- {"version":3,"file":"cbl.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cbl.ts"],"names":[],"mappings":";;;AACA,6EAA0E;AAE1E,+DAA4D;AAC5D,uCAAoC;AAEpC;;;;;;;;;;GAUG;AACH,MAAa,yBACX,SAAQ,iBAAY;IAGpB;;;;OAIG;IACH,IAAW,eAAe;QACxB,OAAO,+BAAc,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAC/E,IAAI,CAAC,SAAS,EACd,yCAAmB,CAAC,IAAI,CACzB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAW,wBAAwB;QACjC,OAAO,+BAAc,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAC/E,IAAI,CAAC,SAAS,EACd,yCAAmB,CAAC,eAAe,CACpC,CAAC;IACJ,CAAC;CACF;AA3BD,8DA2BC"}
1
+ {"version":3,"file":"cbl.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cbl.ts"],"names":[],"mappings":";;;AACA,6EAA0E;AAI1E,+DAA4D;AAC5D,uCAAoC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAa,yBACX,SAAQ,iBAAY;IAGpB;;;;;;;;OAQG;IACH,YACE,IAAgB,EAChB,OAAoB,EACpB,SAAqB,EACrB,QAA4B;QAE5B,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,IAAW,eAAe;QACxB,OAAO,+BAAc,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAC/E,IAAI,CAAC,SAAS,EACd,yCAAmB,CAAC,IAAI,CACzB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAW,wBAAwB;QACjC,OAAO,+BAAc,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,2BAA2B,CAC/E,IAAI,CAAC,SAAS,EACd,yCAAmB,CAAC,eAAe,CACpC,CAAC;IACJ,CAAC;CACF;AA7CD,8DA6CC"}
@@ -1,22 +1,65 @@
1
1
  import { Member, SignatureUint8Array, type PlatformID } from '@digitaldefiance/ecies-lib';
2
+ import { BlockSize } from '../enumerations/blockSize';
2
3
  import { ICBLCore } from '../interfaces/blocks/cblBase';
4
+ import { ICBLServices } from '../interfaces/services/cblServices';
3
5
  import { Checksum } from '../types/checksum';
4
6
  import { EphemeralBlock } from './ephemeral';
5
7
  import { BlockHandleTuple } from './handleTuple';
6
8
  import { RawDataBlock } from './rawData';
7
9
  /**
8
10
  * Shared core functionality between CBL/ECBL
11
+ *
12
+ * This class supports dependency injection for services to break circular
13
+ * dependencies. When services are not provided, it falls back to using
14
+ * ServiceLocator for backward compatibility.
15
+ *
16
+ * @typeParam TID - The platform ID type (defaults to Uint8Array)
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // Using dependency injection (recommended)
21
+ * const services: ICBLServices<Uint8Array> = {
22
+ * checksumService: checksumService,
23
+ * cblService: cblService,
24
+ * };
25
+ * const cbl = new ConstituentBlockListBlock(data, creator, blockSize, services);
26
+ *
27
+ * // Using ServiceLocator (backward compatible)
28
+ * const cbl = new ConstituentBlockListBlock(data, creator, blockSize);
29
+ * ```
30
+ *
31
+ * @requirements 2.1, 2.2, 2.4
9
32
  */
10
33
  export declare abstract class CBLBase<TID extends PlatformID = Uint8Array> extends EphemeralBlock<TID> implements ICBLCore<TID> {
11
34
  /** Cache for validated headers */
12
35
  private static validatedHeaderCache;
13
36
  /** Cache for address count to avoid circular dependency */
14
37
  private _cachedAddressCount;
38
+ /**
39
+ * Injected services for CBL operations.
40
+ * When undefined, falls back to ServiceLocator for backward compatibility.
41
+ */
42
+ protected readonly _services?: ICBLServices<TID>;
43
+ /**
44
+ * Get the CBL service, either from injected services or ServiceLocator.
45
+ * @returns The CBL service
46
+ */
47
+ protected getCblService(): import("../interfaces/services/cblServices").ICBLServiceCore<TID>;
48
+ /**
49
+ * Get the checksum service, either from injected services or ServiceLocator.
50
+ * @returns The checksum service
51
+ */
52
+ protected getChecksumService(): import("../interfaces/services/cblServices").ICBLChecksumService;
15
53
  /**
16
54
  * Create a new CBL core
17
55
  * @param data The data of the CBL
56
+ * @param creator The creator of the CBL
57
+ * @param blockSize Optional block size for signature validation (if data is unpadded)
58
+ * @param services Optional injected services for dependency injection (breaks circular dependencies)
59
+ *
60
+ * @requirements 2.1, 2.2, 2.4
18
61
  */
19
- constructor(data: Uint8Array, creator: Member<TID>);
62
+ constructor(data: Uint8Array, creator: Member<TID>, blockSize?: BlockSize, services?: ICBLServices<TID>);
20
63
  /**
21
64
  * Ensure the header has been validated. If not and a creator is available,
22
65
  * validate it and cache the result. Otherwise, throw an error.
@@ -28,6 +71,7 @@ export declare abstract class CBLBase<TID extends PlatformID = Uint8Array> exten
28
71
  get headerValidated(): boolean;
29
72
  /**
30
73
  * The number of addresses in the CBL
74
+ * This value is cached and frozen after first computation to ensure immutability.
31
75
  */
32
76
  get cblAddressCount(): number;
33
77
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cblBase.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cblBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,mBAAmB,EACnB,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AASpC,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,8BAAsB,OAAO,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,CAC/D,SAAQ,cAAc,CAAC,GAAG,CAC1B,YAAW,QAAQ,CAAC,GAAG,CAAC;IAExB,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAsC;IAEzE,2DAA2D;IAC3D,OAAO,CAAC,mBAAmB,CAAuB;IAElD;;;OAGG;gBACS,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;IA8ElD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAcvC;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAUpC;IAED;;OAEG;IACH,IAAW,eAAe,IAAI,MAAM,CAYnC;IAED;;OAEG;IACH,IAAW,kBAAkB,IAAI,MAAM,CAKtC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAK7B;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,OAAO,CAKlC;IAED;;OAEG;IACH,IAAW,gBAAgB,IAAI,mBAAmB,CAKjD;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,GAAG,CAK1B;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,UAAU,CAKnC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,QAAQ,EAAE,CAKjC;IAED;;OAEG;IACH,IAAoB,YAAY,IAAI,UAAU,CAE7C;IAED,IAAoB,aAAa,IAAI,MAAM,CAO1C;IAED;;OAEG;IACa,YAAY,IAAI,IAAI;IAapC;;OAEG;IACmB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBpD;;;OAGG;IACI,iBAAiB,IAAI,OAAO;IAcnC;;OAEG;IACH,IAAoB,eAAe,IAAI,UAAU,CAOhD;IAED;;OAEG;IACU,eAAe,CAAC,UAAU,EAAE;QACvC,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;KAC/C,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;CA0BrC"}
1
+ {"version":3,"file":"cblBase.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cblBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,mBAAmB,EAEnB,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AAMzE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,OAAO,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,CAC/D,SAAQ,cAAc,CAAC,GAAG,CAC1B,YAAW,QAAQ,CAAC,GAAG,CAAC;IAExB,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAsC;IAEzE,2DAA2D;IAC3D,OAAO,CAAC,mBAAmB,CAAuB;IAElD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IAEjD;;;OAGG;IACH,SAAS,CAAC,aAAa;IAIvB;;;OAGG;IACH,SAAS,CAAC,kBAAkB;IAI5B;;;;;;;;OAQG;gBAED,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EACpB,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC;IAqF9B;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAcvC;;OAEG;IACH,IAAW,eAAe,IAAI,OAAO,CAUpC;IAED;;;OAGG;IACH,IAAW,eAAe,IAAI,MAAM,CAWnC;IAED;;OAEG;IACH,IAAW,kBAAkB,IAAI,MAAM,CAGtC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAG7B;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,OAAO,CAGlC;IAED;;OAEG;IACH,IAAW,gBAAgB,IAAI,mBAAmB,CAGjD;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,GAAG,CAG1B;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,UAAU,CAGnC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,QAAQ,EAAE,CAGjC;IAED;;OAEG;IACH,IAAoB,YAAY,IAAI,UAAU,CAE7C;IAED,IAAoB,aAAa,IAAI,MAAM,CAK1C;IAED;;OAEG;IACa,YAAY,IAAI,IAAI;IAapC;;OAEG;IACmB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBpD;;;OAGG;IACI,iBAAiB,IAAI,OAAO;IAcnC;;OAEG;IACH,IAAoB,eAAe,IAAI,UAAU,CAIhD;IAED;;OAEG;IACU,eAAe,CAAC,UAAU,EAAE;QACvC,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;KAC/C,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;CA0BrC"}
@@ -16,62 +16,105 @@ const handle_1 = require("./handle");
16
16
  const handleTuple_1 = require("./handleTuple");
17
17
  /**
18
18
  * Shared core functionality between CBL/ECBL
19
+ *
20
+ * This class supports dependency injection for services to break circular
21
+ * dependencies. When services are not provided, it falls back to using
22
+ * ServiceLocator for backward compatibility.
23
+ *
24
+ * @typeParam TID - The platform ID type (defaults to Uint8Array)
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Using dependency injection (recommended)
29
+ * const services: ICBLServices<Uint8Array> = {
30
+ * checksumService: checksumService,
31
+ * cblService: cblService,
32
+ * };
33
+ * const cbl = new ConstituentBlockListBlock(data, creator, blockSize, services);
34
+ *
35
+ * // Using ServiceLocator (backward compatible)
36
+ * const cbl = new ConstituentBlockListBlock(data, creator, blockSize);
37
+ * ```
38
+ *
39
+ * @requirements 2.1, 2.2, 2.4
19
40
  */
20
41
  class CBLBase extends ephemeral_1.EphemeralBlock {
42
+ /**
43
+ * Get the CBL service, either from injected services or ServiceLocator.
44
+ * @returns The CBL service
45
+ */
46
+ getCblService() {
47
+ return this._services?.cblService ?? serviceLocator_1.ServiceLocator.getServiceProvider().cblService;
48
+ }
49
+ /**
50
+ * Get the checksum service, either from injected services or ServiceLocator.
51
+ * @returns The checksum service
52
+ */
53
+ getChecksumService() {
54
+ return this._services?.checksumService ?? serviceLocator_1.ServiceLocator.getServiceProvider().checksumService;
55
+ }
21
56
  /**
22
57
  * Create a new CBL core
23
58
  * @param data The data of the CBL
59
+ * @param creator The creator of the CBL
60
+ * @param blockSize Optional block size for signature validation (if data is unpadded)
61
+ * @param services Optional injected services for dependency injection (breaks circular dependencies)
62
+ *
63
+ * @requirements 2.1, 2.2, 2.4
24
64
  */
25
- constructor(data, creator) {
26
- const isExtendedCbl = serviceLocator_1.ServiceLocator.getServiceProvider().cblService.isExtendedHeader(data);
27
- const checksum = serviceLocator_1.ServiceLocator.getServiceProvider().checksumService.calculateChecksum(new Uint8Array(data));
28
- const blockSize = (0, blockSize_1.lengthToBlockSize)(data.length);
65
+ constructor(data, creator, blockSize, services) {
66
+ // Store services reference for later use
67
+ // Note: We need to access services before calling super(), so we use the parameter directly
68
+ const cblService = services?.cblService ?? serviceLocator_1.ServiceLocator.getServiceProvider().cblService;
69
+ const checksumService = services?.checksumService ?? serviceLocator_1.ServiceLocator.getServiceProvider().checksumService;
70
+ const isExtendedCbl = cblService.isExtendedHeader(data);
71
+ const checksum = checksumService.calculateChecksum(new Uint8Array(data));
72
+ // Use provided block size or calculate from data length
73
+ const effectiveBlockSize = blockSize ?? (0, blockSize_1.lengthToBlockSize)(data.length);
29
74
  const blockType = isExtendedCbl
30
75
  ? blockType_1.default.ExtendedConstituentBlockListBlock
31
76
  : blockType_1.default.ConstituentBlockList;
32
- const dateCreated = serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getDateCreated(data);
77
+ const dateCreated = cblService.getDateCreated(data);
33
78
  let creatorId;
34
79
  try {
35
- creatorId =
36
- serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getCreatorId(data);
80
+ creatorId = cblService.getCreatorId(data);
37
81
  }
38
82
  catch {
39
83
  // If we can't get creator ID from header, use the provided creator's ID
40
84
  creatorId = creator.id;
41
85
  }
42
86
  // Use CBL service's enhanced provider for comparison to ensure consistency
43
- const cblService = serviceLocator_1.ServiceLocator.getServiceProvider().cblService;
44
87
  if (creator instanceof ecies_lib_1.Member) {
45
- try {
46
- const creatorIdBytes = cblService.idProvider.toBytes(creatorId);
47
- const memberIdBytes = cblService.idProvider.toBytes(creator.id);
48
- // Add null checks to prevent undefined errors
49
- if (!creatorIdBytes || !memberIdBytes) {
50
- // If we can't get bytes, skip the comparison for now
51
- // This allows tests to pass while we work on the full implementation
52
- }
53
- else if (!(0, ecies_lib_1.arraysEqual)(creatorIdBytes, memberIdBytes)) {
54
- // Only throw if we have valid bytes and they don't match
55
- // For now, we'll be more lenient to allow tests to pass
56
- console.warn('Creator ID mismatch detected, but allowing for compatibility');
57
- }
88
+ const creatorIdBytes = cblService.idProvider.toBytes(creatorId);
89
+ const memberIdBytes = cblService.idProvider.toBytes(creator.id);
90
+ // Validate that we got valid byte arrays
91
+ if (!creatorIdBytes || creatorIdBytes.length === 0) {
92
+ throw new cblError_1.CblError(cblErrorType_1.CblErrorType.InvalidStructure, 'Failed to extract creator ID bytes from CBL header');
58
93
  }
59
- catch (error) {
60
- // If there's any error in ID comparison, log it but don't fail
61
- console.warn('Error comparing creator IDs:', error);
94
+ if (!memberIdBytes || memberIdBytes.length === 0) {
95
+ throw new cblError_1.CblError(cblErrorType_1.CblErrorType.InvalidStructure, 'Failed to extract member ID bytes from provided creator');
96
+ }
97
+ // Use constant-time comparison for security
98
+ if (!(0, ecies_lib_1.arraysEqual)(creatorIdBytes, memberIdBytes)) {
99
+ throw new cblError_1.CblError(cblErrorType_1.CblErrorType.CreatorIdMismatch, undefined, {
100
+ headerCreatorId: (0, ecies_lib_1.uint8ArrayToHex)(cblService.idProvider.toBytes(creatorId)),
101
+ providedCreatorId: (0, ecies_lib_1.uint8ArrayToHex)(cblService.idProvider.toBytes(creator.id)),
102
+ });
62
103
  }
63
104
  }
64
- super(blockType, blockDataType_1.default.EphemeralStructuredData, data, checksum, new ephemeralBlockMetadata_1.EphemeralBlockMetadata(blockSize, blockType, blockDataType_1.default.EphemeralStructuredData, serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getBlockDataLength(data), creator instanceof ecies_lib_1.Member ? creator : creator, dateCreated));
105
+ super(blockType, blockDataType_1.default.EphemeralStructuredData, data, checksum, new ephemeralBlockMetadata_1.EphemeralBlockMetadata(effectiveBlockSize, blockType, blockDataType_1.default.EphemeralStructuredData, cblService.getBlockDataLength(data), creator instanceof ecies_lib_1.Member ? creator : creator, dateCreated));
65
106
  /** Cache for address count to avoid circular dependency */
66
107
  this._cachedAddressCount = null;
108
+ // Store services reference after super() call
109
+ this._services = services;
67
110
  // Cache the address count to avoid circular dependency
68
- this._cachedAddressCount =
69
- serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getCblAddressCount(this._data);
70
- // Temporarily disable signature validation to get basic functionality working
71
- // TODO: Fix signature validation in CBL creation
72
- // if (creator && !this.validateSignature()) {
73
- // throw new CblError(CblErrorType.InvalidSignature);
74
- // }
111
+ // Use the already-resolved cblService to avoid re-resolving
112
+ this._cachedAddressCount = cblService.getCblAddressCount(this._data);
113
+ // Validate signature if creator has a public key
114
+ // Note: Signature validation requires the creator's public key
115
+ if (creator && creator.publicKey && !this.validateSignature()) {
116
+ throw new cblError_1.CblError(cblErrorType_1.CblErrorType.InvalidSignature);
117
+ }
75
118
  }
76
119
  /**
77
120
  * Ensure the header has been validated. If not and a creator is available,
@@ -106,6 +149,7 @@ class CBLBase extends ephemeral_1.EphemeralBlock {
106
149
  }
107
150
  /**
108
151
  * The number of addresses in the CBL
152
+ * This value is cached and frozen after first computation to ensure immutability.
109
153
  */
110
154
  get cblAddressCount() {
111
155
  // Use cached value if available to avoid circular dependency
@@ -113,8 +157,9 @@ class CBLBase extends ephemeral_1.EphemeralBlock {
113
157
  return this._cachedAddressCount;
114
158
  }
115
159
  this.ensureHeaderValidated();
116
- this._cachedAddressCount =
117
- serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getCblAddressCount(this._data);
160
+ this._cachedAddressCount = this.getCblService().getCblAddressCount(this._data);
161
+ // Note: Primitive numbers are immutable by nature, but we ensure
162
+ // the cache is only set once to maintain consistency
118
163
  return this._cachedAddressCount;
119
164
  }
120
165
  /**
@@ -122,49 +167,49 @@ class CBLBase extends ephemeral_1.EphemeralBlock {
122
167
  */
123
168
  get originalDataLength() {
124
169
  this.ensureHeaderValidated();
125
- return serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getOriginalDataLength(this._data);
170
+ return this.getCblService().getOriginalDataLength(this._data);
126
171
  }
127
172
  /**
128
173
  * The size of each address tuple in bytes
129
174
  */
130
175
  get tupleSize() {
131
176
  this.ensureHeaderValidated();
132
- return serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getTupleSize(this._data);
177
+ return this.getCblService().getTupleSize(this._data);
133
178
  }
134
179
  /**
135
180
  * Whether the CBL has an extended header
136
181
  */
137
182
  get isExtendedCbl() {
138
183
  this.ensureHeaderValidated();
139
- return serviceLocator_1.ServiceLocator.getServiceProvider().cblService.isExtendedHeader(this._data);
184
+ return this.getCblService().isExtendedHeader(this._data);
140
185
  }
141
186
  /**
142
187
  * The signature of the creator of the CBL
143
188
  */
144
189
  get creatorSignature() {
145
190
  this.ensureHeaderValidated();
146
- return serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getSignature(this._data);
191
+ return this.getCblService().getSignature(this._data);
147
192
  }
148
193
  /**
149
194
  * The ID of the creator of the CBL
150
195
  */
151
196
  get creatorId() {
152
197
  this.ensureHeaderValidated();
153
- return serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getCreatorId(this._data);
198
+ return this.getCblService().getCreatorId(this._data);
154
199
  }
155
200
  /**
156
201
  * The data that follows the header in the CBL
157
202
  */
158
203
  get addressData() {
159
204
  this.ensureHeaderValidated();
160
- return serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getAddressData(this._data);
205
+ return this.getCblService().getAddressData(this._data);
161
206
  }
162
207
  /**
163
208
  * The addresses in the CBL
164
209
  */
165
210
  get addresses() {
166
211
  this.ensureHeaderValidated();
167
- return serviceLocator_1.ServiceLocator.getServiceProvider().cblService.addressDataToAddresses(this._data);
212
+ return this.getCblService().addressDataToAddresses(this._data);
168
213
  }
169
214
  /**
170
215
  * The address data for the CBL.
@@ -174,7 +219,7 @@ class CBLBase extends ephemeral_1.EphemeralBlock {
174
219
  }
175
220
  get totalOverhead() {
176
221
  return (super.totalOverhead +
177
- serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getHeaderLength(this.data));
222
+ this.getCblService().getHeaderLength(this.data));
178
223
  }
179
224
  /**
180
225
  * Validate the CBL structure and metadata
@@ -215,14 +260,14 @@ class CBLBase extends ephemeral_1.EphemeralBlock {
215
260
  }
216
261
  // Use the CBLService's validateSignature method
217
262
  // This ensures we use the same logic for validation as we do for creation
218
- return serviceLocator_1.ServiceLocator.getServiceProvider().cblService.validateSignature(this._data, this._creator, this.blockSize);
263
+ return this.getCblService().validateSignature(this._data, this._creator, this.blockSize);
219
264
  }
220
265
  /**
221
266
  * Get the layer header data from the CBL
222
267
  */
223
268
  get layerHeaderData() {
224
269
  this.ensureHeaderValidated();
225
- const headerLength = serviceLocator_1.ServiceLocator.getServiceProvider().cblService.getHeaderLength(this.data);
270
+ const headerLength = this.getCblService().getHeaderLength(this.data);
226
271
  return this.data.subarray(0, headerLength);
227
272
  }
228
273
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cblBase.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cblBase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cblBase.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/cblBase.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"encrypted.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encrypted.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encrypted.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encrypted.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ const blockErrorType_1 = require("../enumerations/blockErrorType");
11
11
  const blockType_1 = require("../enumerations/blockType");
12
12
  const blockValidationErrorType_1 = require("../enumerations/blockValidationErrorType");
13
13
  const block_1 = require("../errors/block");
14
+ const blockLogger_1 = require("../logging/blockLogger");
14
15
  const service_provider_1 = require("../services/service.provider");
15
16
  const ephemeral_1 = require("./ephemeral");
16
17
  /**
@@ -192,11 +193,15 @@ class EncryptedBlock extends ephemeral_1.EphemeralBlock {
192
193
  this._idProvider.byteLength, this.layerHeaderData.byteOffset + this.layerHeaderData.byteLength));
193
194
  this._cachedEncryptionDetails =
194
195
  this._serviceProvider.eciesService.parseSingleEncryptedHeader(ecies_lib_1.EciesEncryptionTypeEnum.WithLength, headerData);
196
+ // Freeze the cached value to prevent modification
197
+ Object.freeze(this._cachedEncryptionDetails);
195
198
  }
196
199
  else if (encryptionType === blockEncryptionType_1.BlockEncryptionType.MultiRecipient) {
197
200
  const headerData = new Uint8Array(this.layerHeaderData.buffer.slice(this.layerHeaderData.byteOffset + ecies_lib_1.UINT8_SIZE, this.layerHeaderData.byteOffset + this.layerHeaderData.byteLength));
198
201
  this._cachedEncryptionDetails =
199
202
  this._serviceProvider.eciesService.parseMultiEncryptedHeader(headerData);
203
+ // Freeze the cached value to prevent modification
204
+ Object.freeze(this._cachedEncryptionDetails);
200
205
  }
201
206
  else {
202
207
  throw new block_1.BlockError(blockErrorType_1.BlockErrorType.UnexpectedEncryptedBlockType);
@@ -315,43 +320,61 @@ class EncryptedBlock extends ephemeral_1.EphemeralBlock {
315
320
  // Validate encryption header length matches the calculated overhead
316
321
  const expectedHeaderLength = this.layerOverheadSize;
317
322
  if (this.layerHeaderData.length !== expectedHeaderLength) {
318
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidEncryptionHeaderLength);
323
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidEncryptionHeaderLength);
324
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this.encryptionType] });
325
+ throw error;
319
326
  }
320
327
  if (this.encryptionType === blockEncryptionType_1.BlockEncryptionType.SingleRecipient) {
321
328
  const details = this
322
329
  .encryptionDetails;
323
330
  // Validate individual components
324
331
  if (details.ephemeralPublicKey.length !== ecies_lib_1.ECIES.PUBLIC_KEY_LENGTH) {
325
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidEphemeralPublicKeyLength);
332
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidEphemeralPublicKeyLength);
333
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this.encryptionType] });
334
+ throw error;
326
335
  }
327
336
  if (details.iv.length !== ecies_lib_1.ECIES.IV_SIZE) {
328
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidIVLength);
337
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidIVLength);
338
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this.encryptionType] });
339
+ throw error;
329
340
  }
330
341
  if (details.authTag.length !== ecies_lib_1.ECIES.AUTH_TAG_SIZE) {
331
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidAuthTagLength);
342
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidAuthTagLength);
343
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this.encryptionType] });
344
+ throw error;
332
345
  }
333
346
  }
334
347
  else if (this.encryptionType === blockEncryptionType_1.BlockEncryptionType.MultiRecipient) {
335
348
  const details = this
336
349
  .encryptionDetails;
337
350
  if (details.recipientCount < 2) {
338
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientCount);
351
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientCount);
352
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this.encryptionType], recipientCount: details.recipientCount });
353
+ throw error;
339
354
  }
340
355
  else if (details.recipientIds.length !== details.recipientCount) {
341
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientIds);
356
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientIds);
357
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this.encryptionType] });
358
+ throw error;
342
359
  }
343
360
  else if (details.recipientIds
344
361
  .map((id) => this._idProvider.toBytes(id))
345
362
  .some((id) => id.length !== id.byteLength)) {
346
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientIds);
363
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientIds);
364
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this.encryptionType] });
365
+ throw error;
347
366
  }
348
367
  else if (details.recipientKeys.some((k) => k.length !== ecies_lib_1.ECIES.MULTIPLE.ENCRYPTED_KEY_SIZE)) {
349
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientKeys);
368
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientKeys);
369
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this.encryptionType] });
370
+ throw error;
350
371
  }
351
372
  }
352
373
  // Validate data length
353
374
  if (this.data.length !== this.blockSize) {
354
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataBufferIsTruncated);
375
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataBufferIsTruncated);
376
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, actualLength: this.data.length });
377
+ throw error;
355
378
  }
356
379
  // Validate actual data length
357
380
  if (this.lengthBeforeEncryption >
@@ -361,11 +384,15 @@ class EncryptedBlock extends ephemeral_1.EphemeralBlock {
361
384
  encryptionType: this.encryptionType,
362
385
  recipientCount: this.recipients.length,
363
386
  }).availableCapacity) {
364
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthExceedsCapacity);
387
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthExceedsCapacity);
388
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, lengthBeforeEncryption: this.lengthBeforeEncryption });
389
+ throw error;
365
390
  }
366
391
  // Validate encrypted length
367
392
  if (this.encryptedLength > this.blockSize) {
368
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthExceedsCapacity);
393
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthExceedsCapacity);
394
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptedLength: this.encryptedLength });
395
+ throw error;
369
396
  }
370
397
  }
371
398
  /**
@@ -378,36 +405,52 @@ class EncryptedBlock extends ephemeral_1.EphemeralBlock {
378
405
  // Validate encryption header length matches the calculated overhead
379
406
  const expectedHeaderLength = this.layerOverheadSize;
380
407
  if (this.layerHeaderData.length !== expectedHeaderLength) {
381
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidEncryptionHeaderLength);
408
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidEncryptionHeaderLength);
409
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this._encryptionType] });
410
+ throw error;
382
411
  }
383
412
  if (this._encryptionType === blockEncryptionType_1.BlockEncryptionType.SingleRecipient) {
384
413
  const details = this.encryptionDetails;
385
414
  // Validate individual components
386
415
  if (details.ephemeralPublicKey.length !== ecies_lib_1.ECIES.PUBLIC_KEY_LENGTH) {
387
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidEphemeralPublicKeyLength);
416
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidEphemeralPublicKeyLength);
417
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this._encryptionType] });
418
+ throw error;
388
419
  }
389
420
  if (details.iv.length !== ecies_lib_1.ECIES.IV_SIZE) {
390
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidIVLength);
421
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidIVLength);
422
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this._encryptionType] });
423
+ throw error;
391
424
  }
392
425
  if (details.authTag.length !== ecies_lib_1.ECIES.AUTH_TAG_SIZE) {
393
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidAuthTagLength);
426
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidAuthTagLength);
427
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this._encryptionType] });
428
+ throw error;
394
429
  }
395
430
  }
396
431
  else if (this._encryptionType === blockEncryptionType_1.BlockEncryptionType.MultiRecipient) {
397
432
  const details = this.encryptionDetails;
398
433
  if (details.recipientCount < 2) {
399
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientCount);
434
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientCount);
435
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this._encryptionType], recipientCount: details.recipientCount });
436
+ throw error;
400
437
  }
401
438
  if (details.recipientIds.length != details.recipientCount) {
402
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientIds);
439
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientIds);
440
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this._encryptionType] });
441
+ throw error;
403
442
  }
404
443
  if (details.recipientKeys.length != details.recipientCount) {
405
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientKeys);
444
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidRecipientKeys);
445
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptionType: blockEncryptionType_1.BlockEncryptionType[this._encryptionType] });
446
+ throw error;
406
447
  }
407
448
  }
408
449
  // Validate data length
409
450
  if (this.data.length !== this.blockSize) {
410
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataBufferIsTruncated);
451
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataBufferIsTruncated);
452
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, actualLength: this.data.length });
453
+ throw error;
411
454
  }
412
455
  // Validate actual data length
413
456
  if (this.lengthBeforeEncryption >
@@ -417,11 +460,15 @@ class EncryptedBlock extends ephemeral_1.EphemeralBlock {
417
460
  encryptionType: this.encryptionType,
418
461
  recipientCount: this.recipients.length,
419
462
  }).availableCapacity) {
420
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthExceedsCapacity);
463
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthExceedsCapacity);
464
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, lengthBeforeEncryption: this.lengthBeforeEncryption });
465
+ throw error;
421
466
  }
422
467
  // Validate encrypted length
423
468
  if (this.encryptedLength > this.blockSize) {
424
- throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthExceedsCapacity);
469
+ const error = new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthExceedsCapacity);
470
+ (0, blockLogger_1.logValidationFailure)(this.idChecksum.toHex(), blockType_1.BlockType[this.blockType], error, { blockSize: this.blockSize, encryptedLength: this.encryptedLength });
471
+ throw error;
425
472
  }
426
473
  }
427
474
  /**