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