@brightchain/brightchain-api-lib 0.14.0 → 0.15.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 +5 -5
- package/src/index.d.ts +3 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +5 -0
- package/src/index.js.map +1 -1
- package/src/lib/application.d.ts +1 -0
- package/src/lib/application.d.ts.map +1 -1
- package/src/lib/application.js +23 -0
- package/src/lib/application.js.map +1 -1
- package/src/lib/auth/aclEnforcedAvailability.d.ts +57 -0
- package/src/lib/auth/aclEnforcedAvailability.d.ts.map +1 -0
- package/src/lib/auth/aclEnforcedAvailability.js +87 -0
- package/src/lib/auth/aclEnforcedAvailability.js.map +1 -0
- package/src/lib/auth/aclEnforcedBlockStore.d.ts +66 -0
- package/src/lib/auth/aclEnforcedBlockStore.d.ts.map +1 -0
- package/src/lib/auth/aclEnforcedBlockStore.js +83 -0
- package/src/lib/auth/aclEnforcedBlockStore.js.map +1 -0
- package/src/lib/auth/ecdsaNodeAuthenticator.d.ts +46 -0
- package/src/lib/auth/ecdsaNodeAuthenticator.d.ts.map +1 -0
- package/src/lib/auth/ecdsaNodeAuthenticator.js +110 -0
- package/src/lib/auth/ecdsaNodeAuthenticator.js.map +1 -0
- package/src/lib/auth/index.d.ts +7 -0
- package/src/lib/auth/index.d.ts.map +1 -0
- package/src/lib/auth/index.js +13 -0
- package/src/lib/auth/index.js.map +1 -0
- package/src/lib/auth/poolAclBootstrap.d.ts +36 -0
- package/src/lib/auth/poolAclBootstrap.d.ts.map +1 -0
- package/src/lib/auth/poolAclBootstrap.js +64 -0
- package/src/lib/auth/poolAclBootstrap.js.map +1 -0
- package/src/lib/auth/poolAclStore.d.ts +77 -0
- package/src/lib/auth/poolAclStore.d.ts.map +1 -0
- package/src/lib/auth/poolAclStore.js +189 -0
- package/src/lib/auth/poolAclStore.js.map +1 -0
- package/src/lib/auth/poolAclUpdater.d.ts +79 -0
- package/src/lib/auth/poolAclUpdater.d.ts.map +1 -0
- package/src/lib/auth/poolAclUpdater.js +144 -0
- package/src/lib/auth/poolAclUpdater.js.map +1 -0
- package/src/lib/availability/availabilityService.d.ts +2 -2
- package/src/lib/availability/availabilityService.d.ts.map +1 -1
- package/src/lib/availability/availabilityService.js +12 -5
- package/src/lib/availability/availabilityService.js.map +1 -1
- package/src/lib/availability/blockRegistry.d.ts +45 -3
- package/src/lib/availability/blockRegistry.d.ts.map +1 -1
- package/src/lib/availability/blockRegistry.js +123 -5
- package/src/lib/availability/blockRegistry.js.map +1 -1
- package/src/lib/availability/discoveryProtocol.d.ts +30 -1
- package/src/lib/availability/discoveryProtocol.d.ts.map +1 -1
- package/src/lib/availability/discoveryProtocol.js +76 -0
- package/src/lib/availability/discoveryProtocol.js.map +1 -1
- package/src/lib/availability/gossipService.d.ts +45 -6
- package/src/lib/availability/gossipService.d.ts.map +1 -1
- package/src/lib/availability/gossipService.js +177 -5
- package/src/lib/availability/gossipService.js.map +1 -1
- package/src/lib/availability/reconciliationService.d.ts +88 -1
- package/src/lib/availability/reconciliationService.d.ts.map +1 -1
- package/src/lib/availability/reconciliationService.js +246 -48
- package/src/lib/availability/reconciliationService.js.map +1 -1
- package/src/lib/blockFetch/blockFetcher.d.ts +100 -0
- package/src/lib/blockFetch/blockFetcher.d.ts.map +1 -0
- package/src/lib/blockFetch/blockFetcher.js +279 -0
- package/src/lib/blockFetch/blockFetcher.js.map +1 -0
- package/src/lib/blockFetch/fetchQueue.d.ts +88 -0
- package/src/lib/blockFetch/fetchQueue.d.ts.map +1 -0
- package/src/lib/blockFetch/fetchQueue.js +204 -0
- package/src/lib/blockFetch/fetchQueue.js.map +1 -0
- package/src/lib/blockFetch/httpBlockFetchTransport.d.ts +65 -0
- package/src/lib/blockFetch/httpBlockFetchTransport.d.ts.map +1 -0
- package/src/lib/blockFetch/httpBlockFetchTransport.js +104 -0
- package/src/lib/blockFetch/httpBlockFetchTransport.js.map +1 -0
- package/src/lib/blockFetch/index.d.ts +10 -0
- package/src/lib/blockFetch/index.d.ts.map +1 -0
- package/src/lib/blockFetch/index.js +13 -0
- package/src/lib/blockFetch/index.js.map +1 -0
- package/src/lib/controllers/api/brightpass.d.ts +72 -0
- package/src/lib/controllers/api/brightpass.d.ts.map +1 -0
- package/src/lib/controllers/api/brightpass.js +577 -0
- package/src/lib/controllers/api/brightpass.js.map +1 -0
- package/src/lib/controllers/api/channels.d.ts +122 -0
- package/src/lib/controllers/api/channels.d.ts.map +1 -0
- package/src/lib/controllers/api/channels.js +701 -0
- package/src/lib/controllers/api/channels.js.map +1 -0
- package/src/lib/controllers/api/conversations.d.ts +89 -0
- package/src/lib/controllers/api/conversations.d.ts.map +1 -0
- package/src/lib/controllers/api/conversations.js +259 -0
- package/src/lib/controllers/api/conversations.js.map +1 -0
- package/src/lib/controllers/api/emails.d.ts +122 -0
- package/src/lib/controllers/api/emails.d.ts.map +1 -0
- package/src/lib/controllers/api/emails.js +494 -0
- package/src/lib/controllers/api/emails.js.map +1 -0
- package/src/lib/controllers/api/explodingMessages.d.ts +79 -0
- package/src/lib/controllers/api/explodingMessages.d.ts.map +1 -0
- package/src/lib/controllers/api/explodingMessages.js +378 -0
- package/src/lib/controllers/api/explodingMessages.js.map +1 -0
- package/src/lib/controllers/api/groups.d.ts +94 -0
- package/src/lib/controllers/api/groups.d.ts.map +1 -0
- package/src/lib/controllers/api/groups.js +484 -0
- package/src/lib/controllers/api/groups.js.map +1 -0
- package/src/lib/controllers/api/index.d.ts +6 -0
- package/src/lib/controllers/api/index.d.ts.map +1 -1
- package/src/lib/controllers/api/index.js +6 -0
- package/src/lib/controllers/api/index.js.map +1 -1
- package/src/lib/controllers/api/messages.d.ts.map +1 -1
- package/src/lib/controllers/api/messages.js +2 -1
- package/src/lib/controllers/api/messages.js.map +1 -1
- package/src/lib/controllers/api/sync.d.ts +38 -2
- package/src/lib/controllers/api/sync.d.ts.map +1 -1
- package/src/lib/controllers/api/sync.js +89 -0
- package/src/lib/controllers/api/sync.js.map +1 -1
- package/src/lib/controllers/crypto/gitController.d.ts +70 -0
- package/src/lib/controllers/crypto/gitController.d.ts.map +1 -0
- package/src/lib/controllers/crypto/gitController.js +306 -0
- package/src/lib/controllers/crypto/gitController.js.map +1 -0
- package/src/lib/controllers/crypto/index.d.ts +3 -0
- package/src/lib/controllers/crypto/index.d.ts.map +1 -0
- package/src/lib/controllers/crypto/index.js +6 -0
- package/src/lib/controllers/crypto/index.js.map +1 -0
- package/src/lib/controllers/crypto/walletController.d.ts +64 -0
- package/src/lib/controllers/crypto/walletController.d.ts.map +1 -0
- package/src/lib/controllers/crypto/walletController.js +260 -0
- package/src/lib/controllers/crypto/walletController.js.map +1 -0
- package/src/lib/controllers/identity/deviceController.d.ts +96 -0
- package/src/lib/controllers/identity/deviceController.d.ts.map +1 -0
- package/src/lib/controllers/identity/deviceController.js +355 -0
- package/src/lib/controllers/identity/deviceController.js.map +1 -0
- package/src/lib/controllers/identity/directoryController.d.ts +75 -0
- package/src/lib/controllers/identity/directoryController.d.ts.map +1 -0
- package/src/lib/controllers/identity/directoryController.js +288 -0
- package/src/lib/controllers/identity/directoryController.js.map +1 -0
- package/src/lib/controllers/identity/identityProofController.d.ts +94 -0
- package/src/lib/controllers/identity/identityProofController.d.ts.map +1 -0
- package/src/lib/controllers/identity/identityProofController.js +454 -0
- package/src/lib/controllers/identity/identityProofController.js.map +1 -0
- package/src/lib/controllers/identity/index.d.ts +4 -0
- package/src/lib/controllers/identity/index.d.ts.map +1 -0
- package/src/lib/controllers/identity/index.js +7 -0
- package/src/lib/controllers/identity/index.js.map +1 -0
- package/src/lib/controllers/index.d.ts +2 -0
- package/src/lib/controllers/index.d.ts.map +1 -1
- package/src/lib/controllers/index.js +2 -0
- package/src/lib/controllers/index.js.map +1 -1
- package/src/lib/encryption/encryptedMetadataService.d.ts +87 -0
- package/src/lib/encryption/encryptedMetadataService.d.ts.map +1 -0
- package/src/lib/encryption/encryptedMetadataService.js +224 -0
- package/src/lib/encryption/encryptedMetadataService.js.map +1 -0
- package/src/lib/encryption/encryptionAwareReplication.d.ts +76 -0
- package/src/lib/encryption/encryptionAwareReplication.d.ts.map +1 -0
- package/src/lib/encryption/encryptionAwareReplication.js +116 -0
- package/src/lib/encryption/encryptionAwareReplication.js.map +1 -0
- package/src/lib/encryption/errors.d.ts +49 -0
- package/src/lib/encryption/errors.d.ts.map +1 -0
- package/src/lib/encryption/errors.js +80 -0
- package/src/lib/encryption/errors.js.map +1 -0
- package/src/lib/encryption/index.d.ts +6 -0
- package/src/lib/encryption/index.d.ts.map +1 -0
- package/src/lib/encryption/index.js +9 -0
- package/src/lib/encryption/index.js.map +1 -0
- package/src/lib/encryption/poolEncryptionService.d.ts +94 -0
- package/src/lib/encryption/poolEncryptionService.d.ts.map +1 -0
- package/src/lib/encryption/poolEncryptionService.js +252 -0
- package/src/lib/encryption/poolEncryptionService.js.map +1 -0
- package/src/lib/encryption/poolKeyManager.d.ts +82 -0
- package/src/lib/encryption/poolKeyManager.d.ts.map +1 -0
- package/src/lib/encryption/poolKeyManager.js +156 -0
- package/src/lib/encryption/poolKeyManager.js.map +1 -0
- package/src/lib/environment.d.ts +3 -0
- package/src/lib/environment.d.ts.map +1 -1
- package/src/lib/environment.js +5 -0
- package/src/lib/environment.js.map +1 -1
- package/src/lib/interfaces/environment.d.ts +7 -1
- package/src/lib/interfaces/environment.d.ts.map +1 -1
- package/src/lib/interfaces/index.d.ts +0 -1
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/requests/getBlockDataRequest.d.ts +12 -0
- package/src/lib/interfaces/requests/getBlockDataRequest.d.ts.map +1 -0
- package/src/lib/interfaces/{blockStore.js → requests/getBlockDataRequest.js} +1 -1
- package/src/lib/interfaces/requests/getBlockDataRequest.js.map +1 -0
- package/src/lib/interfaces/requests/index.d.ts +1 -0
- package/src/lib/interfaces/requests/index.d.ts.map +1 -1
- package/src/lib/routers/api.d.ts +54 -1
- package/src/lib/routers/api.d.ts.map +1 -1
- package/src/lib/routers/api.js +77 -0
- package/src/lib/routers/api.js.map +1 -1
- package/src/lib/services/blockStore.d.ts +5 -2
- package/src/lib/services/blockStore.d.ts.map +1 -1
- package/src/lib/services/blockStore.js +4 -0
- package/src/lib/services/blockStore.js.map +1 -1
- package/src/lib/services/brightpass/auditLogger.d.ts +77 -0
- package/src/lib/services/brightpass/auditLogger.d.ts.map +1 -0
- package/src/lib/services/brightpass/auditLogger.js +184 -0
- package/src/lib/services/brightpass/auditLogger.js.map +1 -0
- package/src/lib/services/brightpass/vaultEncryption.d.ts +82 -0
- package/src/lib/services/brightpass/vaultEncryption.d.ts.map +1 -0
- package/src/lib/services/brightpass/vaultEncryption.js +144 -0
- package/src/lib/services/brightpass/vaultEncryption.js.map +1 -0
- package/src/lib/services/brightpass.d.ts +294 -0
- package/src/lib/services/brightpass.d.ts.map +1 -0
- package/src/lib/services/brightpass.js +1260 -0
- package/src/lib/services/brightpass.js.map +1 -0
- package/src/lib/services/eventNotificationSystem.d.ts +69 -3
- package/src/lib/services/eventNotificationSystem.d.ts.map +1 -1
- package/src/lib/services/eventNotificationSystem.js +200 -0
- package/src/lib/services/eventNotificationSystem.js.map +1 -1
- package/src/lib/services/expirationScheduler.d.ts +90 -0
- package/src/lib/services/expirationScheduler.d.ts.map +1 -0
- package/src/lib/services/expirationScheduler.js +131 -0
- package/src/lib/services/expirationScheduler.js.map +1 -0
- package/src/lib/services/fecUsageExample.d.ts +2 -2
- package/src/lib/services/index.d.ts +2 -0
- package/src/lib/services/index.d.ts.map +1 -1
- package/src/lib/services/index.js +2 -0
- package/src/lib/services/index.js.map +1 -1
- package/src/lib/services/paginationService.d.ts +18 -0
- package/src/lib/services/paginationService.d.ts.map +1 -0
- package/src/lib/services/paginationService.js +32 -0
- package/src/lib/services/paginationService.js.map +1 -0
- package/src/lib/services/presenceService.d.ts +76 -0
- package/src/lib/services/presenceService.d.ts.map +1 -0
- package/src/lib/services/presenceService.js +143 -0
- package/src/lib/services/presenceService.js.map +1 -0
- package/src/lib/services/wireConversationPromotion.d.ts +23 -0
- package/src/lib/services/wireConversationPromotion.d.ts.map +1 -0
- package/src/lib/services/wireConversationPromotion.js +26 -0
- package/src/lib/services/wireConversationPromotion.js.map +1 -0
- package/src/lib/stores/availabilityAwareBlockStore.d.ts +115 -10
- package/src/lib/stores/availabilityAwareBlockStore.d.ts.map +1 -1
- package/src/lib/stores/availabilityAwareBlockStore.js +267 -23
- package/src/lib/stores/availabilityAwareBlockStore.js.map +1 -1
- package/src/lib/stores/diskBlockAsyncStore.d.ts +81 -2
- package/src/lib/stores/diskBlockAsyncStore.d.ts.map +1 -1
- package/src/lib/stores/diskBlockAsyncStore.js +297 -10
- package/src/lib/stores/diskBlockAsyncStore.js.map +1 -1
- package/src/lib/utils/communicationValidation.d.ts +44 -0
- package/src/lib/utils/communicationValidation.d.ts.map +1 -0
- package/src/lib/utils/communicationValidation.js +291 -0
- package/src/lib/utils/communicationValidation.js.map +1 -0
- package/src/lib/utils/emailValidation.d.ts +19 -0
- package/src/lib/utils/emailValidation.d.ts.map +1 -0
- package/src/lib/utils/emailValidation.js +232 -0
- package/src/lib/utils/emailValidation.js.map +1 -0
- package/src/lib/interfaces/blockStore.d.ts +0 -7
- package/src/lib/interfaces/blockStore.d.ts.map +0 -1
- package/src/lib/interfaces/blockStore.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brightchain/brightchain-api-lib",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
5
|
"types": "./src/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@aws-sdk/client-ses": "^3.859.0",
|
|
8
|
-
"@brightchain/brightchain-lib": "0.
|
|
9
|
-
"@digitaldefiance/branded-enum": "^0.0.
|
|
8
|
+
"@brightchain/brightchain-lib": "0.15.0",
|
|
9
|
+
"@digitaldefiance/branded-enum": "^0.0.7",
|
|
10
10
|
"@digitaldefiance/enclave-bridge-client": "^1.1.0",
|
|
11
|
-
"@digitaldefiance/i18n-lib": "^4.
|
|
12
|
-
"@digitaldefiance/node-ecies-lib": "^4.
|
|
11
|
+
"@digitaldefiance/i18n-lib": "^4.5.0",
|
|
12
|
+
"@digitaldefiance/node-ecies-lib": "^4.18.0",
|
|
13
13
|
"@ethereumjs/wallet": "^10.0.0",
|
|
14
14
|
"bip39": "^3.1.0",
|
|
15
15
|
"buffer": "^6.0.3",
|
package/src/index.d.ts
CHANGED
|
@@ -14,9 +14,12 @@ export * from './lib/datastore';
|
|
|
14
14
|
export * from './lib/middlewares';
|
|
15
15
|
export * from './lib/routers';
|
|
16
16
|
export * from './lib/availability';
|
|
17
|
+
export * from './lib/blockFetch';
|
|
17
18
|
export * from './lib/utils/errorResponse';
|
|
18
19
|
export * from './lib/utils/type-converters';
|
|
19
20
|
export type { ClientSession, DefaultBackendIdType, SchemaMap, } from './lib/shared-types';
|
|
21
|
+
export * from './lib/auth';
|
|
22
|
+
export * from './lib/encryption';
|
|
20
23
|
export * from './lib/browserKeyring';
|
|
21
24
|
export * from './lib/nodeKeyring';
|
|
22
25
|
export * from './lib/secureEnclaveKeyring';
|
package/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../brightchain-api-lib/src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAKjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAG9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAE5C,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,SAAS,GACV,MAAM,oBAAoB,CAAC;AAG5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../brightchain-api-lib/src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAKjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAG9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAE5C,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,SAAS,GACV,MAAM,oBAAoB,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
|
package/src/index.js
CHANGED
|
@@ -26,8 +26,13 @@ tslib_1.__exportStar(require("./lib/routers"), exports);
|
|
|
26
26
|
// Note: FEC types (ParityData, FecRecoveryResult, IFecService) are re-exported from brightchain-lib
|
|
27
27
|
// Only export the WASM implementation class with a unique name to avoid conflicts
|
|
28
28
|
tslib_1.__exportStar(require("./lib/availability"), exports);
|
|
29
|
+
tslib_1.__exportStar(require("./lib/blockFetch"), exports);
|
|
29
30
|
tslib_1.__exportStar(require("./lib/utils/errorResponse"), exports);
|
|
30
31
|
tslib_1.__exportStar(require("./lib/utils/type-converters"), exports);
|
|
32
|
+
// Auth exports
|
|
33
|
+
tslib_1.__exportStar(require("./lib/auth"), exports);
|
|
34
|
+
// Encryption exports
|
|
35
|
+
tslib_1.__exportStar(require("./lib/encryption"), exports);
|
|
31
36
|
// Keyring exports
|
|
32
37
|
tslib_1.__exportStar(require("./lib/browserKeyring"), exports);
|
|
33
38
|
tslib_1.__exportStar(require("./lib/nodeKeyring"), exports);
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../brightchain-api-lib/src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,uDAA6B;AAC7B,2DAAiC;AAEjC,mCAAmC;AACnC,yDAA+B;AAE/B,kBAAkB;AAClB,6DAAmC;AACnC,4DAAkC;AAClC,iEAAuC;AACvC,0DAAgC;AAChC,4DAAkC;AAClC,6GAA6G;AAC7G,6DAAmC;AACnC,4DAAkC;AAClC,uDAA6B;AAC7B,2DAAiC;AACjC,iGAAiG;AACjG,+EAA+E;AAC/E,gFAAgF;AAEhF,0DAAgC;AAChC,4DAAkC;AAClC,wDAA8B;AAC9B,oGAAoG;AACpG,kFAAkF;AAClF,6DAAmC;AACnC,oEAA0C;AAC1C,sEAA4C;AAQ5C,kBAAkB;AAClB,+DAAqC;AACrC,4DAAkC;AAClC,qEAA2C;AAC3C,8DAAoC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../brightchain-api-lib/src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AACrC,uDAA6B;AAC7B,2DAAiC;AAEjC,mCAAmC;AACnC,yDAA+B;AAE/B,kBAAkB;AAClB,6DAAmC;AACnC,4DAAkC;AAClC,iEAAuC;AACvC,0DAAgC;AAChC,4DAAkC;AAClC,6GAA6G;AAC7G,6DAAmC;AACnC,4DAAkC;AAClC,uDAA6B;AAC7B,2DAAiC;AACjC,iGAAiG;AACjG,+EAA+E;AAC/E,gFAAgF;AAEhF,0DAAgC;AAChC,4DAAkC;AAClC,wDAA8B;AAC9B,oGAAoG;AACpG,kFAAkF;AAClF,6DAAmC;AACnC,2DAAiC;AACjC,oEAA0C;AAC1C,sEAA4C;AAQ5C,eAAe;AACf,qDAA2B;AAE3B,qBAAqB;AACrB,2DAAiC;AAEjC,kBAAkB;AAClB,+DAAqC;AACrC,4DAAkC;AAClC,qEAA2C;AAC3C,8DAAoC"}
|
package/src/lib/application.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export declare class App<TID extends PlatformID> extends BaseApplication<TID> {
|
|
|
19
19
|
private eventSystem;
|
|
20
20
|
private wsServer;
|
|
21
21
|
private messagePassingService;
|
|
22
|
+
private upnpManager;
|
|
22
23
|
constructor(environment: Environment<TID>);
|
|
23
24
|
start(): Promise<void>;
|
|
24
25
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAY7D,OAAgB,EAAE,WAAW,EAAmC,MAAM,SAAS,CAAC;AAKhF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;GAEG;AACH,qBAAa,GAAG,CAAC,GAAG,SAAS,UAAU,CAAE,SAAQ,eAAe,CAAC,GAAG,CAAC;IACnE,SAAgB,UAAU,EAAE,WAAW,CAAC;IACxC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,WAAW,CAA4B;gBAEnC,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC;IAcnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiLtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkDpC,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAI3C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAI7D;;;OAGG;IACI,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IAI5C;;;OAGG;IACI,cAAc,IAAI,uBAAuB,GAAG,IAAI;IAIvD;;;OAGG;IACI,kBAAkB,IAAI,sBAAsB,GAAG,IAAI;IAI1D;;;;;OAKG;IACI,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAQrE;;;;;OAKG;IACI,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAO/D;;;;;OAKG;IACI,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAQlE;;;;;OAKG;IACI,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;CAMvE"}
|
package/src/lib/application.js
CHANGED
|
@@ -7,6 +7,7 @@ const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
|
|
|
7
7
|
const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
|
|
8
8
|
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
9
9
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
10
|
+
const node_express_suite_2 = require("@digitaldefiance/node-express-suite");
|
|
10
11
|
const express_1 = tslib_1.__importDefault(require("express"));
|
|
11
12
|
const fs_1 = require("fs");
|
|
12
13
|
const https_1 = require("https");
|
|
@@ -36,6 +37,7 @@ class App extends application_base_1.BaseApplication {
|
|
|
36
37
|
this.eventSystem = null;
|
|
37
38
|
this.wsServer = null;
|
|
38
39
|
this.messagePassingService = null;
|
|
40
|
+
this.upnpManager = null;
|
|
39
41
|
this.expressApp = (0, express_1.default)();
|
|
40
42
|
this.server = null;
|
|
41
43
|
this.keyStorage = services_1.SecureKeyStorage.getInstance();
|
|
@@ -116,6 +118,21 @@ class App extends application_base_1.BaseApplication {
|
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
120
|
await Promise.all(serversReady);
|
|
121
|
+
// Initialize UPnP port mapping if enabled (non-fatal on failure)
|
|
122
|
+
try {
|
|
123
|
+
if (this.environment.upnp.enabled) {
|
|
124
|
+
this.upnpManager = new node_express_suite_2.UpnpManager(this.environment.upnp);
|
|
125
|
+
await this.upnpManager.initialize();
|
|
126
|
+
this.services.register('upnpManager', () => this.upnpManager);
|
|
127
|
+
(0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ ready ] UPnP port mapping initialized');
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
(0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ info ] UPnP port mapping disabled');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (upnpErr) {
|
|
134
|
+
console.warn('[ warning ] UPnP initialization failed, continuing without port mapping:', upnpErr);
|
|
135
|
+
}
|
|
119
136
|
this._ready = true;
|
|
120
137
|
}
|
|
121
138
|
catch (err) {
|
|
@@ -127,6 +144,12 @@ class App extends application_base_1.BaseApplication {
|
|
|
127
144
|
}
|
|
128
145
|
}
|
|
129
146
|
async stop() {
|
|
147
|
+
// Shutdown UPnP port mappings first
|
|
148
|
+
if (this.upnpManager) {
|
|
149
|
+
(0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ stopping ] UPnP port mapping');
|
|
150
|
+
await this.upnpManager.shutdown();
|
|
151
|
+
this.upnpManager = null;
|
|
152
|
+
}
|
|
130
153
|
// Close WebSocket server first
|
|
131
154
|
if (this.wsServer) {
|
|
132
155
|
(0, node_express_suite_1.debugLog)(this.environment.debug, 'log', '[ stopping ] WebSocket server');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":";;;;AAAA,kEAUsC;AACtC,wDAA4D;AAE5D,4EAI6C;AAC7C,oEAGyC;AACzC,uDAAuD;AACvD,8DAAgF;AAChF,2BAAkC;AAElC,iCAAqC;AACrC,+BAA+B;AAC/B,yDAAqD;AACrD,2FAAoF;AAEpF,qEAAkE;AAClE,+CAA4C;AAC5C,uCAA0C;AAC1C,uCAA0C;AAC1C,yCAAyE;AACzE,gFAA6E;AAE7E,8EAA2E;AAE3E;;GAEG;AACH,MAAa,GAA4B,SAAQ,kCAAoB;
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/application.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACL-enforced wrappers for availability services (gossip, reconciliation, discovery).
|
|
3
|
+
*
|
|
4
|
+
* These lightweight wrappers use the same ACLProvider interface and PermissionDeniedError
|
|
5
|
+
* from the ACLEnforcedBlockStore, applying permission checks to gossip announcements,
|
|
6
|
+
* reconciliation exchanges, and discovery queries.
|
|
7
|
+
*
|
|
8
|
+
* @see Requirements 11.5, 11.6, 11.7
|
|
9
|
+
*/
|
|
10
|
+
import { ACLProvider } from './aclEnforcedBlockStore';
|
|
11
|
+
/**
|
|
12
|
+
* Filters incoming gossip announcements by checking the announcing node's
|
|
13
|
+
* Write or Replicate permission in the target pool's ACL.
|
|
14
|
+
*
|
|
15
|
+
* @see Requirement 11.5
|
|
16
|
+
*/
|
|
17
|
+
export declare class ACLEnforcedGossipFilter {
|
|
18
|
+
private readonly aclProvider;
|
|
19
|
+
constructor(aclProvider: ACLProvider);
|
|
20
|
+
/**
|
|
21
|
+
* Check whether a gossip announcement from the given node should be accepted
|
|
22
|
+
* for the given pool. The announcing node must have Write or Replicate permission.
|
|
23
|
+
*/
|
|
24
|
+
shouldAcceptAnnouncement(poolId: string, announcingNodeId: string): Promise<boolean>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Wraps reconciliation to verify both the current node and the peer node
|
|
28
|
+
* have Replicate permission in the target pool's ACL.
|
|
29
|
+
*
|
|
30
|
+
* @see Requirement 11.6
|
|
31
|
+
*/
|
|
32
|
+
export declare class ACLEnforcedReconciliation {
|
|
33
|
+
private readonly aclProvider;
|
|
34
|
+
private readonly currentNodeId;
|
|
35
|
+
constructor(aclProvider: ACLProvider, currentNodeId: string);
|
|
36
|
+
/**
|
|
37
|
+
* Verify that both the current node and the peer have Replicate permission
|
|
38
|
+
* for the given pool. Throws PermissionDeniedError if either lacks permission.
|
|
39
|
+
*/
|
|
40
|
+
verifyReconciliationPermission(poolId: string, peerNodeId: string): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Wraps discovery to verify the querying node has Read permission
|
|
44
|
+
* in the target pool's ACL.
|
|
45
|
+
*
|
|
46
|
+
* @see Requirement 11.7
|
|
47
|
+
*/
|
|
48
|
+
export declare class ACLEnforcedDiscovery {
|
|
49
|
+
private readonly aclProvider;
|
|
50
|
+
constructor(aclProvider: ACLProvider);
|
|
51
|
+
/**
|
|
52
|
+
* Verify that the querying node has Read permission for the given pool.
|
|
53
|
+
* Throws PermissionDeniedError if the node lacks permission.
|
|
54
|
+
*/
|
|
55
|
+
verifyDiscoveryPermission(poolId: string, queryingNodeId: string): Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=aclEnforcedAvailability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aclEnforcedAvailability.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/auth/aclEnforcedAvailability.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAyB,MAAM,yBAAyB,CAAC;AAE7E;;;;;GAKG;AACH,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAErD;;;OAGG;IACG,wBAAwB,CAC5B,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,CAAC;CAOpB;AAED;;;;;GAKG;AACH,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBADb,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,MAAM;IAGxC;;;OAGG;IACG,8BAA8B,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;CAuBjB;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAErD;;;OAGG;IACG,yBAAyB,CAC7B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;CAYjB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ACL-enforced wrappers for availability services (gossip, reconciliation, discovery).
|
|
4
|
+
*
|
|
5
|
+
* These lightweight wrappers use the same ACLProvider interface and PermissionDeniedError
|
|
6
|
+
* from the ACLEnforcedBlockStore, applying permission checks to gossip announcements,
|
|
7
|
+
* reconciliation exchanges, and discovery queries.
|
|
8
|
+
*
|
|
9
|
+
* @see Requirements 11.5, 11.6, 11.7
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ACLEnforcedDiscovery = exports.ACLEnforcedReconciliation = exports.ACLEnforcedGossipFilter = void 0;
|
|
13
|
+
const brightchain_lib_1 = require("@brightchain/brightchain-lib");
|
|
14
|
+
const aclEnforcedBlockStore_1 = require("./aclEnforcedBlockStore");
|
|
15
|
+
/**
|
|
16
|
+
* Filters incoming gossip announcements by checking the announcing node's
|
|
17
|
+
* Write or Replicate permission in the target pool's ACL.
|
|
18
|
+
*
|
|
19
|
+
* @see Requirement 11.5
|
|
20
|
+
*/
|
|
21
|
+
class ACLEnforcedGossipFilter {
|
|
22
|
+
constructor(aclProvider) {
|
|
23
|
+
this.aclProvider = aclProvider;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check whether a gossip announcement from the given node should be accepted
|
|
27
|
+
* for the given pool. The announcing node must have Write or Replicate permission.
|
|
28
|
+
*/
|
|
29
|
+
async shouldAcceptAnnouncement(poolId, announcingNodeId) {
|
|
30
|
+
const acl = await this.aclProvider.getACL(poolId);
|
|
31
|
+
return ((0, brightchain_lib_1.hasPermission)(acl, announcingNodeId, brightchain_lib_1.PoolPermission.Write) ||
|
|
32
|
+
(0, brightchain_lib_1.hasPermission)(acl, announcingNodeId, brightchain_lib_1.PoolPermission.Replicate));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.ACLEnforcedGossipFilter = ACLEnforcedGossipFilter;
|
|
36
|
+
/**
|
|
37
|
+
* Wraps reconciliation to verify both the current node and the peer node
|
|
38
|
+
* have Replicate permission in the target pool's ACL.
|
|
39
|
+
*
|
|
40
|
+
* @see Requirement 11.6
|
|
41
|
+
*/
|
|
42
|
+
class ACLEnforcedReconciliation {
|
|
43
|
+
constructor(aclProvider, currentNodeId) {
|
|
44
|
+
this.aclProvider = aclProvider;
|
|
45
|
+
this.currentNodeId = currentNodeId;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Verify that both the current node and the peer have Replicate permission
|
|
49
|
+
* for the given pool. Throws PermissionDeniedError if either lacks permission.
|
|
50
|
+
*/
|
|
51
|
+
async verifyReconciliationPermission(poolId, peerNodeId) {
|
|
52
|
+
const acl = await this.aclProvider.getACL(poolId);
|
|
53
|
+
if (!(0, brightchain_lib_1.hasPermission)(acl, this.currentNodeId, brightchain_lib_1.PoolPermission.Replicate)) {
|
|
54
|
+
const member = acl.members.find((m) => m.nodeId === this.currentNodeId);
|
|
55
|
+
throw new aclEnforcedBlockStore_1.PermissionDeniedError(poolId, this.currentNodeId, brightchain_lib_1.PoolPermission.Replicate, member ? member.permissions : []);
|
|
56
|
+
}
|
|
57
|
+
if (!(0, brightchain_lib_1.hasPermission)(acl, peerNodeId, brightchain_lib_1.PoolPermission.Replicate)) {
|
|
58
|
+
const member = acl.members.find((m) => m.nodeId === peerNodeId);
|
|
59
|
+
throw new aclEnforcedBlockStore_1.PermissionDeniedError(poolId, peerNodeId, brightchain_lib_1.PoolPermission.Replicate, member ? member.permissions : []);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.ACLEnforcedReconciliation = ACLEnforcedReconciliation;
|
|
64
|
+
/**
|
|
65
|
+
* Wraps discovery to verify the querying node has Read permission
|
|
66
|
+
* in the target pool's ACL.
|
|
67
|
+
*
|
|
68
|
+
* @see Requirement 11.7
|
|
69
|
+
*/
|
|
70
|
+
class ACLEnforcedDiscovery {
|
|
71
|
+
constructor(aclProvider) {
|
|
72
|
+
this.aclProvider = aclProvider;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Verify that the querying node has Read permission for the given pool.
|
|
76
|
+
* Throws PermissionDeniedError if the node lacks permission.
|
|
77
|
+
*/
|
|
78
|
+
async verifyDiscoveryPermission(poolId, queryingNodeId) {
|
|
79
|
+
const acl = await this.aclProvider.getACL(poolId);
|
|
80
|
+
if (!(0, brightchain_lib_1.hasPermission)(acl, queryingNodeId, brightchain_lib_1.PoolPermission.Read)) {
|
|
81
|
+
const member = acl.members.find((m) => m.nodeId === queryingNodeId);
|
|
82
|
+
throw new aclEnforcedBlockStore_1.PermissionDeniedError(poolId, queryingNodeId, brightchain_lib_1.PoolPermission.Read, member ? member.permissions : []);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.ACLEnforcedDiscovery = ACLEnforcedDiscovery;
|
|
87
|
+
//# sourceMappingURL=aclEnforcedAvailability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aclEnforcedAvailability.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/auth/aclEnforcedAvailability.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACL-enforced block store wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Wraps an IPooledBlockStore and checks ACL permissions before delegating
|
|
5
|
+
* pool-scoped operations (get, put, delete). This is a lightweight middleware
|
|
6
|
+
* pattern — it only wraps the key operations that need ACL checks.
|
|
7
|
+
*
|
|
8
|
+
* @see Requirements 11.4, 10.3, 10.4
|
|
9
|
+
*/
|
|
10
|
+
import type { BlockStoreOptions, IPoolACL, IPooledBlockStore, PoolId } from '@brightchain/brightchain-lib';
|
|
11
|
+
import { PoolPermission } from '@brightchain/brightchain-lib';
|
|
12
|
+
/**
|
|
13
|
+
* Error thrown when a node lacks the required permission for a pool operation.
|
|
14
|
+
* Includes the required permission, actual permissions, pool ID, and node ID
|
|
15
|
+
* for diagnostic purposes.
|
|
16
|
+
*
|
|
17
|
+
* @see Requirement 10.6
|
|
18
|
+
*/
|
|
19
|
+
export declare class PermissionDeniedError extends Error {
|
|
20
|
+
readonly poolId: string;
|
|
21
|
+
readonly nodeId: string;
|
|
22
|
+
readonly requiredPermission: PoolPermission;
|
|
23
|
+
readonly actualPermissions: PoolPermission[];
|
|
24
|
+
constructor(poolId: string, nodeId: string, requiredPermission: PoolPermission, actualPermissions: PoolPermission[]);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Provider interface for retrieving the ACL for a given pool.
|
|
28
|
+
* Implementations may load ACLs from the block store, cache, or any other source.
|
|
29
|
+
*/
|
|
30
|
+
export interface ACLProvider {
|
|
31
|
+
getACL(poolId: string): Promise<IPoolACL<string>>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Lightweight wrapper around an IPooledBlockStore that enforces ACL permissions
|
|
35
|
+
* before delegating pool-scoped operations.
|
|
36
|
+
*
|
|
37
|
+
* - getFromPool: requires Read permission
|
|
38
|
+
* - putInPool: requires Write permission
|
|
39
|
+
* - deleteFromPool: requires Write permission
|
|
40
|
+
*
|
|
41
|
+
* @see Requirements 11.4, 10.3, 10.4
|
|
42
|
+
*/
|
|
43
|
+
export declare class ACLEnforcedBlockStore {
|
|
44
|
+
private readonly inner;
|
|
45
|
+
private readonly aclProvider;
|
|
46
|
+
private readonly currentNodeId;
|
|
47
|
+
constructor(inner: IPooledBlockStore, aclProvider: ACLProvider, currentNodeId: string);
|
|
48
|
+
/**
|
|
49
|
+
* Retrieve a block from a pool after verifying Read permission.
|
|
50
|
+
*/
|
|
51
|
+
getFromPool(pool: PoolId, hash: string): Promise<Uint8Array>;
|
|
52
|
+
/**
|
|
53
|
+
* Store a block in a pool after verifying Write permission.
|
|
54
|
+
*/
|
|
55
|
+
putInPool(pool: PoolId, data: Uint8Array, options?: BlockStoreOptions): Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Delete a block from a pool after verifying Write permission.
|
|
58
|
+
*/
|
|
59
|
+
deleteFromPool(pool: PoolId, hash: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Check that the current node has the required permission for the given pool.
|
|
62
|
+
* Throws PermissionDeniedError if the permission check fails.
|
|
63
|
+
*/
|
|
64
|
+
private checkPermission;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=aclEnforcedBlockStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aclEnforcedBlockStore.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/auth/aclEnforcedBlockStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,MAAM,EACP,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAiB,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE7E;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;aAE5B,MAAM,EAAE,MAAM;aACd,MAAM,EAAE,MAAM;aACd,kBAAkB,EAAE,cAAc;aAClC,iBAAiB,EAAE,cAAc,EAAE;gBAHnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,cAAc,EAClC,iBAAiB,EAAE,cAAc,EAAE;CAOtD;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;CACnD;AAED;;;;;;;;;GASG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,MAAM;IAGxC;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAKlE;;OAEG;IACG,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC;IAKlB;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D;;;OAGG;YACW,eAAe;CAgB9B"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ACL-enforced block store wrapper.
|
|
4
|
+
*
|
|
5
|
+
* Wraps an IPooledBlockStore and checks ACL permissions before delegating
|
|
6
|
+
* pool-scoped operations (get, put, delete). This is a lightweight middleware
|
|
7
|
+
* pattern — it only wraps the key operations that need ACL checks.
|
|
8
|
+
*
|
|
9
|
+
* @see Requirements 11.4, 10.3, 10.4
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ACLEnforcedBlockStore = exports.PermissionDeniedError = void 0;
|
|
13
|
+
const brightchain_lib_1 = require("@brightchain/brightchain-lib");
|
|
14
|
+
/**
|
|
15
|
+
* Error thrown when a node lacks the required permission for a pool operation.
|
|
16
|
+
* Includes the required permission, actual permissions, pool ID, and node ID
|
|
17
|
+
* for diagnostic purposes.
|
|
18
|
+
*
|
|
19
|
+
* @see Requirement 10.6
|
|
20
|
+
*/
|
|
21
|
+
class PermissionDeniedError extends Error {
|
|
22
|
+
constructor(poolId, nodeId, requiredPermission, actualPermissions) {
|
|
23
|
+
super(`Permission denied: ${requiredPermission} required for pool ${poolId}, node ${nodeId} has [${actualPermissions.join(', ')}]`);
|
|
24
|
+
this.poolId = poolId;
|
|
25
|
+
this.nodeId = nodeId;
|
|
26
|
+
this.requiredPermission = requiredPermission;
|
|
27
|
+
this.actualPermissions = actualPermissions;
|
|
28
|
+
this.name = 'PermissionDeniedError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.PermissionDeniedError = PermissionDeniedError;
|
|
32
|
+
/**
|
|
33
|
+
* Lightweight wrapper around an IPooledBlockStore that enforces ACL permissions
|
|
34
|
+
* before delegating pool-scoped operations.
|
|
35
|
+
*
|
|
36
|
+
* - getFromPool: requires Read permission
|
|
37
|
+
* - putInPool: requires Write permission
|
|
38
|
+
* - deleteFromPool: requires Write permission
|
|
39
|
+
*
|
|
40
|
+
* @see Requirements 11.4, 10.3, 10.4
|
|
41
|
+
*/
|
|
42
|
+
class ACLEnforcedBlockStore {
|
|
43
|
+
constructor(inner, aclProvider, currentNodeId) {
|
|
44
|
+
this.inner = inner;
|
|
45
|
+
this.aclProvider = aclProvider;
|
|
46
|
+
this.currentNodeId = currentNodeId;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Retrieve a block from a pool after verifying Read permission.
|
|
50
|
+
*/
|
|
51
|
+
async getFromPool(pool, hash) {
|
|
52
|
+
await this.checkPermission(pool, brightchain_lib_1.PoolPermission.Read);
|
|
53
|
+
return this.inner.getFromPool(pool, hash);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Store a block in a pool after verifying Write permission.
|
|
57
|
+
*/
|
|
58
|
+
async putInPool(pool, data, options) {
|
|
59
|
+
await this.checkPermission(pool, brightchain_lib_1.PoolPermission.Write);
|
|
60
|
+
return this.inner.putInPool(pool, data, options);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Delete a block from a pool after verifying Write permission.
|
|
64
|
+
*/
|
|
65
|
+
async deleteFromPool(pool, hash) {
|
|
66
|
+
await this.checkPermission(pool, brightchain_lib_1.PoolPermission.Write);
|
|
67
|
+
return this.inner.deleteFromPool(pool, hash);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check that the current node has the required permission for the given pool.
|
|
71
|
+
* Throws PermissionDeniedError if the permission check fails.
|
|
72
|
+
*/
|
|
73
|
+
async checkPermission(poolId, required) {
|
|
74
|
+
const acl = await this.aclProvider.getACL(poolId);
|
|
75
|
+
if (!(0, brightchain_lib_1.hasPermission)(acl, this.currentNodeId, required)) {
|
|
76
|
+
const member = acl.members.find((m) => m.nodeId === this.currentNodeId);
|
|
77
|
+
const actual = member ? member.permissions : [];
|
|
78
|
+
throw new PermissionDeniedError(poolId, this.currentNodeId, required, actual);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.ACLEnforcedBlockStore = ACLEnforcedBlockStore;
|
|
83
|
+
//# sourceMappingURL=aclEnforcedBlockStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aclEnforcedBlockStore.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/auth/aclEnforcedBlockStore.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAQH,kEAA6E;AAE7E;;;;;;GAMG;AACH,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YACkB,MAAc,EACd,MAAc,EACd,kBAAkC,EAClC,iBAAmC;QAEnD,KAAK,CACH,sBAAsB,kBAAkB,sBAAsB,MAAM,UAAU,MAAM,SAAS,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC7H,CAAC;QAPc,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QACd,uBAAkB,GAAlB,kBAAkB,CAAgB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAkB;QAKnD,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAZD,sDAYC;AAUD;;;;;;;;;GASG;AACH,MAAa,qBAAqB;IAChC,YACmB,KAAwB,EACxB,WAAwB,EACxB,aAAqB;QAFrB,UAAK,GAAL,KAAK,CAAmB;QACxB,gBAAW,GAAX,WAAW,CAAa;QACxB,kBAAa,GAAb,aAAa,CAAQ;IACrC,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAAY;QAC1C,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,gCAAc,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,IAAY,EACZ,IAAgB,EAChB,OAA2B;QAE3B,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,gCAAc,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,IAAY;QAC7C,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,gCAAc,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,eAAe,CAC3B,MAAc,EACd,QAAwB;QAExB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,IAAA,+BAAa,EAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,qBAAqB,CAC7B,MAAM,EACN,IAAI,CAAC,aAAa,EAClB,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAvDD,sDAuDC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ECDSA Node Authenticator - Node.js implementation of INodeAuthenticator.
|
|
3
|
+
*
|
|
4
|
+
* Uses Node.js `crypto` module for all cryptographic operations:
|
|
5
|
+
* - Challenge: 32 random bytes via crypto.randomBytes
|
|
6
|
+
* - Sign/verify: ECDSA with secp256k1 curve (via JWK key import)
|
|
7
|
+
* - Node ID derivation: SHA-256 hash of public key (hex string)
|
|
8
|
+
*
|
|
9
|
+
* @see Requirements 9.1, 9.2, 9.3, 9.5
|
|
10
|
+
*/
|
|
11
|
+
import type { INodeAuthenticator } from '@brightchain/brightchain-lib';
|
|
12
|
+
/**
|
|
13
|
+
* Optional logger for authentication failures.
|
|
14
|
+
* Requirement 9.3: Failed authentication attempts SHALL be logged
|
|
15
|
+
* with the requesting node ID and operation type.
|
|
16
|
+
*/
|
|
17
|
+
export interface AuthFailureLogger {
|
|
18
|
+
logAuthFailure(nodeId: string, operationType: string): void;
|
|
19
|
+
}
|
|
20
|
+
export declare class ECDSANodeAuthenticator implements INodeAuthenticator {
|
|
21
|
+
private readonly logger?;
|
|
22
|
+
constructor(logger?: AuthFailureLogger);
|
|
23
|
+
/** Generate a 32-byte random challenge nonce. */
|
|
24
|
+
createChallenge(): Uint8Array;
|
|
25
|
+
/**
|
|
26
|
+
* Sign a challenge with the node's ECDSA private key (secp256k1).
|
|
27
|
+
* The private key must be a raw 32-byte secp256k1 private key.
|
|
28
|
+
* Returns a DER-encoded ECDSA signature.
|
|
29
|
+
*/
|
|
30
|
+
signChallenge(challenge: Uint8Array, privateKey: Uint8Array): Promise<Uint8Array>;
|
|
31
|
+
/**
|
|
32
|
+
* Verify an ECDSA signature against a public key (secp256k1).
|
|
33
|
+
* Accepts uncompressed (65 bytes) or compressed (33 bytes) keys.
|
|
34
|
+
* Logs authentication failures when a logger is provided (Requirement 9.3).
|
|
35
|
+
*/
|
|
36
|
+
verifySignature(challenge: Uint8Array, signature: Uint8Array, publicKey: Uint8Array): Promise<boolean>;
|
|
37
|
+
/** Derive a node ID from a public key via SHA-256 hash (hex). */
|
|
38
|
+
deriveNodeId(publicKey: Uint8Array): string;
|
|
39
|
+
/** Convert compressed (33-byte) public key to uncompressed (65-byte). */
|
|
40
|
+
private ensureUncompressed;
|
|
41
|
+
/** Build a JWK for a secp256k1 private key. */
|
|
42
|
+
private buildPrivateJWK;
|
|
43
|
+
/** Build a JWK for a secp256k1 public key (uncompressed 65-byte input). */
|
|
44
|
+
private buildPublicJWK;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ecdsaNodeAuthenticator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ecdsaNodeAuthenticator.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/auth/ecdsaNodeAuthenticator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGvE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7D;AAED,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAoB;gBAEhC,MAAM,CAAC,EAAE,iBAAiB;IAItC,iDAAiD;IACjD,eAAe,IAAI,UAAU;IAI7B;;;;OAIG;IACG,aAAa,CACjB,SAAS,EAAE,UAAU,EACrB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,UAAU,CAAC;IActB;;;;OAIG;IACG,eAAe,CACnB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC;IA2BnB,iEAAiE;IACjE,YAAY,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM;IAO3C,yEAAyE;IACzE,OAAO,CAAC,kBAAkB;IAqB1B,+CAA+C;IAC/C,OAAO,CAAC,eAAe;IAevB,2EAA2E;IAC3E,OAAO,CAAC,cAAc;CAUvB"}
|