@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.
- package/brightchain-lib/BLOCK_COVERAGE_AUDIT.md +169 -0
- package/package.json +2 -2
- package/src/browser.d.ts +1 -4
- package/src/browser.d.ts.map +1 -1
- package/src/browser.js +6 -9
- package/src/browser.js.map +1 -1
- package/src/lib/blockMetadata.d.ts +10 -9
- package/src/lib/blockMetadata.d.ts.map +1 -1
- package/src/lib/blockMetadata.js +20 -36
- package/src/lib/blockMetadata.js.map +1 -1
- package/src/lib/blocks/base.d.ts +23 -0
- package/src/lib/blocks/base.d.ts.map +1 -1
- package/src/lib/blocks/base.js +33 -15
- package/src/lib/blocks/base.js.map +1 -1
- package/src/lib/blocks/cbl.d.ts +34 -1
- package/src/lib/blocks/cbl.d.ts.map +1 -1
- package/src/lib/blocks/cbl.js +33 -0
- package/src/lib/blocks/cbl.js.map +1 -1
- package/src/lib/blocks/cblBase.d.ts +45 -1
- package/src/lib/blocks/cblBase.d.ts.map +1 -1
- package/src/lib/blocks/cblBase.js +89 -44
- package/src/lib/blocks/cblBase.js.map +1 -1
- package/src/lib/blocks/encrypted.d.ts.map +1 -1
- package/src/lib/blocks/encrypted.js +68 -21
- package/src/lib/blocks/encrypted.js.map +1 -1
- package/src/lib/blocks/ephemeral.d.ts.map +1 -1
- package/src/lib/blocks/ephemeral.js +17 -10
- package/src/lib/blocks/ephemeral.js.map +1 -1
- package/src/lib/blocks/rawData.d.ts.map +1 -1
- package/src/lib/blocks/rawData.js +5 -1
- package/src/lib/blocks/rawData.js.map +1 -1
- package/src/lib/constants.d.ts +37 -0
- package/src/lib/constants.d.ts.map +1 -1
- package/src/lib/constants.js +40 -1
- package/src/lib/constants.js.map +1 -1
- package/src/lib/documents/member/memberDocument.d.ts +4 -3
- package/src/lib/documents/member/memberDocument.d.ts.map +1 -1
- package/src/lib/documents/member/memberDocument.js +9 -8
- package/src/lib/documents/member/memberDocument.js.map +1 -1
- package/src/lib/documents/member/memberHydration.d.ts.map +1 -1
- package/src/lib/documents/member/memberHydration.js +11 -13
- package/src/lib/documents/member/memberHydration.js.map +1 -1
- package/src/lib/documents/member/memberOperational.d.ts.map +1 -1
- package/src/lib/documents/member/memberOperational.js +2 -2
- package/src/lib/documents/member/memberOperational.js.map +1 -1
- package/src/lib/documents/network/networkDocument.d.ts.map +1 -1
- package/src/lib/documents/network/networkDocument.js +4 -3
- package/src/lib/documents/network/networkDocument.js.map +1 -1
- package/src/lib/encryptedBlockMetadata.d.ts +11 -4
- package/src/lib/encryptedBlockMetadata.d.ts.map +1 -1
- package/src/lib/encryptedBlockMetadata.js +29 -22
- package/src/lib/encryptedBlockMetadata.js.map +1 -1
- package/src/lib/enumerations/blockSize.d.ts +2 -2
- package/src/lib/enumerations/blockSize.d.ts.map +1 -1
- package/src/lib/enumerations/blockSize.js +15 -15
- package/src/lib/enumerations/blockSize.js.map +1 -1
- package/src/lib/enumerations/{stringNames.d.ts → brightChainStrings.d.ts} +4 -3
- package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -0
- package/src/lib/enumerations/brightChainStrings.js +437 -0
- package/src/lib/enumerations/brightChainStrings.js.map +1 -0
- package/src/lib/enumerations/cblErrorType.d.ts +1 -0
- package/src/lib/enumerations/cblErrorType.d.ts.map +1 -1
- package/src/lib/enumerations/cblErrorType.js +1 -0
- package/src/lib/enumerations/cblErrorType.js.map +1 -1
- package/src/lib/enumerations/index.d.ts +1 -1
- package/src/lib/enumerations/index.d.ts.map +1 -1
- package/src/lib/enumerations/index.js +1 -1
- package/src/lib/enumerations/index.js.map +1 -1
- package/src/lib/enumerations/votingDerivationErrorType.d.ts +2 -2
- package/src/lib/enumerations/votingDerivationErrorType.d.ts.map +1 -1
- package/src/lib/enumerations/votingDerivationErrorType.js +11 -11
- package/src/lib/enumerations/votingDerivationErrorType.js.map +1 -1
- package/src/lib/ephemeralBlockMetadata.d.ts +10 -7
- package/src/lib/ephemeralBlockMetadata.d.ts.map +1 -1
- package/src/lib/ephemeralBlockMetadata.js +24 -17
- package/src/lib/ephemeralBlockMetadata.js.map +1 -1
- package/src/lib/errors/block/blockAccess.d.ts +2 -2
- package/src/lib/errors/block/blockAccess.d.ts.map +1 -1
- package/src/lib/errors/block/blockAccess.js +8 -8
- package/src/lib/errors/block/blockAccess.js.map +1 -1
- package/src/lib/errors/block/blockCapacity.d.ts +2 -2
- package/src/lib/errors/block/blockCapacity.d.ts.map +1 -1
- package/src/lib/errors/block/blockCapacity.js +8 -8
- package/src/lib/errors/block/blockCapacity.js.map +1 -1
- package/src/lib/errors/block/blockError.d.ts +2 -2
- package/src/lib/errors/block/blockError.d.ts.map +1 -1
- package/src/lib/errors/block/blockError.js +16 -16
- package/src/lib/errors/block/blockError.js.map +1 -1
- package/src/lib/errors/block/blockMetadata.d.ts +2 -2
- package/src/lib/errors/block/blockMetadata.d.ts.map +1 -1
- package/src/lib/errors/block/blockMetadata.js +8 -8
- package/src/lib/errors/block/blockMetadata.js.map +1 -1
- package/src/lib/errors/block/blockValidation.d.ts +2 -2
- package/src/lib/errors/block/blockValidation.d.ts.map +1 -1
- package/src/lib/errors/block/blockValidation.js +36 -36
- package/src/lib/errors/block/blockValidation.js.map +1 -1
- package/src/lib/errors/block/cannotDecrypt.js +2 -2
- package/src/lib/errors/block/cannotDecrypt.js.map +1 -1
- package/src/lib/errors/block/cannotEncrypt.js +2 -2
- package/src/lib/errors/block/cannotEncrypt.js.map +1 -1
- package/src/lib/errors/blockServiceError.d.ts +2 -2
- package/src/lib/errors/blockServiceError.d.ts.map +1 -1
- package/src/lib/errors/blockServiceError.js +15 -15
- package/src/lib/errors/blockServiceError.js.map +1 -1
- package/src/lib/errors/bufferError.js +2 -2
- package/src/lib/errors/bufferError.js.map +1 -1
- package/src/lib/errors/cblError.d.ts +2 -2
- package/src/lib/errors/cblError.d.ts.map +1 -1
- package/src/lib/errors/cblError.js +37 -36
- package/src/lib/errors/cblError.js.map +1 -1
- package/src/lib/errors/checksumMismatch.js +2 -2
- package/src/lib/errors/checksumMismatch.js.map +1 -1
- package/src/lib/errors/disposed.js +2 -2
- package/src/lib/errors/disposed.js.map +1 -1
- package/src/lib/errors/document.d.ts +2 -2
- package/src/lib/errors/document.d.ts.map +1 -1
- package/src/lib/errors/document.js +5 -5
- package/src/lib/errors/document.js.map +1 -1
- package/src/lib/errors/eciesError.d.ts +2 -2
- package/src/lib/errors/eciesError.d.ts.map +1 -1
- package/src/lib/errors/eciesError.js +20 -20
- package/src/lib/errors/eciesError.js.map +1 -1
- package/src/lib/errors/extendedCblError.d.ts +2 -2
- package/src/lib/errors/extendedCblError.d.ts.map +1 -1
- package/src/lib/errors/extendedCblError.js +25 -25
- package/src/lib/errors/extendedCblError.js.map +1 -1
- package/src/lib/errors/failedToHydrate.js +2 -2
- package/src/lib/errors/failedToHydrate.js.map +1 -1
- package/src/lib/errors/failedToSerialize.js +2 -2
- package/src/lib/errors/failedToSerialize.js.map +1 -1
- package/src/lib/errors/fecError.d.ts +2 -2
- package/src/lib/errors/fecError.d.ts.map +1 -1
- package/src/lib/errors/fecError.js +19 -19
- package/src/lib/errors/fecError.js.map +1 -1
- package/src/lib/errors/handleTupleError.d.ts +2 -2
- package/src/lib/errors/handleTupleError.d.ts.map +1 -1
- package/src/lib/errors/handleTupleError.js +5 -5
- package/src/lib/errors/handleTupleError.js.map +1 -1
- package/src/lib/errors/index.d.ts +0 -6
- package/src/lib/errors/index.d.ts.map +1 -1
- package/src/lib/errors/index.js +0 -9
- package/src/lib/errors/index.js.map +1 -1
- package/src/lib/errors/invalidBlockSize.js +2 -2
- package/src/lib/errors/invalidBlockSize.js.map +1 -1
- package/src/lib/errors/invalidBlockSizeLength.js +2 -2
- package/src/lib/errors/invalidBlockSizeLength.js.map +1 -1
- package/src/lib/errors/invalidCredentials.js +2 -2
- package/src/lib/errors/invalidCredentials.js.map +1 -1
- package/src/lib/errors/invalidIDFormat.js +2 -2
- package/src/lib/errors/invalidIDFormat.js.map +1 -1
- package/src/lib/errors/invalidSessionID.js +2 -2
- package/src/lib/errors/invalidSessionID.js.map +1 -1
- package/src/lib/errors/invalidTupleCount.js +2 -2
- package/src/lib/errors/invalidTupleCount.js.map +1 -1
- package/src/lib/errors/isolatedKeyError.d.ts +2 -2
- package/src/lib/errors/isolatedKeyError.d.ts.map +1 -1
- package/src/lib/errors/isolatedKeyError.js +7 -7
- package/src/lib/errors/isolatedKeyError.js.map +1 -1
- package/src/lib/errors/memberError.d.ts +2 -2
- package/src/lib/errors/memberError.d.ts.map +1 -1
- package/src/lib/errors/memberError.js +27 -27
- package/src/lib/errors/memberError.js.map +1 -1
- package/src/lib/errors/memoryTupleError.d.ts +2 -2
- package/src/lib/errors/memoryTupleError.d.ts.map +1 -1
- package/src/lib/errors/memoryTupleError.js +7 -7
- package/src/lib/errors/memoryTupleError.js.map +1 -1
- package/src/lib/errors/metadataMismatch.js +2 -2
- package/src/lib/errors/metadataMismatch.js.map +1 -1
- package/src/lib/errors/multiEncryptedError.d.ts +2 -2
- package/src/lib/errors/multiEncryptedError.d.ts.map +1 -1
- package/src/lib/errors/multiEncryptedError.js +11 -11
- package/src/lib/errors/multiEncryptedError.js.map +1 -1
- package/src/lib/errors/notImplemented.js +2 -2
- package/src/lib/errors/notImplemented.js.map +1 -1
- package/src/lib/errors/quorumError.d.ts +2 -2
- package/src/lib/errors/quorumError.d.ts.map +1 -1
- package/src/lib/errors/quorumError.js +8 -8
- package/src/lib/errors/quorumError.js.map +1 -1
- package/src/lib/errors/sealingError.d.ts +2 -2
- package/src/lib/errors/sealingError.d.ts.map +1 -1
- package/src/lib/errors/sealingError.js +9 -9
- package/src/lib/errors/sealingError.js.map +1 -1
- package/src/lib/errors/secureStorage.d.ts +2 -2
- package/src/lib/errors/secureStorage.d.ts.map +1 -1
- package/src/lib/errors/secureStorage.js +4 -4
- package/src/lib/errors/secureStorage.js.map +1 -1
- package/src/lib/errors/storeError.d.ts +2 -2
- package/src/lib/errors/storeError.d.ts.map +1 -1
- package/src/lib/errors/storeError.js +20 -20
- package/src/lib/errors/storeError.js.map +1 -1
- package/src/lib/errors/streamError.d.ts +2 -2
- package/src/lib/errors/streamError.d.ts.map +1 -1
- package/src/lib/errors/streamError.js +8 -8
- package/src/lib/errors/streamError.js.map +1 -1
- package/src/lib/errors/symmetricError.d.ts +2 -2
- package/src/lib/errors/symmetricError.d.ts.map +1 -1
- package/src/lib/errors/symmetricError.js +3 -3
- package/src/lib/errors/symmetricError.js.map +1 -1
- package/src/lib/errors/systemKeyringError.d.ts +2 -2
- package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
- package/src/lib/errors/systemKeyringError.js +4 -4
- package/src/lib/errors/systemKeyringError.js.map +1 -1
- package/src/lib/errors/tupleError.d.ts +2 -2
- package/src/lib/errors/tupleError.d.ts.map +1 -1
- package/src/lib/errors/tupleError.js +13 -13
- package/src/lib/errors/tupleError.js.map +1 -1
- package/src/lib/errors/typedError.d.ts +2 -2
- package/src/lib/errors/typedError.d.ts.map +1 -1
- package/src/lib/errors/typedWithReasonError.d.ts +3 -3
- package/src/lib/errors/typedWithReasonError.d.ts.map +1 -1
- package/src/lib/errors/typedWithReasonError.js.map +1 -1
- package/src/lib/errors/userNotFound.js +2 -2
- package/src/lib/errors/userNotFound.js.map +1 -1
- package/src/lib/errors/whitenedError.d.ts +2 -2
- package/src/lib/errors/whitenedError.d.ts.map +1 -1
- package/src/lib/errors/whitenedError.js +5 -5
- package/src/lib/errors/whitenedError.js.map +1 -1
- package/src/lib/i18n/index.d.ts +2 -2
- package/src/lib/i18n/index.d.ts.map +1 -1
- package/src/lib/i18n/index.js +2 -2
- package/src/lib/i18n/index.js.map +1 -1
- package/src/lib/index.d.ts +4 -0
- package/src/lib/index.d.ts.map +1 -1
- package/src/lib/index.js +4 -0
- package/src/lib/index.js.map +1 -1
- package/src/lib/init.d.ts +10 -0
- package/src/lib/init.d.ts.map +1 -1
- package/src/lib/init.js +20 -0
- package/src/lib/init.js.map +1 -1
- package/src/lib/interfaces/blocks/headers/index.d.ts +1 -0
- package/src/lib/interfaces/blocks/headers/index.d.ts.map +1 -1
- package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts +63 -0
- package/src/lib/interfaces/blocks/headers/superCblHeader.d.ts.map +1 -0
- package/src/lib/interfaces/{storage/superCbl.js → blocks/headers/superCblHeader.js} +1 -1
- package/src/lib/interfaces/blocks/headers/superCblHeader.js.map +1 -0
- package/src/lib/interfaces/constants.d.ts +29 -0
- package/src/lib/interfaces/constants.d.ts.map +1 -1
- package/src/lib/interfaces/serviceProvider.interface.d.ts +2 -1
- package/src/lib/interfaces/serviceProvider.interface.d.ts.map +1 -1
- package/src/lib/interfaces/services/cblServices.d.ts +148 -0
- package/src/lib/interfaces/services/cblServices.d.ts.map +1 -0
- package/src/lib/interfaces/services/cblServices.js +11 -0
- package/src/lib/interfaces/services/cblServices.js.map +1 -0
- package/src/lib/interfaces/services/index.d.ts +1 -0
- package/src/lib/interfaces/services/index.d.ts.map +1 -1
- package/src/lib/interfaces/storage/index.d.ts +0 -1
- package/src/lib/interfaces/storage/index.d.ts.map +1 -1
- package/src/lib/logging/blockLogger.d.ts +212 -0
- package/src/lib/logging/blockLogger.d.ts.map +1 -0
- package/src/lib/logging/blockLogger.js +327 -0
- package/src/lib/logging/blockLogger.js.map +1 -0
- package/src/lib/logging/index.d.ts +24 -0
- package/src/lib/logging/index.d.ts.map +1 -0
- package/src/lib/logging/index.js +27 -0
- package/src/lib/logging/index.js.map +1 -0
- package/src/lib/quorum.d.ts.map +1 -1
- package/src/lib/quorum.js +5 -4
- package/src/lib/quorum.js.map +1 -1
- package/src/lib/quorumDataRecord.d.ts.map +1 -1
- package/src/lib/quorumDataRecord.js +3 -2
- package/src/lib/quorumDataRecord.js.map +1 -1
- package/src/lib/schemas/network/networkDocumentSchema.d.ts.map +1 -1
- package/src/lib/schemas/network/networkDocumentSchema.js +9 -8
- package/src/lib/schemas/network/networkDocumentSchema.js.map +1 -1
- package/src/lib/schemas/quorumDocument.d.ts.map +1 -1
- package/src/lib/schemas/quorumDocument.js +6 -4
- package/src/lib/schemas/quorumDocument.js.map +1 -1
- package/src/lib/services/blockCapacity.service.d.ts.map +1 -1
- package/src/lib/services/blockCapacity.service.js +14 -5
- package/src/lib/services/blockCapacity.service.js.map +1 -1
- package/src/lib/services/blockFormatService.d.ts +56 -0
- package/src/lib/services/blockFormatService.d.ts.map +1 -0
- package/src/lib/services/blockFormatService.js +282 -0
- package/src/lib/services/blockFormatService.js.map +1 -0
- package/src/lib/services/blockService.d.ts +6 -0
- package/src/lib/services/blockService.d.ts.map +1 -1
- package/src/lib/services/blockService.js +120 -18
- package/src/lib/services/blockService.js.map +1 -1
- package/src/lib/services/cblService.d.ts +159 -1
- package/src/lib/services/cblService.d.ts.map +1 -1
- package/src/lib/services/cblService.js +498 -17
- package/src/lib/services/cblService.js.map +1 -1
- package/src/lib/services/index.d.ts +0 -2
- package/src/lib/services/index.d.ts.map +1 -1
- package/src/lib/services/index.js +0 -2
- package/src/lib/services/index.js.map +1 -1
- package/src/lib/services/member/memberCblService.d.ts.map +1 -1
- package/src/lib/services/member/memberCblService.js +11 -8
- package/src/lib/services/member/memberCblService.js.map +1 -1
- package/src/lib/services/memberStore.d.ts.map +1 -1
- package/src/lib/services/memberStore.js +20 -28
- package/src/lib/services/memberStore.js.map +1 -1
- package/src/lib/services/sealing.service.d.ts.map +1 -1
- package/src/lib/services/sealing.service.js +2 -1
- package/src/lib/services/sealing.service.js.map +1 -1
- package/src/lib/services/service.provider.d.ts.map +1 -1
- package/src/lib/services/service.provider.js +3 -11
- package/src/lib/services/service.provider.js.map +1 -1
- package/src/lib/strings/englishUs.js +392 -392
- package/src/lib/strings/englishUs.js.map +1 -1
- package/src/lib/test/service.initializer.helper.d.ts +2 -1
- package/src/lib/test/service.initializer.helper.d.ts.map +1 -1
- package/src/lib/test/service.initializer.helper.js +11 -15
- package/src/lib/test/service.initializer.helper.js.map +1 -1
- package/src/lib/utils/constantTime.d.ts +112 -0
- package/src/lib/utils/constantTime.d.ts.map +1 -0
- package/src/lib/utils/constantTime.js +180 -0
- package/src/lib/utils/constantTime.js.map +1 -0
- package/src/lib/utils/constantTimeXor.d.ts +76 -0
- package/src/lib/utils/constantTimeXor.d.ts.map +1 -0
- package/src/lib/utils/constantTimeXor.js +122 -0
- package/src/lib/utils/constantTimeXor.js.map +1 -0
- package/src/lib/utils/dateUtils.d.ts +67 -0
- package/src/lib/utils/dateUtils.d.ts.map +1 -0
- package/src/lib/utils/dateUtils.js +136 -0
- package/src/lib/utils/dateUtils.js.map +1 -0
- package/src/lib/utils/index.d.ts +57 -0
- package/src/lib/utils/index.d.ts.map +1 -1
- package/src/lib/utils/index.js +69 -0
- package/src/lib/utils/index.js.map +1 -1
- package/src/lib/utils/typeGuards.d.ts +102 -0
- package/src/lib/utils/typeGuards.d.ts.map +1 -0
- package/src/lib/utils/typeGuards.js +244 -0
- package/src/lib/utils/typeGuards.js.map +1 -0
- package/src/lib/enumerations/stringNames.d.ts.map +0 -1
- package/src/lib/enumerations/stringNames.js +0 -436
- package/src/lib/enumerations/stringNames.js.map +0 -1
- package/src/lib/errors/superCbl.d.ts +0 -24
- package/src/lib/errors/superCbl.d.ts.map +0 -1
- package/src/lib/errors/superCbl.js +0 -43
- package/src/lib/errors/superCbl.js.map +0 -1
- package/src/lib/interfaces/storage/superCbl.d.ts +0 -102
- package/src/lib/interfaces/storage/superCbl.d.ts.map +0 -1
- package/src/lib/interfaces/storage/superCbl.js.map +0 -1
- package/src/lib/services/jsonCblCapacity.service.d.ts +0 -80
- package/src/lib/services/jsonCblCapacity.service.d.ts.map +0 -1
- package/src/lib/services/jsonCblCapacity.service.js +0 -147
- package/src/lib/services/jsonCblCapacity.service.js.map +0 -1
- package/src/lib/services/superCbl.service.d.ts +0 -68
- package/src/lib/services/superCbl.service.d.ts.map +0 -1
- package/src/lib/services/superCbl.service.js +0 -213
- package/src/lib/services/superCbl.service.js.map +0 -1
package/src/lib/blocks/cbl.js
CHANGED
|
@@ -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;
|
|
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,
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
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 =
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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(
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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":";;;AAAA,
|
|
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":"AACA,OAAO,EAIL,2BAA2B,EAC3B,4BAA4B,EAC5B,MAAM,EACN,sBAAsB,EAEtB,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EACL,SAAS,EAGV,MAAM,2BAA2B,CAAC;AAQnC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
/**
|