@agirails/sdk 2.6.0 → 3.0.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/README.md +1 -1
- package/bin/agirails +10 -0
- package/dist/ACTPClient.d.ts +9 -4
- package/dist/ACTPClient.d.ts.map +1 -1
- package/dist/ACTPClient.js +12 -8
- package/dist/ACTPClient.js.map +1 -1
- package/dist/abi/ACTPKernel.json +87 -6
- package/dist/adapters/BaseAdapter.d.ts +3 -3
- package/dist/adapters/BaseAdapter.js +3 -3
- package/dist/adapters/BasicAdapter.d.ts +1 -1
- package/dist/adapters/BasicAdapter.js +2 -2
- package/dist/adapters/BasicAdapter.js.map +1 -1
- package/dist/adapters/StandardAdapter.d.ts +30 -8
- package/dist/adapters/StandardAdapter.d.ts.map +1 -1
- package/dist/adapters/StandardAdapter.js +34 -9
- package/dist/adapters/StandardAdapter.js.map +1 -1
- package/dist/adapters/X402Adapter.d.ts.map +1 -1
- package/dist/adapters/X402Adapter.js +14 -12
- package/dist/adapters/X402Adapter.js.map +1 -1
- package/dist/api/agirailsApp.d.ts +197 -0
- package/dist/api/agirailsApp.d.ts.map +1 -0
- package/dist/api/agirailsApp.js +175 -0
- package/dist/api/agirailsApp.js.map +1 -0
- package/dist/cli/agirails.d.ts +10 -0
- package/dist/cli/agirails.d.ts.map +1 -0
- package/dist/cli/agirails.js +187 -0
- package/dist/cli/agirails.js.map +1 -0
- package/dist/cli/commands/autopublish.d.ts +13 -0
- package/dist/cli/commands/autopublish.d.ts.map +1 -0
- package/dist/cli/commands/autopublish.js +156 -0
- package/dist/cli/commands/autopublish.js.map +1 -0
- package/dist/cli/commands/batch.js +1 -1
- package/dist/cli/commands/claim-code.d.ts +11 -0
- package/dist/cli/commands/claim-code.d.ts.map +1 -0
- package/dist/cli/commands/claim-code.js +160 -0
- package/dist/cli/commands/claim-code.js.map +1 -0
- package/dist/cli/commands/claim.d.ts +17 -0
- package/dist/cli/commands/claim.d.ts.map +1 -0
- package/dist/cli/commands/claim.js +104 -0
- package/dist/cli/commands/claim.js.map +1 -0
- package/dist/cli/commands/config.js +1 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/find.d.ts +23 -0
- package/dist/cli/commands/find.d.ts.map +1 -0
- package/dist/cli/commands/find.js +230 -0
- package/dist/cli/commands/find.js.map +1 -0
- package/dist/cli/commands/health.d.ts +16 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +287 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +42 -13
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/negotiate.d.ts +11 -0
- package/dist/cli/commands/negotiate.d.ts.map +1 -0
- package/dist/cli/commands/negotiate.js +192 -0
- package/dist/cli/commands/negotiate.js.map +1 -0
- package/dist/cli/commands/publish.d.ts.map +1 -1
- package/dist/cli/commands/publish.js +310 -17
- package/dist/cli/commands/publish.js.map +1 -1
- package/dist/cli/commands/pull.d.ts +7 -3
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/commands/pull.js +105 -13
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/receipt.d.ts +31 -0
- package/dist/cli/commands/receipt.d.ts.map +1 -0
- package/dist/cli/commands/receipt.js +92 -0
- package/dist/cli/commands/receipt.js.map +1 -0
- package/dist/cli/commands/test.d.ts +15 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +176 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/index.js +19 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/testjobs/index.d.ts +18 -0
- package/dist/cli/testjobs/index.d.ts.map +1 -0
- package/dist/cli/testjobs/index.js +45 -0
- package/dist/cli/testjobs/index.js.map +1 -0
- package/dist/cli/testjobs/templates/automation.d.ts +3 -0
- package/dist/cli/testjobs/templates/automation.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/automation.js +32 -0
- package/dist/cli/testjobs/templates/automation.js.map +1 -0
- package/dist/cli/testjobs/templates/code-review.d.ts +3 -0
- package/dist/cli/testjobs/templates/code-review.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/code-review.js +27 -0
- package/dist/cli/testjobs/templates/code-review.js.map +1 -0
- package/dist/cli/testjobs/templates/content-writing.d.ts +3 -0
- package/dist/cli/testjobs/templates/content-writing.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/content-writing.js +20 -0
- package/dist/cli/testjobs/templates/content-writing.js.map +1 -0
- package/dist/cli/testjobs/templates/data-analysis.d.ts +3 -0
- package/dist/cli/testjobs/templates/data-analysis.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/data-analysis.js +34 -0
- package/dist/cli/testjobs/templates/data-analysis.js.map +1 -0
- package/dist/cli/testjobs/templates/generic.d.ts +3 -0
- package/dist/cli/testjobs/templates/generic.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/generic.js +17 -0
- package/dist/cli/testjobs/templates/generic.js.map +1 -0
- package/dist/cli/testjobs/templates/security-audit.d.ts +3 -0
- package/dist/cli/testjobs/templates/security-audit.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/security-audit.js +30 -0
- package/dist/cli/testjobs/templates/security-audit.js.map +1 -0
- package/dist/cli/testjobs/templates/testing.d.ts +3 -0
- package/dist/cli/testjobs/templates/testing.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/testing.js +29 -0
- package/dist/cli/testjobs/templates/testing.js.map +1 -0
- package/dist/cli/testjobs/templates/translation.d.ts +3 -0
- package/dist/cli/testjobs/templates/translation.d.ts.map +1 -0
- package/dist/cli/testjobs/templates/translation.js +16 -0
- package/dist/cli/testjobs/templates/translation.js.map +1 -0
- package/dist/cli/testjobs/types.d.ts +16 -0
- package/dist/cli/testjobs/types.d.ts.map +1 -0
- package/dist/cli/testjobs/types.js +8 -0
- package/dist/cli/testjobs/types.js.map +1 -0
- package/dist/cli/utils/client.js +1 -1
- package/dist/cli/utils/client.js.map +1 -1
- package/dist/cli/utils/config.d.ts +12 -0
- package/dist/cli/utils/config.d.ts.map +1 -1
- package/dist/cli/utils/config.js +29 -2
- package/dist/cli/utils/config.js.map +1 -1
- package/dist/config/agirailsmd.d.ts +1 -1
- package/dist/config/agirailsmd.d.ts.map +1 -1
- package/dist/config/agirailsmd.js +3 -0
- package/dist/config/agirailsmd.js.map +1 -1
- package/dist/config/agirailsmdV4.d.ts +82 -0
- package/dist/config/agirailsmdV4.d.ts.map +1 -0
- package/dist/config/agirailsmdV4.js +254 -0
- package/dist/config/agirailsmdV4.js.map +1 -0
- package/dist/config/defaults.d.ts +50 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +77 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/networks.d.ts +1 -0
- package/dist/config/networks.d.ts.map +1 -1
- package/dist/config/networks.js +16 -13
- package/dist/config/networks.js.map +1 -1
- package/dist/config/publishPipeline.d.ts.map +1 -1
- package/dist/config/publishPipeline.js +4 -0
- package/dist/config/publishPipeline.js.map +1 -1
- package/dist/config/slugUtils.d.ts +28 -0
- package/dist/config/slugUtils.d.ts.map +1 -0
- package/dist/config/slugUtils.js +51 -0
- package/dist/config/slugUtils.js.map +1 -0
- package/dist/level0/ServiceDirectory.d.ts +6 -6
- package/dist/level0/ServiceDirectory.js +11 -11
- package/dist/level0/ServiceDirectory.js.map +1 -1
- package/dist/level1/Agent.d.ts +10 -10
- package/dist/level1/Agent.d.ts.map +1 -1
- package/dist/level1/Agent.js +45 -29
- package/dist/level1/Agent.js.map +1 -1
- package/dist/level1/pricing/PriceCalculator.js +2 -2
- package/dist/level1/pricing/PriceCalculator.js.map +1 -1
- package/dist/negotiation/BuyerOrchestrator.d.ts +108 -0
- package/dist/negotiation/BuyerOrchestrator.d.ts.map +1 -0
- package/dist/negotiation/BuyerOrchestrator.js +377 -0
- package/dist/negotiation/BuyerOrchestrator.js.map +1 -0
- package/dist/negotiation/DecisionEngine.d.ts +44 -0
- package/dist/negotiation/DecisionEngine.d.ts.map +1 -0
- package/dist/negotiation/DecisionEngine.js +116 -0
- package/dist/negotiation/DecisionEngine.js.map +1 -0
- package/dist/negotiation/PolicyEngine.d.ts +126 -0
- package/dist/negotiation/PolicyEngine.d.ts.map +1 -0
- package/dist/negotiation/PolicyEngine.js +265 -0
- package/dist/negotiation/PolicyEngine.js.map +1 -0
- package/dist/negotiation/SessionStore.d.ts +57 -0
- package/dist/negotiation/SessionStore.d.ts.map +1 -0
- package/dist/negotiation/SessionStore.js +179 -0
- package/dist/negotiation/SessionStore.js.map +1 -0
- package/dist/negotiation/index.d.ts +9 -0
- package/dist/negotiation/index.d.ts.map +1 -0
- package/dist/negotiation/index.js +12 -0
- package/dist/negotiation/index.js.map +1 -0
- package/dist/protocol/ACTPKernel.d.ts +32 -4
- package/dist/protocol/ACTPKernel.d.ts.map +1 -1
- package/dist/protocol/ACTPKernel.js +70 -16
- package/dist/protocol/ACTPKernel.js.map +1 -1
- package/dist/protocol/AgentRegistry.js +2 -2
- package/dist/protocol/AgentRegistry.js.map +1 -1
- package/dist/protocol/DIDResolver.js +2 -2
- package/dist/protocol/DIDResolver.js.map +1 -1
- package/dist/protocol/EASHelper.d.ts +2 -2
- package/dist/protocol/EASHelper.js +5 -5
- package/dist/protocol/EASHelper.js.map +1 -1
- package/dist/protocol/EscrowVault.d.ts +2 -2
- package/dist/protocol/EscrowVault.js +4 -4
- package/dist/protocol/EscrowVault.js.map +1 -1
- package/dist/protocol/EventMonitor.d.ts +4 -4
- package/dist/protocol/EventMonitor.js +5 -5
- package/dist/protocol/EventMonitor.js.map +1 -1
- package/dist/protocol/MessageSigner.d.ts +5 -5
- package/dist/protocol/MessageSigner.js +8 -8
- package/dist/protocol/MessageSigner.js.map +1 -1
- package/dist/protocol/ProofGenerator.d.ts +4 -4
- package/dist/protocol/ProofGenerator.js +6 -6
- package/dist/protocol/ProofGenerator.js.map +1 -1
- package/dist/runtime/BlockchainRuntime.d.ts +24 -14
- package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
- package/dist/runtime/BlockchainRuntime.js +60 -45
- package/dist/runtime/BlockchainRuntime.js.map +1 -1
- package/dist/runtime/IACTPRuntime.d.ts +12 -1
- package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.d.ts +22 -9
- package/dist/runtime/MockRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.js +76 -24
- package/dist/runtime/MockRuntime.js.map +1 -1
- package/dist/runtime/MockStateManager.js +2 -2
- package/dist/runtime/MockStateManager.js.map +1 -1
- package/dist/runtime/types/MockState.d.ts +1 -1
- package/dist/types/erc8004.d.ts +2 -2
- package/dist/types/erc8004.d.ts.map +1 -1
- package/dist/types/erc8004.js +4 -1
- package/dist/types/erc8004.js.map +1 -1
- package/dist/types/state.d.ts +1 -1
- package/dist/types/state.js +1 -1
- package/dist/types/transaction.d.ts +4 -0
- package/dist/types/transaction.d.ts.map +1 -1
- package/dist/types/x402.d.ts +17 -9
- package/dist/types/x402.d.ts.map +1 -1
- package/dist/types/x402.js +9 -9
- package/dist/types/x402.js.map +1 -1
- package/dist/utils/ErrorRecoveryGuide.d.ts +1 -1
- package/dist/utils/ErrorRecoveryGuide.js +1 -1
- package/dist/utils/Helpers.d.ts +6 -6
- package/dist/utils/Helpers.js +7 -7
- package/dist/utils/Helpers.js.map +1 -1
- package/dist/utils/IPFSClient.d.ts +7 -7
- package/dist/utils/IPFSClient.js +9 -9
- package/dist/utils/IPFSClient.js.map +1 -1
- package/dist/utils/Logger.d.ts +4 -4
- package/dist/utils/Logger.js +8 -8
- package/dist/utils/Logger.js.map +1 -1
- package/dist/utils/NonceManager.d.ts +9 -9
- package/dist/utils/NonceManager.js +19 -19
- package/dist/utils/NonceManager.js.map +1 -1
- package/dist/utils/RateLimiter.d.ts +10 -10
- package/dist/utils/RateLimiter.d.ts.map +1 -1
- package/dist/utils/RateLimiter.js +22 -22
- package/dist/utils/RateLimiter.js.map +1 -1
- package/dist/utils/ReceivedNonceTracker.d.ts +10 -10
- package/dist/utils/ReceivedNonceTracker.js +20 -20
- package/dist/utils/ReceivedNonceTracker.js.map +1 -1
- package/dist/utils/SDKLifecycle.d.ts +3 -3
- package/dist/utils/SDKLifecycle.js +7 -7
- package/dist/utils/SDKLifecycle.js.map +1 -1
- package/dist/utils/SecureNonce.d.ts +1 -1
- package/dist/utils/SecureNonce.js +1 -1
- package/dist/utils/Semaphore.d.ts +2 -2
- package/dist/utils/Semaphore.js +2 -2
- package/dist/utils/UsedAttestationTracker.d.ts +13 -13
- package/dist/utils/UsedAttestationTracker.js +20 -20
- package/dist/utils/UsedAttestationTracker.js.map +1 -1
- package/dist/utils/security.d.ts +3 -3
- package/dist/utils/security.js +4 -4
- package/dist/utils/security.js.map +1 -1
- package/dist/utils/validation.d.ts +4 -4
- package/dist/utils/validation.js +9 -9
- package/dist/utils/validation.js.map +1 -1
- package/dist/wallet/AutoWalletProvider.d.ts.map +1 -1
- package/dist/wallet/AutoWalletProvider.js +2 -1
- package/dist/wallet/AutoWalletProvider.js.map +1 -1
- package/dist/wallet/IWalletProvider.d.ts +2 -0
- package/dist/wallet/IWalletProvider.d.ts.map +1 -1
- package/dist/wallet/aa/TransactionBatcher.d.ts +22 -2
- package/dist/wallet/aa/TransactionBatcher.d.ts.map +1 -1
- package/dist/wallet/aa/TransactionBatcher.js +51 -9
- package/dist/wallet/aa/TransactionBatcher.js.map +1 -1
- package/package.json +6 -12
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Tracks nonces per DID + message type for AIP-4 delivery proofs
|
|
5
5
|
* Reference: AIP-4 §3.2 (nonce field requirement)
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* Security notes:
|
|
8
8
|
* - C-2: Added atomic nonce allocation with locking
|
|
9
9
|
* - H-1: Added persistent nonce storage option
|
|
10
10
|
* - H-5: Added nonce upper bound validation
|
|
@@ -15,7 +15,7 @@ const fsSafe_1 = require("./fsSafe");
|
|
|
15
15
|
const Logger_1 = require("./Logger");
|
|
16
16
|
/**
|
|
17
17
|
* Maximum allowed nonce value.
|
|
18
|
-
*
|
|
18
|
+
*Security: Prevents nonce overflow attacks.
|
|
19
19
|
* Using Number.MAX_SAFE_INTEGER (2^53 - 1) to ensure safe JavaScript integer operations.
|
|
20
20
|
*/
|
|
21
21
|
exports.MAX_NONCE_VALUE = Number.MAX_SAFE_INTEGER;
|
|
@@ -23,7 +23,7 @@ exports.MAX_NONCE_VALUE = Number.MAX_SAFE_INTEGER;
|
|
|
23
23
|
* In-Memory Nonce Manager
|
|
24
24
|
* Simple implementation using Map for per-message-type nonce tracking
|
|
25
25
|
*
|
|
26
|
-
*
|
|
26
|
+
* Security notes:
|
|
27
27
|
* - C-2: Added atomic getAndIncrementNonce() to prevent race conditions
|
|
28
28
|
* - H-5: Added nonce upper bound validation
|
|
29
29
|
*
|
|
@@ -39,12 +39,12 @@ class InMemoryNonceManager {
|
|
|
39
39
|
*/
|
|
40
40
|
constructor(initialNonces) {
|
|
41
41
|
this.nonces = new Map();
|
|
42
|
-
//
|
|
42
|
+
// Security: Mutex for atomic nonce operations
|
|
43
43
|
// Store both the promise and its resolver for proper lock release
|
|
44
44
|
this.locks = new Map();
|
|
45
45
|
if (initialNonces) {
|
|
46
46
|
Object.entries(initialNonces).forEach(([messageType, nonce]) => {
|
|
47
|
-
//
|
|
47
|
+
// Security: Validate initial nonces
|
|
48
48
|
if (nonce > exports.MAX_NONCE_VALUE) {
|
|
49
49
|
throw new Error(`Initial nonce ${nonce} for ${messageType} exceeds maximum allowed value ${exports.MAX_NONCE_VALUE}`);
|
|
50
50
|
}
|
|
@@ -53,7 +53,7 @@ class InMemoryNonceManager {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
56
|
+
*Security: Acquire lock for message type
|
|
57
57
|
* Ensures atomic nonce operations.
|
|
58
58
|
*
|
|
59
59
|
* FIXED: Previous implementation had a deadlock bug where:
|
|
@@ -78,7 +78,7 @@ class InMemoryNonceManager {
|
|
|
78
78
|
this.locks.set(messageType, { promise: lockPromise, resolve: resolver });
|
|
79
79
|
}
|
|
80
80
|
/**
|
|
81
|
-
*
|
|
81
|
+
*Security: Release lock for message type
|
|
82
82
|
*
|
|
83
83
|
* FIXED: Now properly resolves the Promise before deleting,
|
|
84
84
|
* so any waiting acquireLock() calls can proceed.
|
|
@@ -98,7 +98,7 @@ class InMemoryNonceManager {
|
|
|
98
98
|
getNextNonce(messageType) {
|
|
99
99
|
const current = this.nonces.get(messageType) || 0;
|
|
100
100
|
const next = current + 1;
|
|
101
|
-
//
|
|
101
|
+
// Security: Check upper bound
|
|
102
102
|
if (next > exports.MAX_NONCE_VALUE) {
|
|
103
103
|
throw new Error(`Nonce overflow: next nonce ${next} exceeds maximum allowed value ${exports.MAX_NONCE_VALUE}. ` +
|
|
104
104
|
`Consider resetting nonces or using a larger storage type.`);
|
|
@@ -106,7 +106,7 @@ class InMemoryNonceManager {
|
|
|
106
106
|
return next;
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
|
-
*
|
|
109
|
+
*Security: Atomic get-and-increment nonce
|
|
110
110
|
* Returns the next nonce and records it atomically to prevent race conditions.
|
|
111
111
|
*
|
|
112
112
|
* @param messageType - Message type identifier
|
|
@@ -117,7 +117,7 @@ class InMemoryNonceManager {
|
|
|
117
117
|
try {
|
|
118
118
|
const current = this.nonces.get(messageType) || 0;
|
|
119
119
|
const next = current + 1;
|
|
120
|
-
//
|
|
120
|
+
// Security: Check upper bound
|
|
121
121
|
if (next > exports.MAX_NONCE_VALUE) {
|
|
122
122
|
throw new Error(`Nonce overflow: next nonce ${next} exceeds maximum allowed value ${exports.MAX_NONCE_VALUE}`);
|
|
123
123
|
}
|
|
@@ -135,7 +135,7 @@ class InMemoryNonceManager {
|
|
|
135
135
|
*/
|
|
136
136
|
recordNonce(messageType, nonce) {
|
|
137
137
|
const current = this.nonces.get(messageType) || 0;
|
|
138
|
-
//
|
|
138
|
+
// Security: Check upper bound
|
|
139
139
|
if (nonce > exports.MAX_NONCE_VALUE) {
|
|
140
140
|
throw new Error(`Nonce ${nonce} exceeds maximum allowed value ${exports.MAX_NONCE_VALUE}`);
|
|
141
141
|
}
|
|
@@ -311,8 +311,8 @@ exports.DIDScopedNonceManager = DIDScopedNonceManager;
|
|
|
311
311
|
/**
|
|
312
312
|
* File-based Nonce Manager for Persistent Storage
|
|
313
313
|
*
|
|
314
|
-
*
|
|
315
|
-
*
|
|
314
|
+
*Security: Persists nonces to disk to survive process restarts.
|
|
315
|
+
*Security: File locking to prevent concurrent write corruption.
|
|
316
316
|
* Uses atomic file writes (temp file + rename) for crash safety.
|
|
317
317
|
*
|
|
318
318
|
* @module utils/NonceManager
|
|
@@ -325,7 +325,7 @@ class FileBasedNonceManager {
|
|
|
325
325
|
constructor(stateDirectory) {
|
|
326
326
|
this.fs = require('fs');
|
|
327
327
|
this.path = require('path');
|
|
328
|
-
//
|
|
328
|
+
// Security: File locking to prevent race conditions
|
|
329
329
|
this.lockfile = require('proper-lockfile');
|
|
330
330
|
// Ensure .actp directory exists
|
|
331
331
|
const actpDir = this.path.join(stateDirectory, '.actp');
|
|
@@ -362,14 +362,14 @@ class FileBasedNonceManager {
|
|
|
362
362
|
/**
|
|
363
363
|
* Save nonces to file atomically with file locking
|
|
364
364
|
*
|
|
365
|
-
*
|
|
365
|
+
*Security: File locking prevents concurrent write corruption
|
|
366
366
|
*/
|
|
367
367
|
async saveToFile() {
|
|
368
368
|
const data = this.inMemory.getAllNonces();
|
|
369
369
|
const tempPath = `${this.filePath}.tmp`;
|
|
370
|
-
//
|
|
370
|
+
// Security: Ensure file exists before locking (proper-lockfile requirement)
|
|
371
371
|
(0, fsSafe_1.ensureSafeFile)(this.filePath, '{}', 0o644);
|
|
372
|
-
//
|
|
372
|
+
// Security: Acquire file lock before writing
|
|
373
373
|
let release = null;
|
|
374
374
|
try {
|
|
375
375
|
release = await this.lockfile.lock(this.filePath, {
|
|
@@ -417,7 +417,7 @@ class FileBasedNonceManager {
|
|
|
417
417
|
*/
|
|
418
418
|
async getAndIncrementNonce(messageType) {
|
|
419
419
|
const nonce = await this.inMemory.getAndIncrementNonce(messageType);
|
|
420
|
-
//
|
|
420
|
+
// Security: saveToFile is now async
|
|
421
421
|
await this.saveToFile();
|
|
422
422
|
return nonce;
|
|
423
423
|
}
|
|
@@ -467,7 +467,7 @@ exports.FileBasedNonceManager = FileBasedNonceManager;
|
|
|
467
467
|
* ```
|
|
468
468
|
*/
|
|
469
469
|
function createNonceManager(options) {
|
|
470
|
-
//
|
|
470
|
+
// Security: Support persistent storage
|
|
471
471
|
if (options?.stateDirectory) {
|
|
472
472
|
return new FileBasedNonceManager(options.stateDirectory);
|
|
473
473
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NonceManager.js","sourceRoot":"","sources":["../../src/utils/NonceManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NonceManager.js","sourceRoot":"","sources":["../../src/utils/NonceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* RateLimiter - Prevents excessive API/RPC calls
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
*Security: Rate limiting to prevent:
|
|
5
5
|
* - API rate limit exhaustion
|
|
6
6
|
* - Self-inflicted DoS
|
|
7
7
|
* - Excessive RPC costs
|
|
@@ -88,7 +88,7 @@ export interface CircuitBreakerConfig {
|
|
|
88
88
|
recoveryTimeout: number;
|
|
89
89
|
/** Number of successes in half-open needed to close circuit */
|
|
90
90
|
successThreshold?: number;
|
|
91
|
-
/**
|
|
91
|
+
/**Security: Timeout for half-open test (ms). If no result reported, auto-reset. Default: 30000 */
|
|
92
92
|
halfOpenTestTimeout?: number;
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
@@ -105,7 +105,7 @@ export interface CircuitBreakerResult {
|
|
|
105
105
|
/**
|
|
106
106
|
* Circuit Breaker - Prevents cascading failures
|
|
107
107
|
*
|
|
108
|
-
*
|
|
108
|
+
*Security: Circuit breaker to:
|
|
109
109
|
* - Prevent repeated calls to failing services
|
|
110
110
|
* - Allow systems to recover
|
|
111
111
|
* - Provide graceful degradation
|
|
@@ -151,22 +151,22 @@ export declare class CircuitBreaker {
|
|
|
151
151
|
/**
|
|
152
152
|
* Check if operation can be executed
|
|
153
153
|
*
|
|
154
|
-
*
|
|
154
|
+
*Security: In half-open state, only allow ONE request
|
|
155
155
|
* at a time to prevent overwhelming a recovering service.
|
|
156
156
|
*/
|
|
157
157
|
canExecute(): CircuitBreakerResult;
|
|
158
158
|
/**
|
|
159
159
|
* Record a successful operation
|
|
160
160
|
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
161
|
+
*Security: Clears test-in-progress flag
|
|
162
|
+
*Security: Clears test start time
|
|
163
163
|
*/
|
|
164
164
|
recordSuccess(): void;
|
|
165
165
|
/**
|
|
166
166
|
* Record a failed operation
|
|
167
167
|
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
168
|
+
*Security: Clears test-in-progress flag
|
|
169
|
+
*Security: Clears test start time
|
|
170
170
|
*/
|
|
171
171
|
recordFailure(): void;
|
|
172
172
|
/**
|
|
@@ -185,8 +185,8 @@ export declare class CircuitBreaker {
|
|
|
185
185
|
/**
|
|
186
186
|
* Manually reset the circuit breaker
|
|
187
187
|
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
188
|
+
*Security: Also clears test-in-progress flag
|
|
189
|
+
*Security: Also clears test start time
|
|
190
190
|
*/
|
|
191
191
|
reset(): void;
|
|
192
192
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/utils/RateLimiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;gBAEzC,MAAM,EAAE,iBAAiB;IAQrC;;;;OAIG;IACH,UAAU,IAAI,eAAe;IAgC7B;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B;;OAEG;IACH,SAAS,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAiBjE;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,
|
|
1
|
+
{"version":3,"file":"RateLimiter.d.ts","sourceRoot":"","sources":["../../src/utils/RateLimiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;gBAEzC,MAAM,EAAE,iBAAiB;IAQrC;;;;OAIG;IACH,UAAU,IAAI,eAAe;IAgC7B;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B;;OAEG;IACH,SAAS,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAiBjE;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kGAAkG;IAClG,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAIxD,OAAO,CAAC,sBAAsB,CAAS;IAGvC,OAAO,CAAC,qBAAqB,CAAK;gBAEtB,MAAM,EAAE,oBAAoB;IAUxC;;;;;OAKG;IACH,UAAU,IAAI,oBAAoB;IAkElC;;;;;OAKG;IACH,aAAa,IAAI,IAAI;IAkBrB;;;;;OAKG;IACH,aAAa,IAAI,IAAI;IAgBrB;;OAEG;IACH,QAAQ,IAAI,YAAY;IAYxB;;OAEG;IACH,SAAS,IAAI;QACX,KAAK,EAAE,YAAY,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,qBAAqB,EAAE,MAAM,CAAC;KAC/B;IAiBD;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IASb;;;;;OAKG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAmBnD;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAEpC,MAAM,EAAE;QAClB,WAAW,EAAE,iBAAiB,CAAC;QAC/B,cAAc,EAAE,oBAAoB,CAAC;KACtC;IAKD;;OAEG;IACH,UAAU,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAsBnD;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAQlD;;OAEG;IACH,SAAS,IAAI;QACX,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QAClD,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;KACzD;IAOD;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* RateLimiter - Prevents excessive API/RPC calls
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
*Security: Rate limiting to prevent:
|
|
6
6
|
* - API rate limit exhaustion
|
|
7
7
|
* - Self-inflicted DoS
|
|
8
8
|
* - Excessive RPC costs
|
|
@@ -105,7 +105,7 @@ exports.RateLimiter = RateLimiter;
|
|
|
105
105
|
/**
|
|
106
106
|
* Circuit Breaker - Prevents cascading failures
|
|
107
107
|
*
|
|
108
|
-
*
|
|
108
|
+
*Security: Circuit breaker to:
|
|
109
109
|
* - Prevent repeated calls to failing services
|
|
110
110
|
* - Allow systems to recover
|
|
111
111
|
* - Provide graceful degradation
|
|
@@ -145,23 +145,23 @@ class CircuitBreaker {
|
|
|
145
145
|
this.failures = 0;
|
|
146
146
|
this.successes = 0;
|
|
147
147
|
this.lastFailureTime = 0;
|
|
148
|
-
//
|
|
148
|
+
// Security: Track if a test request is in progress
|
|
149
149
|
// Half-open state should only allow ONE request at a time to test service recovery
|
|
150
150
|
this.halfOpenTestInProgress = false;
|
|
151
|
-
//
|
|
151
|
+
// Security: Track when half-open test started for timeout detection
|
|
152
152
|
this.halfOpenTestStartTime = 0;
|
|
153
153
|
this.config = {
|
|
154
154
|
failureThreshold: config.failureThreshold,
|
|
155
155
|
recoveryTimeout: config.recoveryTimeout,
|
|
156
156
|
successThreshold: config.successThreshold ?? 1,
|
|
157
|
-
//
|
|
157
|
+
// Security: Default 30 second timeout for half-open tests
|
|
158
158
|
halfOpenTestTimeout: config.halfOpenTestTimeout ?? 30000,
|
|
159
159
|
};
|
|
160
160
|
}
|
|
161
161
|
/**
|
|
162
162
|
* Check if operation can be executed
|
|
163
163
|
*
|
|
164
|
-
*
|
|
164
|
+
*Security: In half-open state, only allow ONE request
|
|
165
165
|
* at a time to prevent overwhelming a recovering service.
|
|
166
166
|
*/
|
|
167
167
|
canExecute() {
|
|
@@ -178,10 +178,10 @@ class CircuitBreaker {
|
|
|
178
178
|
if (now - this.lastFailureTime >= this.config.recoveryTimeout) {
|
|
179
179
|
this.state = 'half-open';
|
|
180
180
|
this.successes = 0;
|
|
181
|
-
//
|
|
182
|
-
//
|
|
181
|
+
// Security: Removed duplicate assignment (was setting false then true)
|
|
182
|
+
// Security: Mark test as in progress for first allowed request
|
|
183
183
|
this.halfOpenTestInProgress = true;
|
|
184
|
-
//
|
|
184
|
+
// Security: Record when test started for timeout detection
|
|
185
185
|
this.halfOpenTestStartTime = now;
|
|
186
186
|
return {
|
|
187
187
|
allowed: true,
|
|
@@ -195,7 +195,7 @@ class CircuitBreaker {
|
|
|
195
195
|
failures: this.failures,
|
|
196
196
|
};
|
|
197
197
|
case 'half-open':
|
|
198
|
-
//
|
|
198
|
+
// Security: Check if test has timed out (caller never reported result)
|
|
199
199
|
// This prevents the circuit breaker from getting stuck if caller crashes/forgets to report
|
|
200
200
|
if (this.halfOpenTestInProgress && this.halfOpenTestStartTime > 0) {
|
|
201
201
|
const testDuration = now - this.halfOpenTestStartTime;
|
|
@@ -205,7 +205,7 @@ class CircuitBreaker {
|
|
|
205
205
|
this.halfOpenTestStartTime = 0;
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
|
-
//
|
|
208
|
+
// Security: Only allow if no test is in progress
|
|
209
209
|
// This prevents multiple concurrent requests from overwhelming a recovering service
|
|
210
210
|
if (this.halfOpenTestInProgress) {
|
|
211
211
|
return {
|
|
@@ -216,7 +216,7 @@ class CircuitBreaker {
|
|
|
216
216
|
}
|
|
217
217
|
// Mark test as in progress
|
|
218
218
|
this.halfOpenTestInProgress = true;
|
|
219
|
-
//
|
|
219
|
+
// Security: Record when test started
|
|
220
220
|
this.halfOpenTestStartTime = now;
|
|
221
221
|
return {
|
|
222
222
|
allowed: true,
|
|
@@ -228,14 +228,14 @@ class CircuitBreaker {
|
|
|
228
228
|
/**
|
|
229
229
|
* Record a successful operation
|
|
230
230
|
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
231
|
+
*Security: Clears test-in-progress flag
|
|
232
|
+
*Security: Clears test start time
|
|
233
233
|
*/
|
|
234
234
|
recordSuccess() {
|
|
235
235
|
if (this.state === 'half-open') {
|
|
236
|
-
//
|
|
236
|
+
// Security: Clear test flag
|
|
237
237
|
this.halfOpenTestInProgress = false;
|
|
238
|
-
//
|
|
238
|
+
// Security: Clear test start time
|
|
239
239
|
this.halfOpenTestStartTime = 0;
|
|
240
240
|
this.successes++;
|
|
241
241
|
if (this.successes >= this.config.successThreshold) {
|
|
@@ -252,16 +252,16 @@ class CircuitBreaker {
|
|
|
252
252
|
/**
|
|
253
253
|
* Record a failed operation
|
|
254
254
|
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
255
|
+
*Security: Clears test-in-progress flag
|
|
256
|
+
*Security: Clears test start time
|
|
257
257
|
*/
|
|
258
258
|
recordFailure() {
|
|
259
259
|
this.failures++;
|
|
260
260
|
this.lastFailureTime = Date.now();
|
|
261
261
|
if (this.state === 'half-open') {
|
|
262
|
-
//
|
|
262
|
+
// Security: Clear test flag before opening
|
|
263
263
|
this.halfOpenTestInProgress = false;
|
|
264
|
-
//
|
|
264
|
+
// Security: Clear test start time
|
|
265
265
|
this.halfOpenTestStartTime = 0;
|
|
266
266
|
// Immediately open on failure in half-open state
|
|
267
267
|
this.state = 'open';
|
|
@@ -305,8 +305,8 @@ class CircuitBreaker {
|
|
|
305
305
|
/**
|
|
306
306
|
* Manually reset the circuit breaker
|
|
307
307
|
*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
308
|
+
*Security: Also clears test-in-progress flag
|
|
309
|
+
*Security: Also clears test start time
|
|
310
310
|
*/
|
|
311
311
|
reset() {
|
|
312
312
|
this.state = 'closed';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/utils/RateLimiter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/utils/RateLimiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,9 +118,9 @@ export declare class InMemoryReceivedNonceTracker implements IReceivedNonceTrack
|
|
|
118
118
|
* - Reject duplicate nonces (replay attack)
|
|
119
119
|
* - Allows non-sequential nonces (nonce gaps are OK)
|
|
120
120
|
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
121
|
+
*Security: Max size enforcement to prevent memory exhaustion
|
|
122
|
+
*Security: Global total entries limit to prevent DoS via many sender combinations
|
|
123
|
+
*Security: Rate limiting per sender to prevent flood attacks
|
|
124
124
|
*
|
|
125
125
|
* Trade-off:
|
|
126
126
|
* - Higher memory usage (stores every nonce)
|
|
@@ -143,32 +143,32 @@ export declare class SetBasedReceivedNonceTracker implements IReceivedNonceTrack
|
|
|
143
143
|
*/
|
|
144
144
|
constructor(maxSizePerType?: number, maxTotalEntries?: number, maxNoncesPerMinute?: number);
|
|
145
145
|
/**
|
|
146
|
-
*
|
|
146
|
+
*Security: Check rate limit for sender
|
|
147
147
|
* @param sender - Sender DID
|
|
148
148
|
* @returns true if rate limit exceeded
|
|
149
149
|
*/
|
|
150
150
|
private checkRateLimit;
|
|
151
151
|
/**
|
|
152
|
-
*
|
|
152
|
+
*Security: Periodic cleanup of rate limit state
|
|
153
153
|
* Removes expired rate limit entries (older than 5 minutes)
|
|
154
154
|
*/
|
|
155
155
|
private cleanupRateLimitState;
|
|
156
156
|
/**
|
|
157
157
|
* Validate and record a received nonce
|
|
158
158
|
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
159
|
+
*Security: Automatic cleanup when max size reached
|
|
160
|
+
*Security: Global limit check to prevent DoS
|
|
161
|
+
*Security: Rate limiting per sender (max 100 nonces/minute)
|
|
162
162
|
*/
|
|
163
163
|
validateAndRecord(sender: string, messageType: string, nonce: string): NonceValidationResult;
|
|
164
164
|
/**
|
|
165
165
|
* Get number of sender+messageType combinations (for monitoring)
|
|
166
|
-
*
|
|
166
|
+
*Security: Monitoring method
|
|
167
167
|
*/
|
|
168
168
|
private getCombinationCount;
|
|
169
169
|
/**
|
|
170
170
|
* Get memory usage statistics
|
|
171
|
-
*
|
|
171
|
+
*Security: Monitoring method for DoS detection
|
|
172
172
|
*/
|
|
173
173
|
getMemoryUsage(): {
|
|
174
174
|
totalEntries: number;
|
|
@@ -159,9 +159,9 @@ exports.InMemoryReceivedNonceTracker = InMemoryReceivedNonceTracker;
|
|
|
159
159
|
* - Reject duplicate nonces (replay attack)
|
|
160
160
|
* - Allows non-sequential nonces (nonce gaps are OK)
|
|
161
161
|
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
162
|
+
*Security: Max size enforcement to prevent memory exhaustion
|
|
163
|
+
*Security: Global total entries limit to prevent DoS via many sender combinations
|
|
164
|
+
*Security: Rate limiting per sender to prevent flood attacks
|
|
165
165
|
*
|
|
166
166
|
* Trade-off:
|
|
167
167
|
* - Higher memory usage (stores every nonce)
|
|
@@ -179,7 +179,7 @@ class SetBasedReceivedNonceTracker {
|
|
|
179
179
|
// Map: sender -> messageType -> Set of used nonces
|
|
180
180
|
this.usedNonces = new Map();
|
|
181
181
|
this.totalEntries = 0;
|
|
182
|
-
//
|
|
182
|
+
// Security: Rate limiting per sender
|
|
183
183
|
// Map: sender -> { count: number, windowStart: number }
|
|
184
184
|
this.rateLimitState = new Map();
|
|
185
185
|
this.rateLimitWindowMs = 60000; // 1 minute window
|
|
@@ -197,7 +197,7 @@ class SetBasedReceivedNonceTracker {
|
|
|
197
197
|
this.maxNoncesPerMinute = maxNoncesPerMinute;
|
|
198
198
|
}
|
|
199
199
|
/**
|
|
200
|
-
*
|
|
200
|
+
*Security: Check rate limit for sender
|
|
201
201
|
* @param sender - Sender DID
|
|
202
202
|
* @returns true if rate limit exceeded
|
|
203
203
|
*/
|
|
@@ -221,7 +221,7 @@ class SetBasedReceivedNonceTracker {
|
|
|
221
221
|
return state.count > this.maxNoncesPerMinute;
|
|
222
222
|
}
|
|
223
223
|
/**
|
|
224
|
-
*
|
|
224
|
+
*Security: Periodic cleanup of rate limit state
|
|
225
225
|
* Removes expired rate limit entries (older than 5 minutes)
|
|
226
226
|
*/
|
|
227
227
|
cleanupRateLimitState() {
|
|
@@ -236,9 +236,9 @@ class SetBasedReceivedNonceTracker {
|
|
|
236
236
|
/**
|
|
237
237
|
* Validate and record a received nonce
|
|
238
238
|
*
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
239
|
+
*Security: Automatic cleanup when max size reached
|
|
240
|
+
*Security: Global limit check to prevent DoS
|
|
241
|
+
*Security: Rate limiting per sender (max 100 nonces/minute)
|
|
242
242
|
*/
|
|
243
243
|
validateAndRecord(sender, messageType, nonce) {
|
|
244
244
|
// Validate nonce format
|
|
@@ -249,7 +249,7 @@ class SetBasedReceivedNonceTracker {
|
|
|
249
249
|
receivedNonce: nonce
|
|
250
250
|
};
|
|
251
251
|
}
|
|
252
|
-
//
|
|
252
|
+
// Security: Rate limit check (BEFORE global limit to avoid unnecessary work)
|
|
253
253
|
if (this.checkRateLimit(sender)) {
|
|
254
254
|
return {
|
|
255
255
|
valid: false,
|
|
@@ -260,11 +260,11 @@ class SetBasedReceivedNonceTracker {
|
|
|
260
260
|
receivedNonce: nonce
|
|
261
261
|
};
|
|
262
262
|
}
|
|
263
|
-
//
|
|
263
|
+
// Security: Periodic cleanup every 100 validations (amortized cost)
|
|
264
264
|
if (this.totalEntries % 100 === 0) {
|
|
265
265
|
this.cleanupRateLimitState();
|
|
266
266
|
}
|
|
267
|
-
//
|
|
267
|
+
// Security: Check global limit BEFORE adding
|
|
268
268
|
if (this.totalEntries >= this.maxTotalEntries) {
|
|
269
269
|
return {
|
|
270
270
|
valid: false,
|
|
@@ -294,7 +294,7 @@ class SetBasedReceivedNonceTracker {
|
|
|
294
294
|
receivedNonce: nonce
|
|
295
295
|
};
|
|
296
296
|
}
|
|
297
|
-
//
|
|
297
|
+
// Security: Auto-cleanup if max size per type reached
|
|
298
298
|
if (usedSet.size >= this.maxSizePerType) {
|
|
299
299
|
// Keep only last 80% of entries (sorted by nonce value)
|
|
300
300
|
const keepCount = Math.floor(this.maxSizePerType * 0.8);
|
|
@@ -306,18 +306,18 @@ class SetBasedReceivedNonceTracker {
|
|
|
306
306
|
const removedCount = usedSet.size - keepCount;
|
|
307
307
|
usedSet = new Set(sortedNonces.slice(-keepCount));
|
|
308
308
|
senderNonces.set(messageType, usedSet);
|
|
309
|
-
//
|
|
309
|
+
// Security: Update global counter
|
|
310
310
|
this.totalEntries -= removedCount;
|
|
311
311
|
}
|
|
312
312
|
// Valid nonce - record it
|
|
313
313
|
usedSet.add(nonce);
|
|
314
|
-
//
|
|
314
|
+
// Security: Update global counter
|
|
315
315
|
this.totalEntries++;
|
|
316
316
|
return { valid: true };
|
|
317
317
|
}
|
|
318
318
|
/**
|
|
319
319
|
* Get number of sender+messageType combinations (for monitoring)
|
|
320
|
-
*
|
|
320
|
+
*Security: Monitoring method
|
|
321
321
|
*/
|
|
322
322
|
getCombinationCount() {
|
|
323
323
|
let count = 0;
|
|
@@ -328,7 +328,7 @@ class SetBasedReceivedNonceTracker {
|
|
|
328
328
|
}
|
|
329
329
|
/**
|
|
330
330
|
* Get memory usage statistics
|
|
331
|
-
*
|
|
331
|
+
*Security: Monitoring method for DoS detection
|
|
332
332
|
*/
|
|
333
333
|
getMemoryUsage() {
|
|
334
334
|
return {
|
|
@@ -381,7 +381,7 @@ class SetBasedReceivedNonceTracker {
|
|
|
381
381
|
if (senderNonces) {
|
|
382
382
|
const usedSet = senderNonces.get(messageType);
|
|
383
383
|
if (usedSet) {
|
|
384
|
-
//
|
|
384
|
+
// Security: Update global counter
|
|
385
385
|
this.totalEntries -= usedSet.size;
|
|
386
386
|
}
|
|
387
387
|
senderNonces.delete(messageType);
|
|
@@ -395,7 +395,7 @@ class SetBasedReceivedNonceTracker {
|
|
|
395
395
|
*/
|
|
396
396
|
clearAll() {
|
|
397
397
|
this.usedNonces.clear();
|
|
398
|
-
//
|
|
398
|
+
// Security: Reset global counter
|
|
399
399
|
this.totalEntries = 0;
|
|
400
400
|
}
|
|
401
401
|
/**
|
|
@@ -432,7 +432,7 @@ class SetBasedReceivedNonceTracker {
|
|
|
432
432
|
const removedCount = usedSet.size - keepLast;
|
|
433
433
|
const toKeep = new Set(sortedNonces.slice(-keepLast));
|
|
434
434
|
senderNonces.set(messageType, toKeep);
|
|
435
|
-
//
|
|
435
|
+
// Security: Update global counter
|
|
436
436
|
this.totalEntries -= removedCount;
|
|
437
437
|
}
|
|
438
438
|
}
|