@brightchain/brightchain-lib 0.14.0 → 0.16.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/BROWSER_COMPAT.md +54 -0
- package/package.json +16 -4
- package/src/lib/blocks/cblBase.d.ts +16 -1
- package/src/lib/blocks/cblBase.d.ts.map +1 -1
- package/src/lib/blocks/cblBase.js +33 -4
- package/src/lib/blocks/cblBase.js.map +1 -1
- package/src/lib/blocks/extendedCbl.d.ts.map +1 -1
- package/src/lib/blocks/extendedCbl.js +2 -1
- package/src/lib/blocks/extendedCbl.js.map +1 -1
- package/src/lib/blocks/handle.d.ts +5 -0
- package/src/lib/blocks/handle.d.ts.map +1 -1
- package/src/lib/blocks/handle.js.map +1 -1
- package/src/lib/blocks/handleTuple.d.ts +9 -1
- package/src/lib/blocks/handleTuple.d.ts.map +1 -1
- package/src/lib/blocks/handleTuple.js +23 -1
- package/src/lib/blocks/handleTuple.js.map +1 -1
- package/src/lib/blocks/index.d.ts +1 -0
- package/src/lib/blocks/index.d.ts.map +1 -1
- package/src/lib/blocks/index.js +1 -0
- package/src/lib/blocks/index.js.map +1 -1
- package/src/lib/blocks/memoryTuple.d.ts +9 -2
- package/src/lib/blocks/memoryTuple.d.ts.map +1 -1
- package/src/lib/blocks/memoryTuple.js +12 -3
- package/src/lib/blocks/memoryTuple.js.map +1 -1
- package/src/lib/blocks/vcbl.d.ts +27 -0
- package/src/lib/blocks/vcbl.d.ts.map +1 -0
- package/src/lib/blocks/vcbl.js +107 -0
- package/src/lib/blocks/vcbl.js.map +1 -0
- package/src/lib/constants.d.ts +28 -1
- package/src/lib/constants.d.ts.map +1 -1
- package/src/lib/constants.js +28 -1
- package/src/lib/constants.js.map +1 -1
- package/src/lib/crypto/index.d.ts +12 -0
- package/src/lib/crypto/index.d.ts.map +1 -0
- package/src/lib/crypto/index.js +23 -0
- package/src/lib/crypto/index.js.map +1 -0
- package/src/lib/crypto/platformCrypto.d.ts +132 -0
- package/src/lib/crypto/platformCrypto.d.ts.map +1 -0
- package/src/lib/crypto/platformCrypto.js +181 -0
- package/src/lib/crypto/platformCrypto.js.map +1 -0
- package/src/lib/enumeration-translations/blockType.d.ts.map +1 -1
- package/src/lib/enumeration-translations/blockType.js +16 -0
- package/src/lib/enumeration-translations/blockType.js.map +1 -1
- package/src/lib/enumerations/blockType.d.ts +12 -0
- package/src/lib/enumerations/blockType.d.ts.map +1 -1
- package/src/lib/enumerations/blockType.js +14 -0
- package/src/lib/enumerations/blockType.js.map +1 -1
- package/src/lib/enumerations/brightChainStrings.d.ts +4 -0
- package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
- package/src/lib/enumerations/brightChainStrings.js +4 -0
- package/src/lib/enumerations/brightChainStrings.js.map +1 -1
- package/src/lib/enumerations/cblErrorType.d.ts +2 -1
- 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/communication.d.ts +57 -0
- package/src/lib/enumerations/communication.d.ts.map +1 -0
- package/src/lib/enumerations/communication.js +89 -0
- package/src/lib/enumerations/communication.js.map +1 -0
- package/src/lib/enumerations/deviceType.d.ts +15 -0
- package/src/lib/enumerations/deviceType.d.ts.map +1 -0
- package/src/lib/enumerations/deviceType.js +19 -0
- package/src/lib/enumerations/deviceType.js.map +1 -0
- package/src/lib/enumerations/handleTupleErrorType.d.ts +2 -1
- package/src/lib/enumerations/handleTupleErrorType.d.ts.map +1 -1
- package/src/lib/enumerations/handleTupleErrorType.js +1 -0
- package/src/lib/enumerations/handleTupleErrorType.js.map +1 -1
- package/src/lib/enumerations/index.d.ts +6 -0
- package/src/lib/enumerations/index.d.ts.map +1 -1
- package/src/lib/enumerations/index.js +11 -0
- package/src/lib/enumerations/index.js.map +1 -1
- package/src/lib/enumerations/paperKeyPurpose.d.ts +15 -0
- package/src/lib/enumerations/paperKeyPurpose.d.ts.map +1 -0
- package/src/lib/enumerations/paperKeyPurpose.js +19 -0
- package/src/lib/enumerations/paperKeyPurpose.js.map +1 -0
- package/src/lib/enumerations/proofPlatform.d.ts +24 -0
- package/src/lib/enumerations/proofPlatform.d.ts.map +1 -0
- package/src/lib/enumerations/proofPlatform.js +28 -0
- package/src/lib/enumerations/proofPlatform.js.map +1 -0
- package/src/lib/enumerations/readConcern.d.ts +22 -0
- package/src/lib/enumerations/readConcern.d.ts.map +1 -0
- package/src/lib/enumerations/readConcern.js +26 -0
- package/src/lib/enumerations/readConcern.js.map +1 -0
- package/src/lib/enumerations/tupleErrorType.d.ts +2 -1
- package/src/lib/enumerations/tupleErrorType.d.ts.map +1 -1
- package/src/lib/enumerations/tupleErrorType.js +1 -0
- package/src/lib/enumerations/tupleErrorType.js.map +1 -1
- package/src/lib/enumerations/verificationStatus.d.ts +17 -0
- package/src/lib/enumerations/verificationStatus.d.ts.map +1 -0
- package/src/lib/enumerations/verificationStatus.js +21 -0
- package/src/lib/enumerations/verificationStatus.js.map +1 -0
- package/src/lib/errors/blockFetchError.d.ts +51 -0
- package/src/lib/errors/blockFetchError.d.ts.map +1 -0
- package/src/lib/errors/blockFetchError.js +63 -0
- package/src/lib/errors/blockFetchError.js.map +1 -0
- package/src/lib/errors/cblError.d.ts.map +1 -1
- package/src/lib/errors/cblError.js +1 -0
- package/src/lib/errors/cblError.js.map +1 -1
- package/src/lib/errors/handleTupleError.d.ts +10 -1
- package/src/lib/errors/handleTupleError.d.ts.map +1 -1
- package/src/lib/errors/handleTupleError.js +10 -1
- package/src/lib/errors/handleTupleError.js.map +1 -1
- package/src/lib/errors/index.d.ts +16 -0
- package/src/lib/errors/index.d.ts.map +1 -1
- package/src/lib/errors/index.js +22 -0
- package/src/lib/errors/index.js.map +1 -1
- package/src/lib/errors/poolDeletionError.d.ts +10 -0
- package/src/lib/errors/poolDeletionError.d.ts.map +1 -0
- package/src/lib/errors/poolDeletionError.js +16 -0
- package/src/lib/errors/poolDeletionError.js.map +1 -0
- package/src/lib/errors/poolDeletionTombstoneError.d.ts +12 -0
- package/src/lib/errors/poolDeletionTombstoneError.d.ts.map +1 -0
- package/src/lib/errors/poolDeletionTombstoneError.js +18 -0
- package/src/lib/errors/poolDeletionTombstoneError.js.map +1 -0
- package/src/lib/errors/tupleError.d.ts.map +1 -1
- package/src/lib/errors/tupleError.js +1 -0
- package/src/lib/errors/tupleError.js.map +1 -1
- package/src/lib/i18n/i18n-setup.d.ts +22 -18
- package/src/lib/i18n/i18n-setup.d.ts.map +1 -1
- package/src/lib/i18n/i18n-setup.js +58 -138
- package/src/lib/i18n/i18n-setup.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/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/interfaces/auth/index.d.ts +4 -0
- package/src/lib/interfaces/auth/index.d.ts.map +1 -0
- package/src/lib/interfaces/auth/index.js +8 -0
- package/src/lib/interfaces/auth/index.js.map +1 -0
- package/src/lib/interfaces/auth/nodeAuthenticator.d.ts +19 -0
- package/src/lib/interfaces/auth/nodeAuthenticator.d.ts.map +1 -0
- package/src/lib/interfaces/auth/nodeAuthenticator.js +3 -0
- package/src/lib/interfaces/auth/nodeAuthenticator.js.map +1 -0
- package/src/lib/interfaces/auth/poolAcl.d.ts +65 -0
- package/src/lib/interfaces/auth/poolAcl.d.ts.map +1 -0
- package/src/lib/interfaces/auth/poolAcl.js +52 -0
- package/src/lib/interfaces/auth/poolAcl.js.map +1 -0
- package/src/lib/interfaces/availability/availabilityService.d.ts +5 -3
- package/src/lib/interfaces/availability/availabilityService.d.ts.map +1 -1
- package/src/lib/interfaces/availability/availabilityService.js.map +1 -1
- package/src/lib/interfaces/availability/blockRegistry.d.ts +52 -3
- package/src/lib/interfaces/availability/blockRegistry.d.ts.map +1 -1
- package/src/lib/interfaces/availability/blockRegistry.js +1 -1
- package/src/lib/interfaces/availability/discoveryProtocol.d.ts +81 -3
- package/src/lib/interfaces/availability/discoveryProtocol.d.ts.map +1 -1
- package/src/lib/interfaces/availability/discoveryProtocol.js.map +1 -1
- package/src/lib/interfaces/availability/gossipService.d.ts +110 -6
- package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
- package/src/lib/interfaces/availability/gossipService.js +94 -1
- package/src/lib/interfaces/availability/gossipService.js.map +1 -1
- package/src/lib/interfaces/availability/index.d.ts +1 -0
- package/src/lib/interfaces/availability/index.d.ts.map +1 -1
- package/src/lib/interfaces/availability/index.js +1 -0
- package/src/lib/interfaces/availability/index.js.map +1 -1
- package/src/lib/interfaces/availability/locationRecord.d.ts +6 -0
- package/src/lib/interfaces/availability/locationRecord.d.ts.map +1 -1
- package/src/lib/interfaces/availability/locationRecord.js +12 -0
- package/src/lib/interfaces/availability/locationRecord.js.map +1 -1
- package/src/lib/interfaces/availability/poolDeletionTombstone.d.ts +40 -0
- package/src/lib/interfaces/availability/poolDeletionTombstone.d.ts.map +1 -0
- package/src/lib/interfaces/availability/poolDeletionTombstone.js +19 -0
- package/src/lib/interfaces/availability/poolDeletionTombstone.js.map +1 -0
- package/src/lib/interfaces/availability/reconciliationService.d.ts +52 -0
- package/src/lib/interfaces/availability/reconciliationService.d.ts.map +1 -1
- package/src/lib/interfaces/availability/reconciliationService.js.map +1 -1
- package/src/lib/interfaces/blockCapacity.d.ts +9 -0
- package/src/lib/interfaces/blockCapacity.d.ts.map +1 -1
- package/src/lib/interfaces/blockEncryption.d.ts +4 -2
- package/src/lib/interfaces/blockEncryption.d.ts.map +1 -1
- package/src/lib/interfaces/blockFetch/blockFetchTransport.d.ts +26 -0
- package/src/lib/interfaces/blockFetch/blockFetchTransport.d.ts.map +1 -0
- package/src/lib/interfaces/blockFetch/blockFetchTransport.js +12 -0
- package/src/lib/interfaces/blockFetch/blockFetchTransport.js.map +1 -0
- package/src/lib/interfaces/blockFetch/blockFetcher.d.ts +71 -0
- package/src/lib/interfaces/blockFetch/blockFetcher.d.ts.map +1 -0
- package/src/lib/interfaces/blockFetch/blockFetcher.js +22 -0
- package/src/lib/interfaces/blockFetch/blockFetcher.js.map +1 -0
- package/src/lib/interfaces/blockFetch/enrichedQueryResult.d.ts +43 -0
- package/src/lib/interfaces/blockFetch/enrichedQueryResult.d.ts.map +1 -0
- package/src/lib/interfaces/blockFetch/enrichedQueryResult.js +13 -0
- package/src/lib/interfaces/blockFetch/enrichedQueryResult.js.map +1 -0
- package/src/lib/interfaces/blockFetch/fetchQueue.d.ts +70 -0
- package/src/lib/interfaces/blockFetch/fetchQueue.d.ts.map +1 -0
- package/src/lib/interfaces/blockFetch/fetchQueue.js +18 -0
- package/src/lib/interfaces/blockFetch/fetchQueue.js.map +1 -0
- package/src/lib/interfaces/blockFetch/index.d.ts +10 -0
- package/src/lib/interfaces/blockFetch/index.d.ts.map +1 -0
- package/src/lib/interfaces/blockFetch/index.js +13 -0
- package/src/lib/interfaces/blockFetch/index.js.map +1 -0
- package/src/lib/interfaces/blocks/index.d.ts +1 -0
- package/src/lib/interfaces/blocks/index.d.ts.map +1 -1
- package/src/lib/interfaces/blocks/vcbl.d.ts +16 -0
- package/src/lib/interfaces/blocks/vcbl.d.ts.map +1 -0
- package/src/lib/interfaces/blocks/vcbl.js +3 -0
- package/src/lib/interfaces/blocks/vcbl.js.map +1 -0
- package/src/lib/interfaces/brightpass/auditLog.d.ts +25 -0
- package/src/lib/interfaces/brightpass/auditLog.d.ts.map +1 -0
- package/src/lib/interfaces/brightpass/auditLog.js +21 -0
- package/src/lib/interfaces/brightpass/auditLog.js.map +1 -0
- package/src/lib/interfaces/brightpass/emergencyAccess.d.ts +11 -0
- package/src/lib/interfaces/brightpass/emergencyAccess.d.ts.map +1 -0
- package/src/lib/interfaces/brightpass/emergencyAccess.js +3 -0
- package/src/lib/interfaces/brightpass/emergencyAccess.js.map +1 -0
- package/src/lib/interfaces/brightpass/entryPropertyRecord.d.ts +11 -0
- package/src/lib/interfaces/brightpass/entryPropertyRecord.d.ts.map +1 -0
- package/src/lib/interfaces/brightpass/entryPropertyRecord.js +3 -0
- package/src/lib/interfaces/brightpass/entryPropertyRecord.js.map +1 -0
- package/src/lib/interfaces/brightpass/importTypes.d.ts +10 -0
- package/src/lib/interfaces/brightpass/importTypes.d.ts.map +1 -0
- package/src/lib/interfaces/brightpass/importTypes.js +3 -0
- package/src/lib/interfaces/brightpass/importTypes.js.map +1 -0
- package/src/lib/interfaces/brightpass/index.d.ts +7 -0
- package/src/lib/interfaces/brightpass/index.d.ts.map +1 -0
- package/src/lib/interfaces/brightpass/index.js +10 -0
- package/src/lib/interfaces/brightpass/index.js.map +1 -0
- package/src/lib/interfaces/brightpass/vaultEntry.d.ts +48 -0
- package/src/lib/interfaces/brightpass/vaultEntry.d.ts.map +1 -0
- package/src/lib/interfaces/brightpass/vaultEntry.js +3 -0
- package/src/lib/interfaces/brightpass/vaultEntry.js.map +1 -0
- package/src/lib/interfaces/brightpass/vaultMetadata.d.ts +34 -0
- package/src/lib/interfaces/brightpass/vaultMetadata.d.ts.map +1 -0
- package/src/lib/interfaces/brightpass/vaultMetadata.js +3 -0
- package/src/lib/interfaces/brightpass/vaultMetadata.js.map +1 -0
- package/src/lib/interfaces/clusterKeys.d.ts +4 -2
- package/src/lib/interfaces/clusterKeys.d.ts.map +1 -1
- package/src/lib/interfaces/communication.d.ts +173 -0
- package/src/lib/interfaces/communication.d.ts.map +1 -0
- package/src/lib/interfaces/communication.js +17 -0
- package/src/lib/interfaces/communication.js.map +1 -0
- package/src/lib/interfaces/communicationEvents.d.ts +168 -0
- package/src/lib/interfaces/communicationEvents.d.ts.map +1 -0
- package/src/lib/interfaces/communicationEvents.js +12 -0
- package/src/lib/interfaces/communicationEvents.js.map +1 -0
- package/src/lib/interfaces/constants.d.ts +23 -0
- package/src/lib/interfaces/constants.d.ts.map +1 -1
- package/src/lib/interfaces/crypto/ethereumWallet.d.ts +72 -0
- package/src/lib/interfaces/crypto/ethereumWallet.d.ts.map +1 -0
- package/src/lib/interfaces/crypto/ethereumWallet.js +12 -0
- package/src/lib/interfaces/crypto/ethereumWallet.js.map +1 -0
- package/src/lib/interfaces/crypto/gitSignature.d.ts +95 -0
- package/src/lib/interfaces/crypto/gitSignature.d.ts.map +1 -0
- package/src/lib/interfaces/crypto/gitSignature.js +12 -0
- package/src/lib/interfaces/crypto/gitSignature.js.map +1 -0
- package/src/lib/interfaces/crypto/index.d.ts +3 -0
- package/src/lib/interfaces/crypto/index.d.ts.map +1 -0
- package/src/lib/interfaces/crypto/index.js +3 -0
- package/src/lib/interfaces/crypto/index.js.map +1 -0
- package/src/lib/interfaces/dataKeyComponents.d.ts +7 -2
- package/src/lib/interfaces/dataKeyComponents.d.ts.map +1 -1
- package/src/lib/interfaces/encryptedBlockCreator.d.ts +4 -2
- package/src/lib/interfaces/encryptedBlockCreator.d.ts.map +1 -1
- package/src/lib/interfaces/events/communicationEventEmitter.d.ts +65 -0
- package/src/lib/interfaces/events/communicationEventEmitter.d.ts.map +1 -0
- package/src/lib/interfaces/events/communicationEventEmitter.js +60 -0
- package/src/lib/interfaces/events/communicationEventEmitter.js.map +1 -0
- package/src/lib/interfaces/events/index.d.ts +2 -0
- package/src/lib/interfaces/events/index.d.ts.map +1 -0
- package/src/lib/interfaces/events/index.js +5 -0
- package/src/lib/interfaces/events/index.js.map +1 -0
- package/src/lib/interfaces/failableResult.d.ts +8 -0
- package/src/lib/interfaces/failableResult.d.ts.map +1 -0
- package/src/lib/interfaces/failableResult.js +3 -0
- package/src/lib/interfaces/failableResult.js.map +1 -0
- package/src/lib/interfaces/i18nConstants.d.ts +27 -0
- package/src/lib/interfaces/i18nConstants.d.ts.map +1 -0
- package/src/lib/interfaces/i18nConstants.js +3 -0
- package/src/lib/interfaces/i18nConstants.js.map +1 -0
- package/src/lib/interfaces/identity/device.d.ts +59 -0
- package/src/lib/interfaces/identity/device.d.ts.map +1 -0
- package/src/lib/interfaces/identity/device.js +17 -0
- package/src/lib/interfaces/identity/device.js.map +1 -0
- package/src/lib/interfaces/identity/deviceKeyStorage.d.ts +71 -0
- package/src/lib/interfaces/identity/deviceKeyStorage.d.ts.map +1 -0
- package/src/lib/interfaces/identity/deviceKeyStorage.js +16 -0
- package/src/lib/interfaces/identity/deviceKeyStorage.js.map +1 -0
- package/src/lib/interfaces/identity/identityProof.d.ts +90 -0
- package/src/lib/interfaces/identity/identityProof.d.ts.map +1 -0
- package/src/lib/interfaces/identity/identityProof.js +18 -0
- package/src/lib/interfaces/identity/identityProof.js.map +1 -0
- package/src/lib/interfaces/identity/index.d.ts +7 -0
- package/src/lib/interfaces/identity/index.d.ts.map +1 -0
- package/src/lib/interfaces/identity/index.js +3 -0
- package/src/lib/interfaces/identity/index.js.map +1 -0
- package/src/lib/interfaces/identity/paperKey.d.ts +97 -0
- package/src/lib/interfaces/identity/paperKey.d.ts.map +1 -0
- package/src/lib/interfaces/identity/paperKey.js +17 -0
- package/src/lib/interfaces/identity/paperKey.js.map +1 -0
- package/src/lib/interfaces/identity/publicProfile.d.ts +74 -0
- package/src/lib/interfaces/identity/publicProfile.d.ts.map +1 -0
- package/src/lib/interfaces/identity/publicProfile.js +18 -0
- package/src/lib/interfaces/identity/publicProfile.js.map +1 -0
- package/src/lib/interfaces/identity/splitPaperKey.d.ts +73 -0
- package/src/lib/interfaces/identity/splitPaperKey.d.ts.map +1 -0
- package/src/lib/interfaces/identity/splitPaperKey.js +20 -0
- package/src/lib/interfaces/identity/splitPaperKey.js.map +1 -0
- package/src/lib/interfaces/index.d.ts +12 -2
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.js +12 -0
- package/src/lib/interfaces/index.js.map +1 -1
- package/src/lib/interfaces/network/node.d.ts +4 -2
- package/src/lib/interfaces/network/node.d.ts.map +1 -1
- package/src/lib/interfaces/network/nodeAdvertisement.d.ts +4 -2
- package/src/lib/interfaces/network/nodeAdvertisement.d.ts.map +1 -1
- package/src/lib/interfaces/privateVotingDerivation.d.ts +7 -2
- package/src/lib/interfaces/privateVotingDerivation.d.ts.map +1 -1
- package/src/lib/interfaces/requests/communicationRequests.d.ts +154 -0
- package/src/lib/interfaces/requests/communicationRequests.d.ts.map +1 -0
- package/src/lib/interfaces/requests/communicationRequests.js +10 -0
- package/src/lib/interfaces/requests/communicationRequests.js.map +1 -0
- package/src/lib/interfaces/requests/index.d.ts +2 -0
- package/src/lib/interfaces/requests/index.d.ts.map +1 -0
- package/src/lib/interfaces/requests/index.js +3 -0
- package/src/lib/interfaces/requests/index.js.map +1 -0
- package/src/lib/interfaces/responses/blockDataResponse.d.ts +11 -0
- package/src/lib/interfaces/responses/blockDataResponse.d.ts.map +1 -0
- package/src/lib/interfaces/responses/blockDataResponse.js +3 -0
- package/src/lib/interfaces/responses/blockDataResponse.js.map +1 -0
- package/src/lib/interfaces/responses/communicationResponses.d.ts +82 -0
- package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -0
- package/src/lib/interfaces/responses/communicationResponses.js +17 -0
- package/src/lib/interfaces/responses/communicationResponses.js.map +1 -0
- package/src/lib/interfaces/responses/cryptoResponses.d.ts +30 -0
- package/src/lib/interfaces/responses/cryptoResponses.d.ts.map +1 -0
- package/src/lib/interfaces/responses/cryptoResponses.js +12 -0
- package/src/lib/interfaces/responses/cryptoResponses.js.map +1 -0
- package/src/lib/interfaces/responses/deviceResponses.d.ts +26 -0
- package/src/lib/interfaces/responses/deviceResponses.d.ts.map +1 -0
- package/src/lib/interfaces/responses/deviceResponses.js +15 -0
- package/src/lib/interfaces/responses/deviceResponses.js.map +1 -0
- package/src/lib/interfaces/responses/directoryResponses.d.ts +26 -0
- package/src/lib/interfaces/responses/directoryResponses.d.ts.map +1 -0
- package/src/lib/interfaces/responses/directoryResponses.js +12 -0
- package/src/lib/interfaces/responses/directoryResponses.js.map +1 -0
- package/src/lib/interfaces/responses/emailResponses.d.ts +40 -0
- package/src/lib/interfaces/responses/emailResponses.d.ts.map +1 -0
- package/src/lib/interfaces/responses/emailResponses.js +18 -0
- package/src/lib/interfaces/responses/emailResponses.js.map +1 -0
- package/src/lib/interfaces/responses/explodingMessageResponses.d.ts +42 -0
- package/src/lib/interfaces/responses/explodingMessageResponses.d.ts.map +1 -0
- package/src/lib/interfaces/responses/explodingMessageResponses.js +11 -0
- package/src/lib/interfaces/responses/explodingMessageResponses.js.map +1 -0
- package/src/lib/interfaces/responses/identityProofResponses.d.ts +33 -0
- package/src/lib/interfaces/responses/identityProofResponses.d.ts.map +1 -0
- package/src/lib/interfaces/responses/identityProofResponses.js +12 -0
- package/src/lib/interfaces/responses/identityProofResponses.js.map +1 -0
- package/src/lib/interfaces/responses/index.d.ts +3 -1
- package/src/lib/interfaces/responses/index.d.ts.map +1 -1
- package/src/lib/interfaces/sealResults.d.ts +7 -2
- package/src/lib/interfaces/sealResults.d.ts.map +1 -1
- package/src/lib/interfaces/services/fecService.d.ts +7 -5
- package/src/lib/interfaces/services/fecService.d.ts.map +1 -1
- package/src/lib/interfaces/services/fecService.js +2 -0
- package/src/lib/interfaces/services/fecService.js.map +1 -1
- package/src/lib/interfaces/singleEncryptedBlockDetails.d.ts +7 -2
- package/src/lib/interfaces/singleEncryptedBlockDetails.d.ts.map +1 -1
- package/src/lib/interfaces/storage/blockMetadata.d.ts +8 -1
- package/src/lib/interfaces/storage/blockMetadata.d.ts.map +1 -1
- package/src/lib/interfaces/storage/blockMetadata.js +3 -1
- package/src/lib/interfaces/storage/blockMetadata.js.map +1 -1
- package/src/lib/interfaces/storage/cblIndex.d.ts +141 -0
- package/src/lib/interfaces/storage/cblIndex.d.ts.map +1 -0
- package/src/lib/interfaces/storage/cblIndex.js +28 -0
- package/src/lib/interfaces/storage/cblIndex.js.map +1 -0
- package/src/lib/interfaces/storage/clientSession.d.ts +8 -0
- package/src/lib/interfaces/storage/clientSession.d.ts.map +1 -0
- package/src/lib/interfaces/storage/clientSession.js +3 -0
- package/src/lib/interfaces/storage/clientSession.js.map +1 -0
- package/src/lib/interfaces/storage/collection.d.ts +9 -0
- package/src/lib/interfaces/storage/collection.d.ts.map +1 -0
- package/src/lib/interfaces/storage/collection.js +3 -0
- package/src/lib/interfaces/storage/collection.js.map +1 -0
- package/src/lib/interfaces/storage/database.d.ts +9 -0
- package/src/lib/interfaces/storage/database.d.ts.map +1 -0
- package/src/lib/interfaces/storage/database.js +3 -0
- package/src/lib/interfaces/storage/database.js.map +1 -0
- package/src/lib/interfaces/storage/databaseLifecycleHooks.d.ts +8 -0
- package/src/lib/interfaces/storage/databaseLifecycleHooks.d.ts.map +1 -0
- package/src/lib/interfaces/storage/databaseLifecycleHooks.js +3 -0
- package/src/lib/interfaces/storage/databaseLifecycleHooks.js.map +1 -0
- package/src/lib/interfaces/storage/documentTypes.d.ts +8 -0
- package/src/lib/interfaces/storage/documentTypes.d.ts.map +1 -0
- package/src/lib/interfaces/storage/documentTypes.js +3 -0
- package/src/lib/interfaces/storage/documentTypes.js.map +1 -0
- package/src/lib/interfaces/storage/encryptedPool.d.ts +64 -0
- package/src/lib/interfaces/storage/encryptedPool.d.ts.map +1 -0
- package/src/lib/interfaces/storage/encryptedPool.js +26 -0
- package/src/lib/interfaces/storage/encryptedPool.js.map +1 -0
- package/src/lib/interfaces/storage/headRegistry.d.ts +128 -0
- package/src/lib/interfaces/storage/headRegistry.d.ts.map +1 -0
- package/src/lib/interfaces/storage/headRegistry.js +3 -0
- package/src/lib/interfaces/storage/headRegistry.js.map +1 -0
- package/src/lib/interfaces/storage/index.d.ts +14 -0
- package/src/lib/interfaces/storage/index.d.ts.map +1 -1
- package/src/lib/interfaces/storage/index.js +14 -1
- package/src/lib/interfaces/storage/index.js.map +1 -1
- package/src/lib/interfaces/storage/pooledBlockStore.d.ts +163 -0
- package/src/lib/interfaces/storage/pooledBlockStore.d.ts.map +1 -0
- package/src/lib/interfaces/storage/pooledBlockStore.js +77 -0
- package/src/lib/interfaces/storage/pooledBlockStore.js.map +1 -0
- package/src/lib/interfaces/storage/readConcernBlockStore.d.ts +47 -0
- package/src/lib/interfaces/storage/readConcernBlockStore.d.ts.map +1 -0
- package/src/lib/interfaces/storage/readConcernBlockStore.js +29 -0
- package/src/lib/interfaces/storage/readConcernBlockStore.js.map +1 -0
- package/src/lib/interfaces/symmetricEncryptionResults.d.ts +7 -5
- package/src/lib/interfaces/symmetricEncryptionResults.d.ts.map +1 -1
- package/src/lib/services/blockCapacity.service.d.ts.map +1 -1
- package/src/lib/services/blockCapacity.service.js +15 -0
- package/src/lib/services/blockCapacity.service.js.map +1 -1
- package/src/lib/services/brightpass/auditLogger.d.ts +41 -0
- package/src/lib/services/brightpass/auditLogger.d.ts.map +1 -0
- package/src/lib/services/brightpass/auditLogger.js +47 -0
- package/src/lib/services/brightpass/auditLogger.js.map +1 -0
- package/src/lib/services/brightpass/breachDetector.d.ts +68 -0
- package/src/lib/services/brightpass/breachDetector.d.ts.map +1 -0
- package/src/lib/services/brightpass/breachDetector.js +102 -0
- package/src/lib/services/brightpass/breachDetector.js.map +1 -0
- package/src/lib/services/brightpass/importParser.d.ts +105 -0
- package/src/lib/services/brightpass/importParser.d.ts.map +1 -0
- package/src/lib/services/brightpass/importParser.js +380 -0
- package/src/lib/services/brightpass/importParser.js.map +1 -0
- package/src/lib/services/brightpass/index.d.ts +16 -0
- package/src/lib/services/brightpass/index.d.ts.map +1 -0
- package/src/lib/services/brightpass/index.js +19 -0
- package/src/lib/services/brightpass/index.js.map +1 -0
- package/src/lib/services/brightpass/passwordGenerator.d.ts +111 -0
- package/src/lib/services/brightpass/passwordGenerator.d.ts.map +1 -0
- package/src/lib/services/brightpass/passwordGenerator.js +162 -0
- package/src/lib/services/brightpass/passwordGenerator.js.map +1 -0
- package/src/lib/services/brightpass/totpEngine.d.ts +191 -0
- package/src/lib/services/brightpass/totpEngine.d.ts.map +1 -0
- package/src/lib/services/brightpass/totpEngine.js +198 -0
- package/src/lib/services/brightpass/totpEngine.js.map +1 -0
- package/src/lib/services/brightpass/vaultKeyDerivation.d.ts +26 -0
- package/src/lib/services/brightpass/vaultKeyDerivation.d.ts.map +1 -0
- package/src/lib/services/brightpass/vaultKeyDerivation.js +42 -0
- package/src/lib/services/brightpass/vaultKeyDerivation.js.map +1 -0
- package/src/lib/services/brightpass/vaultSerializer.d.ts +14 -0
- package/src/lib/services/brightpass/vaultSerializer.d.ts.map +1 -0
- package/src/lib/services/brightpass/vaultSerializer.js +77 -0
- package/src/lib/services/brightpass/vaultSerializer.js.map +1 -0
- package/src/lib/services/cblService.d.ts +4 -2
- package/src/lib/services/cblService.d.ts.map +1 -1
- package/src/lib/services/cblService.js +8 -4
- package/src/lib/services/cblService.js.map +1 -1
- package/src/lib/services/communication/channelService.d.ts +208 -0
- package/src/lib/services/communication/channelService.d.ts.map +1 -0
- package/src/lib/services/communication/channelService.js +575 -0
- package/src/lib/services/communication/channelService.js.map +1 -0
- package/src/lib/services/communication/conversationService.d.ts +130 -0
- package/src/lib/services/communication/conversationService.d.ts.map +1 -0
- package/src/lib/services/communication/conversationService.js +279 -0
- package/src/lib/services/communication/conversationService.js.map +1 -0
- package/src/lib/services/communication/explodingMessageService.d.ts +168 -0
- package/src/lib/services/communication/explodingMessageService.d.ts.map +1 -0
- package/src/lib/services/communication/explodingMessageService.js +287 -0
- package/src/lib/services/communication/explodingMessageService.js.map +1 -0
- package/src/lib/services/communication/groupService.d.ts +165 -0
- package/src/lib/services/communication/groupService.d.ts.map +1 -0
- package/src/lib/services/communication/groupService.js +437 -0
- package/src/lib/services/communication/groupService.js.map +1 -0
- package/src/lib/services/communication/index.d.ts +16 -0
- package/src/lib/services/communication/index.d.ts.map +1 -0
- package/src/lib/services/communication/index.js +63 -0
- package/src/lib/services/communication/index.js.map +1 -0
- package/src/lib/services/communication/messageOperationsService.d.ts +81 -0
- package/src/lib/services/communication/messageOperationsService.d.ts.map +1 -0
- package/src/lib/services/communication/messageOperationsService.js +162 -0
- package/src/lib/services/communication/messageOperationsService.js.map +1 -0
- package/src/lib/services/communication/permissionService.d.ts +47 -0
- package/src/lib/services/communication/permissionService.d.ts.map +1 -0
- package/src/lib/services/communication/permissionService.js +82 -0
- package/src/lib/services/communication/permissionService.js.map +1 -0
- package/src/lib/services/communication/searchService.d.ts +30 -0
- package/src/lib/services/communication/searchService.d.ts.map +1 -0
- package/src/lib/services/communication/searchService.js +83 -0
- package/src/lib/services/communication/searchService.js.map +1 -0
- package/src/lib/services/crypto/ethereumWalletService.d.ts +159 -0
- package/src/lib/services/crypto/ethereumWalletService.d.ts.map +1 -0
- package/src/lib/services/crypto/ethereumWalletService.js +345 -0
- package/src/lib/services/crypto/ethereumWalletService.js.map +1 -0
- package/src/lib/services/crypto/gitSigningService.d.ts +145 -0
- package/src/lib/services/crypto/gitSigningService.d.ts.map +1 -0
- package/src/lib/services/crypto/gitSigningService.js +291 -0
- package/src/lib/services/crypto/gitSigningService.js.map +1 -0
- package/src/lib/services/crypto/index.d.ts +3 -0
- package/src/lib/services/crypto/index.d.ts.map +1 -0
- package/src/lib/services/crypto/index.js +6 -0
- package/src/lib/services/crypto/index.js.map +1 -0
- package/src/lib/services/identity/deviceProvisioningService.d.ts +146 -0
- package/src/lib/services/identity/deviceProvisioningService.d.ts.map +1 -0
- package/src/lib/services/identity/deviceProvisioningService.js +219 -0
- package/src/lib/services/identity/deviceProvisioningService.js.map +1 -0
- package/src/lib/services/identity/identityProofService.d.ts +139 -0
- package/src/lib/services/identity/identityProofService.d.ts.map +1 -0
- package/src/lib/services/identity/identityProofService.js +245 -0
- package/src/lib/services/identity/identityProofService.js.map +1 -0
- package/src/lib/services/identity/index.d.ts +14 -0
- package/src/lib/services/identity/index.d.ts.map +1 -0
- package/src/lib/services/identity/index.js +17 -0
- package/src/lib/services/identity/index.js.map +1 -0
- package/src/lib/services/identity/memberIdentityProofService.d.ts +179 -0
- package/src/lib/services/identity/memberIdentityProofService.d.ts.map +1 -0
- package/src/lib/services/identity/memberIdentityProofService.js +232 -0
- package/src/lib/services/identity/memberIdentityProofService.js.map +1 -0
- package/src/lib/services/identity/memberPaperKeyService.d.ts +223 -0
- package/src/lib/services/identity/memberPaperKeyService.d.ts.map +1 -0
- package/src/lib/services/identity/memberPaperKeyService.js +279 -0
- package/src/lib/services/identity/memberPaperKeyService.js.map +1 -0
- package/src/lib/services/identity/paperKeyService.d.ts +106 -0
- package/src/lib/services/identity/paperKeyService.d.ts.map +1 -0
- package/src/lib/services/identity/paperKeyService.js +161 -0
- package/src/lib/services/identity/paperKeyService.js.map +1 -0
- package/src/lib/services/identity/publicKeyDirectoryService.d.ts +210 -0
- package/src/lib/services/identity/publicKeyDirectoryService.d.ts.map +1 -0
- package/src/lib/services/identity/publicKeyDirectoryService.js +328 -0
- package/src/lib/services/identity/publicKeyDirectoryService.js.map +1 -0
- package/src/lib/services/identity/splitPaperKeyService.d.ts +92 -0
- package/src/lib/services/identity/splitPaperKeyService.d.ts.map +1 -0
- package/src/lib/services/identity/splitPaperKeyService.js +305 -0
- package/src/lib/services/identity/splitPaperKeyService.js.map +1 -0
- package/src/lib/services/index.d.ts +4 -0
- package/src/lib/services/index.d.ts.map +1 -1
- package/src/lib/services/index.js +7 -0
- package/src/lib/services/index.js.map +1 -1
- package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
- package/src/lib/services/messaging/emailMessageService.js +26 -9
- package/src/lib/services/messaging/emailMessageService.js.map +1 -1
- package/src/lib/services/messaging/emailParser.d.ts +18 -0
- package/src/lib/services/messaging/emailParser.d.ts.map +1 -1
- package/src/lib/services/messaging/emailParser.js +18 -0
- package/src/lib/services/messaging/emailParser.js.map +1 -1
- package/src/lib/services/tuple.service.d.ts +27 -2
- package/src/lib/services/tuple.service.d.ts.map +1 -1
- package/src/lib/services/tuple.service.js +62 -20
- package/src/lib/services/tuple.service.js.map +1 -1
- package/src/lib/services/vcblService.d.ts +36 -0
- package/src/lib/services/vcblService.d.ts.map +1 -0
- package/src/lib/services/vcblService.js +326 -0
- package/src/lib/services/vcblService.js.map +1 -0
- package/src/lib/stores/index.d.ts +1 -0
- package/src/lib/stores/index.d.ts.map +1 -1
- package/src/lib/stores/index.js +1 -0
- package/src/lib/stores/index.js.map +1 -1
- package/src/lib/stores/pooledMemoryBlockStore.d.ts +134 -0
- package/src/lib/stores/pooledMemoryBlockStore.d.ts.map +1 -0
- package/src/lib/stores/pooledMemoryBlockStore.js +583 -0
- package/src/lib/stores/pooledMemoryBlockStore.js.map +1 -0
- package/src/lib/types/checksum.d.ts +11 -0
- package/src/lib/types/checksum.d.ts.map +1 -1
- package/src/lib/types/checksum.js +11 -0
- package/src/lib/types/checksum.js.map +1 -1
- package/src/lib/utils/index.d.ts +9 -0
- package/src/lib/utils/index.d.ts.map +1 -1
- package/src/lib/utils/index.js +12 -0
- package/src/lib/utils/index.js.map +1 -1
- package/src/lib/utils/pagination.d.ts +27 -0
- package/src/lib/utils/pagination.d.ts.map +1 -0
- package/src/lib/utils/pagination.js +38 -0
- package/src/lib/utils/pagination.js.map +1 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Member Paper Key Service for the BrightChain identity system.
|
|
4
|
+
*
|
|
5
|
+
* Manages paper key metadata lifecycle for members. Since {@link Member}
|
|
6
|
+
* is an external class from `@digitaldefiance/ecies-lib` and cannot be
|
|
7
|
+
* modified directly, this service acts as a companion that tracks paper
|
|
8
|
+
* key metadata (creation, usage, revocation) keyed by member ID.
|
|
9
|
+
*
|
|
10
|
+
* Follows the same stateful-service pattern used by
|
|
11
|
+
* {@link ConversationService}, {@link PermissionService}, and other
|
|
12
|
+
* BrightChain services that manage in-memory state with `Map`s.
|
|
13
|
+
*
|
|
14
|
+
* Requirements: 1.5, 1.6, 1.7
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.MemberPaperKeyService = exports.PaperKeyAlreadyUsedError = exports.PaperKeyRevokedError = exports.PaperKeyNotFoundError = void 0;
|
|
18
|
+
const uuid_1 = require("uuid");
|
|
19
|
+
/**
|
|
20
|
+
* Error thrown when a paper key operation references a key that does not exist.
|
|
21
|
+
*/
|
|
22
|
+
class PaperKeyNotFoundError extends Error {
|
|
23
|
+
constructor(paperKeyId) {
|
|
24
|
+
super(`Paper key not found: ${paperKeyId}`);
|
|
25
|
+
this.name = 'PaperKeyNotFoundError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.PaperKeyNotFoundError = PaperKeyNotFoundError;
|
|
29
|
+
/**
|
|
30
|
+
* Error thrown when attempting to use or modify an already-revoked paper key.
|
|
31
|
+
*/
|
|
32
|
+
class PaperKeyRevokedError extends Error {
|
|
33
|
+
constructor(paperKeyId) {
|
|
34
|
+
super(`Paper key has been revoked: ${paperKeyId}`);
|
|
35
|
+
this.name = 'PaperKeyRevokedError';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.PaperKeyRevokedError = PaperKeyRevokedError;
|
|
39
|
+
/**
|
|
40
|
+
* Error thrown when attempting to mark an already-used paper key as used again.
|
|
41
|
+
*/
|
|
42
|
+
class PaperKeyAlreadyUsedError extends Error {
|
|
43
|
+
constructor(paperKeyId) {
|
|
44
|
+
super(`Paper key has already been used: ${paperKeyId}`);
|
|
45
|
+
this.name = 'PaperKeyAlreadyUsedError';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.PaperKeyAlreadyUsedError = PaperKeyAlreadyUsedError;
|
|
49
|
+
/**
|
|
50
|
+
* Service that manages paper key metadata for members.
|
|
51
|
+
*
|
|
52
|
+
* Since {@link Member} from `@digitaldefiance/ecies-lib` is an external
|
|
53
|
+
* class, this service provides the `addPaperKey()`, `markPaperKeyUsed()`,
|
|
54
|
+
* and `revokePaperKey()` operations specified in the task, tracking
|
|
55
|
+
* metadata externally keyed by member ID.
|
|
56
|
+
*
|
|
57
|
+
* The generic `TId` parameter follows the project convention of allowing
|
|
58
|
+
* `string` for frontend DTOs and `GuidV4Buffer` for backend usage.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const service = new MemberPaperKeyService();
|
|
63
|
+
*
|
|
64
|
+
* // Add a paper key for a member
|
|
65
|
+
* const metadata = service.addPaperKey(memberId, PaperKeyPurpose.BACKUP);
|
|
66
|
+
*
|
|
67
|
+
* // Mark it as used during device provisioning
|
|
68
|
+
* service.markPaperKeyUsed(memberId, metadata.id, 'device-abc');
|
|
69
|
+
*
|
|
70
|
+
* // Revoke it
|
|
71
|
+
* service.revokePaperKey(memberId, metadata.id, 'Compromised');
|
|
72
|
+
*
|
|
73
|
+
* // Query audit trail
|
|
74
|
+
* const auditLog = service.getAuditLog(memberId);
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
class MemberPaperKeyService {
|
|
78
|
+
constructor(idFactory) {
|
|
79
|
+
/**
|
|
80
|
+
* Paper key metadata keyed by member ID.
|
|
81
|
+
* Each member can have multiple paper keys.
|
|
82
|
+
*/
|
|
83
|
+
this.paperKeysByMember = new Map();
|
|
84
|
+
/**
|
|
85
|
+
* Append-only audit log keyed by member ID.
|
|
86
|
+
* Satisfies Requirement 1.7 (audit logging) and 1.9 (recovery event logging).
|
|
87
|
+
*/
|
|
88
|
+
this.auditLogByMember = new Map();
|
|
89
|
+
this.idFactory = idFactory ?? (() => (0, uuid_1.v4)());
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Register a new paper key for a member.
|
|
93
|
+
*
|
|
94
|
+
* Creates an {@link IPaperKeyMetadata} record and appends a 'created'
|
|
95
|
+
* entry to the audit log.
|
|
96
|
+
*
|
|
97
|
+
* **Validates: Requirement 1.5** — Track paper key metadata
|
|
98
|
+
*
|
|
99
|
+
* @param memberId - The member this paper key belongs to
|
|
100
|
+
* @param purpose - The intended purpose of the paper key
|
|
101
|
+
* @returns The newly created paper key metadata
|
|
102
|
+
*/
|
|
103
|
+
addPaperKey(memberId, purpose) {
|
|
104
|
+
const metadata = {
|
|
105
|
+
id: this.idFactory(),
|
|
106
|
+
createdAt: new Date(),
|
|
107
|
+
purpose,
|
|
108
|
+
};
|
|
109
|
+
const existing = this.paperKeysByMember.get(memberId) ?? [];
|
|
110
|
+
existing.push(metadata);
|
|
111
|
+
this.paperKeysByMember.set(memberId, existing);
|
|
112
|
+
this.appendAuditEntry(memberId, metadata.id, 'created');
|
|
113
|
+
return metadata;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Mark a paper key as used (e.g. after device provisioning).
|
|
117
|
+
*
|
|
118
|
+
* Sets the `usedAt` timestamp and optionally associates a device ID.
|
|
119
|
+
* A paper key can only be marked as used once and must not be revoked.
|
|
120
|
+
*
|
|
121
|
+
* **Validates: Requirement 1.6** — Mark paper keys as used after device provisioning
|
|
122
|
+
*
|
|
123
|
+
* @param memberId - The member who owns the paper key
|
|
124
|
+
* @param paperKeyId - The paper key to mark as used
|
|
125
|
+
* @param deviceId - Optional device ID that was provisioned
|
|
126
|
+
* @throws {PaperKeyNotFoundError} If the paper key does not exist for this member
|
|
127
|
+
* @throws {PaperKeyRevokedError} If the paper key has been revoked
|
|
128
|
+
* @throws {PaperKeyAlreadyUsedError} If the paper key has already been used
|
|
129
|
+
*/
|
|
130
|
+
markPaperKeyUsed(memberId, paperKeyId, deviceId) {
|
|
131
|
+
const metadata = this.findPaperKey(memberId, paperKeyId);
|
|
132
|
+
if (metadata.revokedAt) {
|
|
133
|
+
throw new PaperKeyRevokedError(String(paperKeyId));
|
|
134
|
+
}
|
|
135
|
+
if (metadata.usedAt) {
|
|
136
|
+
throw new PaperKeyAlreadyUsedError(String(paperKeyId));
|
|
137
|
+
}
|
|
138
|
+
metadata.usedAt = new Date();
|
|
139
|
+
if (deviceId !== undefined) {
|
|
140
|
+
metadata.deviceId = deviceId;
|
|
141
|
+
}
|
|
142
|
+
this.appendAuditEntry(memberId, paperKeyId, 'used', undefined, deviceId);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Revoke a paper key with audit logging.
|
|
146
|
+
*
|
|
147
|
+
* Sets the `revokedAt` timestamp and records the revocation reason
|
|
148
|
+
* in the audit log. A revoked paper key cannot be used for recovery
|
|
149
|
+
* or device provisioning.
|
|
150
|
+
*
|
|
151
|
+
* **Validates: Requirement 1.7** — Support paper key revocation with audit logging
|
|
152
|
+
*
|
|
153
|
+
* @param memberId - The member who owns the paper key
|
|
154
|
+
* @param paperKeyId - The paper key to revoke
|
|
155
|
+
* @param reason - Human-readable reason for revocation
|
|
156
|
+
* @throws {PaperKeyNotFoundError} If the paper key does not exist for this member
|
|
157
|
+
* @throws {PaperKeyRevokedError} If the paper key has already been revoked
|
|
158
|
+
*/
|
|
159
|
+
revokePaperKey(memberId, paperKeyId, reason) {
|
|
160
|
+
const metadata = this.findPaperKey(memberId, paperKeyId);
|
|
161
|
+
if (metadata.revokedAt) {
|
|
162
|
+
throw new PaperKeyRevokedError(String(paperKeyId));
|
|
163
|
+
}
|
|
164
|
+
metadata.revokedAt = new Date();
|
|
165
|
+
this.appendAuditEntry(memberId, paperKeyId, 'revoked', reason);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get all paper key metadata for a member.
|
|
169
|
+
*
|
|
170
|
+
* Returns a shallow copy of the array to prevent external mutation.
|
|
171
|
+
*
|
|
172
|
+
* @param memberId - The member to query
|
|
173
|
+
* @returns Array of paper key metadata (empty if none registered)
|
|
174
|
+
*/
|
|
175
|
+
getPaperKeys(memberId) {
|
|
176
|
+
return [...(this.paperKeysByMember.get(memberId) ?? [])];
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get active (non-revoked) paper keys for a member.
|
|
180
|
+
*
|
|
181
|
+
* @param memberId - The member to query
|
|
182
|
+
* @returns Array of active paper key metadata
|
|
183
|
+
*/
|
|
184
|
+
getActivePaperKeys(memberId) {
|
|
185
|
+
return this.getPaperKeys(memberId).filter((pk) => !pk.revokedAt);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get a single paper key by ID.
|
|
189
|
+
*
|
|
190
|
+
* @param memberId - The member who owns the paper key
|
|
191
|
+
* @param paperKeyId - The paper key to retrieve
|
|
192
|
+
* @returns The paper key metadata
|
|
193
|
+
* @throws {PaperKeyNotFoundError} If the paper key does not exist
|
|
194
|
+
*/
|
|
195
|
+
getPaperKey(memberId, paperKeyId) {
|
|
196
|
+
return this.findPaperKey(memberId, paperKeyId);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get the full audit log for a member's paper keys.
|
|
200
|
+
*
|
|
201
|
+
* Returns a shallow copy of the array to prevent external mutation.
|
|
202
|
+
*
|
|
203
|
+
* **Validates: Requirement 1.7** — Audit logging
|
|
204
|
+
*
|
|
205
|
+
* @param memberId - The member to query
|
|
206
|
+
* @returns Array of audit entries (empty if none recorded)
|
|
207
|
+
*/
|
|
208
|
+
getAuditLog(memberId) {
|
|
209
|
+
return [...(this.auditLogByMember.get(memberId) ?? [])];
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Check whether a specific paper key is revoked.
|
|
213
|
+
*
|
|
214
|
+
* @param memberId - The member who owns the paper key
|
|
215
|
+
* @param paperKeyId - The paper key to check
|
|
216
|
+
* @returns `true` if the paper key has been revoked
|
|
217
|
+
* @throws {PaperKeyNotFoundError} If the paper key does not exist
|
|
218
|
+
*/
|
|
219
|
+
isRevoked(memberId, paperKeyId) {
|
|
220
|
+
return this.findPaperKey(memberId, paperKeyId).revokedAt !== undefined;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Check whether a specific paper key has been used.
|
|
224
|
+
*
|
|
225
|
+
* @param memberId - The member who owns the paper key
|
|
226
|
+
* @param paperKeyId - The paper key to check
|
|
227
|
+
* @returns `true` if the paper key has been used
|
|
228
|
+
* @throws {PaperKeyNotFoundError} If the paper key does not exist
|
|
229
|
+
*/
|
|
230
|
+
isUsed(memberId, paperKeyId) {
|
|
231
|
+
return this.findPaperKey(memberId, paperKeyId).usedAt !== undefined;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Remove all paper key data for a member.
|
|
235
|
+
*
|
|
236
|
+
* Useful for testing or when a member is deleted.
|
|
237
|
+
*
|
|
238
|
+
* @param memberId - The member whose data should be cleared
|
|
239
|
+
*/
|
|
240
|
+
clearMemberData(memberId) {
|
|
241
|
+
this.paperKeysByMember.delete(memberId);
|
|
242
|
+
this.auditLogByMember.delete(memberId);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Look up a paper key by member ID and paper key ID.
|
|
246
|
+
*
|
|
247
|
+
* @throws {PaperKeyNotFoundError} If not found
|
|
248
|
+
*/
|
|
249
|
+
findPaperKey(memberId, paperKeyId) {
|
|
250
|
+
const keys = this.paperKeysByMember.get(memberId);
|
|
251
|
+
if (!keys) {
|
|
252
|
+
throw new PaperKeyNotFoundError(String(paperKeyId));
|
|
253
|
+
}
|
|
254
|
+
const found = keys.find((pk) => pk.id === paperKeyId);
|
|
255
|
+
if (!found) {
|
|
256
|
+
throw new PaperKeyNotFoundError(String(paperKeyId));
|
|
257
|
+
}
|
|
258
|
+
return found;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Append an entry to the member's audit log.
|
|
262
|
+
*/
|
|
263
|
+
appendAuditEntry(memberId, paperKeyId, action, reason, deviceId) {
|
|
264
|
+
const entry = {
|
|
265
|
+
id: (0, uuid_1.v4)(),
|
|
266
|
+
paperKeyId,
|
|
267
|
+
memberId,
|
|
268
|
+
action,
|
|
269
|
+
timestamp: new Date(),
|
|
270
|
+
reason,
|
|
271
|
+
deviceId,
|
|
272
|
+
};
|
|
273
|
+
const existing = this.auditLogByMember.get(memberId) ?? [];
|
|
274
|
+
existing.push(entry);
|
|
275
|
+
this.auditLogByMember.set(memberId, existing);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
exports.MemberPaperKeyService = MemberPaperKeyService;
|
|
279
|
+
//# sourceMappingURL=memberPaperKeyService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memberPaperKeyService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/identity/memberPaperKeyService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Paper Key Service for the BrightChain identity system.
|
|
3
|
+
*
|
|
4
|
+
* Provides generation, validation, recovery, and template creation
|
|
5
|
+
* for 24-word BIP39 mnemonic paper keys. Paper keys serve as the
|
|
6
|
+
* primary mechanism for account backup, device provisioning, and
|
|
7
|
+
* account recovery.
|
|
8
|
+
*
|
|
9
|
+
* This service wraps the existing BIP39/ECIES infrastructure from
|
|
10
|
+
* {@link @digitaldefiance/ecies-lib} and exposes a focused API for
|
|
11
|
+
* paper key operations.
|
|
12
|
+
*
|
|
13
|
+
* Requirements: 1.1, 1.2, 1.3, 1.4, 1.8
|
|
14
|
+
*/
|
|
15
|
+
import { ECIESService, Member, PlatformID, SecureString } from '@digitaldefiance/ecies-lib';
|
|
16
|
+
import { IPaperKeyTemplate } from '../../interfaces/identity/paperKey';
|
|
17
|
+
/**
|
|
18
|
+
* Service for generating, validating, and recovering from BIP39 paper keys.
|
|
19
|
+
*
|
|
20
|
+
* All methods require an {@link ECIESService} instance, which is obtained
|
|
21
|
+
* from {@link ServiceProvider}. This keeps the service stateless and
|
|
22
|
+
* compatible with the existing dependency-injection pattern used
|
|
23
|
+
* throughout BrightChain.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const eciesService = ServiceProvider.getInstance().eciesService;
|
|
28
|
+
*
|
|
29
|
+
* // Generate a new paper key
|
|
30
|
+
* const paperKey = PaperKeyService.generatePaperKey(eciesService);
|
|
31
|
+
*
|
|
32
|
+
* // Validate it
|
|
33
|
+
* const isValid = PaperKeyService.validatePaperKey(paperKey, eciesService);
|
|
34
|
+
*
|
|
35
|
+
* // Recover a member from it
|
|
36
|
+
* const member = PaperKeyService.recoverFromPaperKey(paperKey, eciesService);
|
|
37
|
+
*
|
|
38
|
+
* // Generate a printable template
|
|
39
|
+
* const template = await PaperKeyService.generateTemplate(
|
|
40
|
+
* paperKey,
|
|
41
|
+
* member.id.toString(),
|
|
42
|
+
* );
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare class PaperKeyService {
|
|
46
|
+
/**
|
|
47
|
+
* Generate a new 24-word BIP39 mnemonic paper key (256-bit entropy).
|
|
48
|
+
*
|
|
49
|
+
* Uses the ECIESService's mnemonic generator which internally calls
|
|
50
|
+
* `@scure/bip39.generateMnemonic(wordlist, 256)`.
|
|
51
|
+
*
|
|
52
|
+
* **Validates: Requirement 1.1** — Generate 24-word BIP39 mnemonics
|
|
53
|
+
*
|
|
54
|
+
* @param eciesService - The ECIES service instance for key generation
|
|
55
|
+
* @returns A {@link SecureString} containing the 24-word mnemonic
|
|
56
|
+
*/
|
|
57
|
+
static generatePaperKey<TID extends PlatformID = Uint8Array>(eciesService: ECIESService<TID>): SecureString;
|
|
58
|
+
/**
|
|
59
|
+
* Validate that a paper key is a well-formed BIP39 mnemonic.
|
|
60
|
+
*
|
|
61
|
+
* Checks both structural validity (24 words, valid BIP39 checksum)
|
|
62
|
+
* by attempting to derive a wallet from the mnemonic. If derivation
|
|
63
|
+
* succeeds the mnemonic is valid; if it throws, the mnemonic is invalid.
|
|
64
|
+
*
|
|
65
|
+
* **Validates: Requirement 1.2** — Validate paper key format using BIP39 validation
|
|
66
|
+
*
|
|
67
|
+
* @param paperKey - The mnemonic string to validate
|
|
68
|
+
* @param eciesService - The ECIES service instance for validation
|
|
69
|
+
* @returns `true` if the paper key is a valid 24-word BIP39 mnemonic, `false` otherwise
|
|
70
|
+
*/
|
|
71
|
+
static validatePaperKey<TID extends PlatformID = Uint8Array>(paperKey: string, eciesService: ECIESService<TID>): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Recover a {@link Member} identity from a paper key mnemonic.
|
|
74
|
+
*
|
|
75
|
+
* Reconstructs the full member (with private key and wallet loaded)
|
|
76
|
+
* from the BIP39 mnemonic. The recovered member can immediately
|
|
77
|
+
* perform cryptographic operations (sign, encrypt, etc.).
|
|
78
|
+
*
|
|
79
|
+
* **Validates: Requirement 1.3** — Recover Member identity from a valid paper key
|
|
80
|
+
*
|
|
81
|
+
* @param paperKey - The 24-word BIP39 mnemonic
|
|
82
|
+
* @param eciesService - The ECIES service instance for key derivation
|
|
83
|
+
* @param name - Optional display name for the recovered member (default: 'Recovered User')
|
|
84
|
+
* @returns A fully-initialised {@link Member} with wallet and private key loaded
|
|
85
|
+
* @throws {Error} If the paper key is invalid or key derivation fails
|
|
86
|
+
*/
|
|
87
|
+
static recoverFromPaperKey<TID extends PlatformID = Uint8Array>(paperKey: string, eciesService: ECIESService<TID>, name?: string): Member<TID>;
|
|
88
|
+
/**
|
|
89
|
+
* Generate a printable paper key template.
|
|
90
|
+
*
|
|
91
|
+
* Produces an {@link IPaperKeyTemplate} containing the mnemonic words,
|
|
92
|
+
* a QR code data URL for mobile scanning, creation timestamp,
|
|
93
|
+
* storage instructions, and security warnings.
|
|
94
|
+
*
|
|
95
|
+
* The QR code encodes the full mnemonic string and is generated
|
|
96
|
+
* using the `qrcode` library (same pattern as {@link TOTPEngine}).
|
|
97
|
+
*
|
|
98
|
+
* **Validates: Requirements 1.4, 1.8, 1.10** — Printable template with QR code and warnings
|
|
99
|
+
*
|
|
100
|
+
* @param paperKey - The 24-word BIP39 mnemonic to template
|
|
101
|
+
* @param memberId - The member ID to associate with the template
|
|
102
|
+
* @returns A promise resolving to the complete {@link IPaperKeyTemplate}
|
|
103
|
+
*/
|
|
104
|
+
static generateTemplate(paperKey: string, memberId: string): Promise<IPaperKeyTemplate>;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=paperKeyService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paperKeyService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/identity/paperKeyService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,YAAY,EACZ,MAAM,EACN,UAAU,EACV,YAAY,EACb,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAyBvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,eAAe;IAC1B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EACzD,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,GAC9B,YAAY;IAIf;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EACzD,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,GAC9B,OAAO;IAkBV;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,mBAAmB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EAC5D,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,EAC/B,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,GAAG,CAAC;IAUd;;;;;;;;;;;;;;;OAeG;WACU,gBAAgB,CAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC;CAa9B"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Paper Key Service for the BrightChain identity system.
|
|
4
|
+
*
|
|
5
|
+
* Provides generation, validation, recovery, and template creation
|
|
6
|
+
* for 24-word BIP39 mnemonic paper keys. Paper keys serve as the
|
|
7
|
+
* primary mechanism for account backup, device provisioning, and
|
|
8
|
+
* account recovery.
|
|
9
|
+
*
|
|
10
|
+
* This service wraps the existing BIP39/ECIES infrastructure from
|
|
11
|
+
* {@link @digitaldefiance/ecies-lib} and exposes a focused API for
|
|
12
|
+
* paper key operations.
|
|
13
|
+
*
|
|
14
|
+
* Requirements: 1.1, 1.2, 1.3, 1.4, 1.8
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.PaperKeyService = void 0;
|
|
18
|
+
const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
|
|
19
|
+
const QRCode = require("qrcode");
|
|
20
|
+
/**
|
|
21
|
+
* Default security warnings displayed on every paper key template.
|
|
22
|
+
*
|
|
23
|
+
* These warnings are mandated by Requirement 1.10 and must appear
|
|
24
|
+
* on every printed template.
|
|
25
|
+
*/
|
|
26
|
+
const PAPER_KEY_WARNINGS = [
|
|
27
|
+
'Anyone with this paper key can access your account',
|
|
28
|
+
'Do not store digitally or photograph',
|
|
29
|
+
'Consider splitting among trusted parties',
|
|
30
|
+
];
|
|
31
|
+
/**
|
|
32
|
+
* Default instructions for paper key storage.
|
|
33
|
+
*/
|
|
34
|
+
const PAPER_KEY_INSTRUCTIONS = 'Store this paper key in a secure location. You will need it to recover your account.';
|
|
35
|
+
/**
|
|
36
|
+
* Expected word count for a 256-bit entropy BIP39 mnemonic.
|
|
37
|
+
*/
|
|
38
|
+
const PAPER_KEY_WORD_COUNT = 24;
|
|
39
|
+
/**
|
|
40
|
+
* Service for generating, validating, and recovering from BIP39 paper keys.
|
|
41
|
+
*
|
|
42
|
+
* All methods require an {@link ECIESService} instance, which is obtained
|
|
43
|
+
* from {@link ServiceProvider}. This keeps the service stateless and
|
|
44
|
+
* compatible with the existing dependency-injection pattern used
|
|
45
|
+
* throughout BrightChain.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const eciesService = ServiceProvider.getInstance().eciesService;
|
|
50
|
+
*
|
|
51
|
+
* // Generate a new paper key
|
|
52
|
+
* const paperKey = PaperKeyService.generatePaperKey(eciesService);
|
|
53
|
+
*
|
|
54
|
+
* // Validate it
|
|
55
|
+
* const isValid = PaperKeyService.validatePaperKey(paperKey, eciesService);
|
|
56
|
+
*
|
|
57
|
+
* // Recover a member from it
|
|
58
|
+
* const member = PaperKeyService.recoverFromPaperKey(paperKey, eciesService);
|
|
59
|
+
*
|
|
60
|
+
* // Generate a printable template
|
|
61
|
+
* const template = await PaperKeyService.generateTemplate(
|
|
62
|
+
* paperKey,
|
|
63
|
+
* member.id.toString(),
|
|
64
|
+
* );
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
class PaperKeyService {
|
|
68
|
+
/**
|
|
69
|
+
* Generate a new 24-word BIP39 mnemonic paper key (256-bit entropy).
|
|
70
|
+
*
|
|
71
|
+
* Uses the ECIESService's mnemonic generator which internally calls
|
|
72
|
+
* `@scure/bip39.generateMnemonic(wordlist, 256)`.
|
|
73
|
+
*
|
|
74
|
+
* **Validates: Requirement 1.1** — Generate 24-word BIP39 mnemonics
|
|
75
|
+
*
|
|
76
|
+
* @param eciesService - The ECIES service instance for key generation
|
|
77
|
+
* @returns A {@link SecureString} containing the 24-word mnemonic
|
|
78
|
+
*/
|
|
79
|
+
static generatePaperKey(eciesService) {
|
|
80
|
+
return eciesService.generateNewMnemonic();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validate that a paper key is a well-formed BIP39 mnemonic.
|
|
84
|
+
*
|
|
85
|
+
* Checks both structural validity (24 words, valid BIP39 checksum)
|
|
86
|
+
* by attempting to derive a wallet from the mnemonic. If derivation
|
|
87
|
+
* succeeds the mnemonic is valid; if it throws, the mnemonic is invalid.
|
|
88
|
+
*
|
|
89
|
+
* **Validates: Requirement 1.2** — Validate paper key format using BIP39 validation
|
|
90
|
+
*
|
|
91
|
+
* @param paperKey - The mnemonic string to validate
|
|
92
|
+
* @param eciesService - The ECIES service instance for validation
|
|
93
|
+
* @returns `true` if the paper key is a valid 24-word BIP39 mnemonic, `false` otherwise
|
|
94
|
+
*/
|
|
95
|
+
static validatePaperKey(paperKey, eciesService) {
|
|
96
|
+
// Quick structural check: must be exactly 24 words
|
|
97
|
+
const words = paperKey.trim().split(/\s+/);
|
|
98
|
+
if (words.length !== PAPER_KEY_WORD_COUNT) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
// Attempt wallet derivation — this internally calls
|
|
103
|
+
// @scure/bip39.validateMnemonic and throws on invalid input
|
|
104
|
+
const secureString = new ecies_lib_1.SecureString(paperKey);
|
|
105
|
+
eciesService.walletAndSeedFromMnemonic(secureString);
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Recover a {@link Member} identity from a paper key mnemonic.
|
|
114
|
+
*
|
|
115
|
+
* Reconstructs the full member (with private key and wallet loaded)
|
|
116
|
+
* from the BIP39 mnemonic. The recovered member can immediately
|
|
117
|
+
* perform cryptographic operations (sign, encrypt, etc.).
|
|
118
|
+
*
|
|
119
|
+
* **Validates: Requirement 1.3** — Recover Member identity from a valid paper key
|
|
120
|
+
*
|
|
121
|
+
* @param paperKey - The 24-word BIP39 mnemonic
|
|
122
|
+
* @param eciesService - The ECIES service instance for key derivation
|
|
123
|
+
* @param name - Optional display name for the recovered member (default: 'Recovered User')
|
|
124
|
+
* @returns A fully-initialised {@link Member} with wallet and private key loaded
|
|
125
|
+
* @throws {Error} If the paper key is invalid or key derivation fails
|
|
126
|
+
*/
|
|
127
|
+
static recoverFromPaperKey(paperKey, eciesService, name) {
|
|
128
|
+
const secureString = new ecies_lib_1.SecureString(paperKey);
|
|
129
|
+
return ecies_lib_1.Member.fromMnemonic(secureString, eciesService, undefined, name ?? 'Recovered User');
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Generate a printable paper key template.
|
|
133
|
+
*
|
|
134
|
+
* Produces an {@link IPaperKeyTemplate} containing the mnemonic words,
|
|
135
|
+
* a QR code data URL for mobile scanning, creation timestamp,
|
|
136
|
+
* storage instructions, and security warnings.
|
|
137
|
+
*
|
|
138
|
+
* The QR code encodes the full mnemonic string and is generated
|
|
139
|
+
* using the `qrcode` library (same pattern as {@link TOTPEngine}).
|
|
140
|
+
*
|
|
141
|
+
* **Validates: Requirements 1.4, 1.8, 1.10** — Printable template with QR code and warnings
|
|
142
|
+
*
|
|
143
|
+
* @param paperKey - The 24-word BIP39 mnemonic to template
|
|
144
|
+
* @param memberId - The member ID to associate with the template
|
|
145
|
+
* @returns A promise resolving to the complete {@link IPaperKeyTemplate}
|
|
146
|
+
*/
|
|
147
|
+
static async generateTemplate(paperKey, memberId) {
|
|
148
|
+
const words = paperKey.trim().split(/\s+/);
|
|
149
|
+
const qrCode = await QRCode.toDataURL(paperKey);
|
|
150
|
+
return {
|
|
151
|
+
words,
|
|
152
|
+
qrCode,
|
|
153
|
+
createdAt: new Date(),
|
|
154
|
+
memberId,
|
|
155
|
+
instructions: PAPER_KEY_INSTRUCTIONS,
|
|
156
|
+
warnings: [...PAPER_KEY_WARNINGS],
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.PaperKeyService = PaperKeyService;
|
|
161
|
+
//# sourceMappingURL=paperKeyService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paperKeyService.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/identity/paperKeyService.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,0DAKoC;AACpC,iCAAiC;AAIjC;;;;;GAKG;AACH,MAAM,kBAAkB,GAAsB;IAC5C,oDAAoD;IACpD,sCAAsC;IACtC,0CAA0C;CAClC,CAAC;AAEX;;GAEG;AACH,MAAM,sBAAsB,GAC1B,sFAAsF,CAAC;AAEzF;;GAEG;AACH,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAa,eAAe;IAC1B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CACrB,YAA+B;QAE/B,OAAO,YAAY,CAAC,mBAAmB,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,gBAAgB,CACrB,QAAgB,EAChB,YAA+B;QAE/B,mDAAmD;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,oDAAoD;YACpD,4DAA4D;YAC5D,MAAM,YAAY,GAAG,IAAI,wBAAY,CAAC,QAAQ,CAAC,CAAC;YAChD,YAAY,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,mBAAmB,CACxB,QAAgB,EAChB,YAA+B,EAC/B,IAAa;QAEb,MAAM,YAAY,GAAG,IAAI,wBAAY,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,kBAAM,CAAC,YAAY,CACxB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,IAAI,gBAAgB,CACzB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC3B,QAAgB,EAChB,QAAgB;QAEhB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEhD,OAAO;YACL,KAAK;YACL,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;YACR,YAAY,EAAE,sBAAsB;YACpC,QAAQ,EAAE,CAAC,GAAG,kBAAkB,CAAC;SAClC,CAAC;IACJ,CAAC;CACF;AAjHD,0CAiHC"}
|