@dynamic-labs-wallet/browser 1.0.14 → 1.0.15
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/index.cjs +186 -49
- package/index.esm.js +186 -49
- package/package.json +3 -3
- package/src/backup/encryption/argon2.d.ts +11 -1
- package/src/backup/encryption/argon2.d.ts.map +1 -1
- package/src/backup/encryption/core.d.ts +6 -2
- package/src/backup/encryption/core.d.ts.map +1 -1
- package/src/client.d.ts +19 -2
- package/src/client.d.ts.map +1 -1
- package/src/services/logger.d.ts.map +1 -1
package/index.cjs
CHANGED
|
@@ -101,32 +101,6 @@ const ARGON2_HASH_LENGTH = 32;
|
|
|
101
101
|
*/ const PBKDF2_ITERATIONS_V1 = 100000;
|
|
102
102
|
const PBKDF2_ITERATIONS_V2 = 1000000;
|
|
103
103
|
|
|
104
|
-
/**
|
|
105
|
-
* Derives a key using Argon2id algorithm
|
|
106
|
-
* @param params - Key derivation parameters
|
|
107
|
-
* @param encryptionConfig - Encryption configuration
|
|
108
|
-
* @returns Promise<CryptoKey>
|
|
109
|
-
*/ const deriveArgon2Key = async ({ password, salt }, encryptionConfig)=>{
|
|
110
|
-
const argon2id = await loadArgon2idWasm();
|
|
111
|
-
const argon2Config = encryptionConfig;
|
|
112
|
-
const passwordBytes = new TextEncoder().encode(password);
|
|
113
|
-
const hash = argon2id({
|
|
114
|
-
password: passwordBytes,
|
|
115
|
-
salt: salt,
|
|
116
|
-
parallelism: argon2Config.parallelism || ARGON2_PARALLELISM,
|
|
117
|
-
passes: argon2Config.iterations,
|
|
118
|
-
memorySize: argon2Config.memorySize || ARGON2_MEMORY_SIZE,
|
|
119
|
-
tagLength: argon2Config.hashLength || ARGON2_HASH_LENGTH
|
|
120
|
-
});
|
|
121
|
-
return crypto.subtle.importKey('raw', new Uint8Array(hash), {
|
|
122
|
-
name: encryptionConfig.algorithm,
|
|
123
|
-
length: encryptionConfig.algorithmLength
|
|
124
|
-
}, false, [
|
|
125
|
-
'encrypt',
|
|
126
|
-
'decrypt'
|
|
127
|
-
]);
|
|
128
|
-
};
|
|
129
|
-
|
|
130
104
|
/**
|
|
131
105
|
* Encryption configuration for each version
|
|
132
106
|
*/ const ENCRYPTION_VERSIONS = {
|
|
@@ -179,6 +153,48 @@ const PBKDF2_ITERATIONS_V2 = 1000000;
|
|
|
179
153
|
return config.keyDerivation === ARGON2_ALGORITHM;
|
|
180
154
|
};
|
|
181
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Derives the raw Argon2id hash bytes for the given params/config.
|
|
158
|
+
*
|
|
159
|
+
* Exposed separately from {@link deriveArgon2Key} for the backup self-test's
|
|
160
|
+
* determinism probe: it lets the caller derive twice from identical inputs and
|
|
161
|
+
* diff the results to detect Argon2id non-determinism (suspected on
|
|
162
|
+
* memory-constrained clients). The raw bytes are AES key material and must
|
|
163
|
+
* never be logged or persisted — keep them in-process.
|
|
164
|
+
*/ const deriveRawArgon2Bytes = async ({ password, salt }, encryptionConfig)=>{
|
|
165
|
+
const argon2id = await loadArgon2idWasm();
|
|
166
|
+
const argon2Config = encryptionConfig;
|
|
167
|
+
const passwordBytes = new TextEncoder().encode(password);
|
|
168
|
+
const hash = argon2id({
|
|
169
|
+
password: passwordBytes,
|
|
170
|
+
salt: salt,
|
|
171
|
+
parallelism: argon2Config.parallelism || ARGON2_PARALLELISM,
|
|
172
|
+
passes: argon2Config.iterations,
|
|
173
|
+
memorySize: argon2Config.memorySize || ARGON2_MEMORY_SIZE,
|
|
174
|
+
tagLength: argon2Config.hashLength || ARGON2_HASH_LENGTH
|
|
175
|
+
});
|
|
176
|
+
return new Uint8Array(hash);
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Derives a key using Argon2id algorithm
|
|
180
|
+
* @param params - Key derivation parameters
|
|
181
|
+
* @param encryptionConfig - Encryption configuration
|
|
182
|
+
* @returns Promise<CryptoKey>
|
|
183
|
+
*/ const deriveArgon2Key = async (params, encryptionConfig, // In-process hook receiving the raw derived bytes (key material — never log).
|
|
184
|
+
// Lets the backup self-test reuse the keys it already derives instead of
|
|
185
|
+
// running extra Argon2 derivations to detect drift.
|
|
186
|
+
onRawKey)=>{
|
|
187
|
+
const hash = await deriveRawArgon2Bytes(params, encryptionConfig);
|
|
188
|
+
onRawKey == null ? void 0 : onRawKey(hash);
|
|
189
|
+
return crypto.subtle.importKey('raw', new Uint8Array(hash), {
|
|
190
|
+
name: encryptionConfig.algorithm,
|
|
191
|
+
length: encryptionConfig.algorithmLength
|
|
192
|
+
}, false, [
|
|
193
|
+
'encrypt',
|
|
194
|
+
'decrypt'
|
|
195
|
+
]);
|
|
196
|
+
};
|
|
197
|
+
|
|
182
198
|
/**
|
|
183
199
|
* Utility functions for encryption operations
|
|
184
200
|
* These functions are separated to avoid circular dependencies
|
|
@@ -253,18 +269,20 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
253
269
|
*/ const isInvalidPasswordError = (error)=>error instanceof Error && error.name === 'OperationError';
|
|
254
270
|
/**
|
|
255
271
|
* Get the appropriate key derivation function based on the encryption config
|
|
256
|
-
*/ const getKey = async (params, encryptionConfig)=>{
|
|
272
|
+
*/ const getKey = async (params, encryptionConfig, onRawKey)=>{
|
|
257
273
|
// Use Argon2 for v3, PBKDF2 for v1 and v2
|
|
258
274
|
if (encryptionConfig.keyDerivation === ARGON2_ALGORITHM) {
|
|
259
|
-
return deriveArgon2Key(params, encryptionConfig);
|
|
275
|
+
return deriveArgon2Key(params, encryptionConfig, onRawKey);
|
|
260
276
|
} else {
|
|
277
|
+
// PBKDF2 derives a non-extractable CryptoKey directly, so raw bytes are
|
|
278
|
+
// unavailable; the hook simply doesn't fire (drift probe is v3-only anyway).
|
|
261
279
|
return derivePBKDF2Key(params, encryptionConfig);
|
|
262
280
|
}
|
|
263
281
|
};
|
|
264
282
|
/**
|
|
265
283
|
* Encrypts data using the specified encryption version.
|
|
266
284
|
* Always uses the latest encryption configuration for new encryptions by default.
|
|
267
|
-
*/ const encryptData = async ({ data, password, version = ENCRYPTION_VERSION_CURRENT })=>{
|
|
285
|
+
*/ const encryptData = async ({ data, password, version = ENCRYPTION_VERSION_CURRENT, onRawKey })=>{
|
|
268
286
|
const encryptionConfig = getEncryptionConfig(version);
|
|
269
287
|
try {
|
|
270
288
|
// Generate a random salt and IV
|
|
@@ -273,7 +291,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
273
291
|
const key = await getKey({
|
|
274
292
|
password,
|
|
275
293
|
salt
|
|
276
|
-
}, encryptionConfig);
|
|
294
|
+
}, encryptionConfig, onRawKey);
|
|
277
295
|
// Convert the input string to bytes
|
|
278
296
|
const dataBytes = new TextEncoder().encode(data);
|
|
279
297
|
// Encrypt the data
|
|
@@ -298,7 +316,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
298
316
|
* Uses the version field from the data to determine encryption parameters.
|
|
299
317
|
* Falls back to legacy version for backward compatibility if no version is specified.
|
|
300
318
|
* For v3 (Argon2), retries with parallelism=1 if an OperationError occurs.
|
|
301
|
-
*/ const decryptData = async ({ data, password })=>{
|
|
319
|
+
*/ const decryptData = async ({ data, password, onRawKey })=>{
|
|
302
320
|
const { salt, iv, cipher, version } = data;
|
|
303
321
|
// Ensure proper base64 padding for all values
|
|
304
322
|
const paddedSalt = ensureBase64Padding(salt);
|
|
@@ -313,7 +331,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
313
331
|
const key = await getKey({
|
|
314
332
|
password,
|
|
315
333
|
salt: saltBytes
|
|
316
|
-
}, encryptionConfig);
|
|
334
|
+
}, encryptionConfig, onRawKey);
|
|
317
335
|
const decryptedData = await crypto.subtle.decrypt({
|
|
318
336
|
name: AES_GCM_ALGORITHM,
|
|
319
337
|
iv: ivBytes
|
|
@@ -332,7 +350,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
332
350
|
const key = await getKey({
|
|
333
351
|
password,
|
|
334
352
|
salt: saltBytes
|
|
335
|
-
}, modifiedConfig);
|
|
353
|
+
}, modifiedConfig, onRawKey);
|
|
336
354
|
const decryptedData = await crypto.subtle.decrypt({
|
|
337
355
|
name: AES_GCM_ALGORITHM,
|
|
338
356
|
iv: ivBytes
|
|
@@ -1782,12 +1800,21 @@ const logError = ({ message, error, context, level = 'error' })=>{
|
|
|
1782
1800
|
return;
|
|
1783
1801
|
}
|
|
1784
1802
|
const resolvedLevel = isExpectedUserError(error) ? 'info' : level;
|
|
1803
|
+
// Surface the unwrapped `cause` (name only — never its raw fields, which may
|
|
1804
|
+
// carry key material). Errors like EncryptionSelfTestFailedError wrap the real
|
|
1805
|
+
// failure (e.g. KeyShareDecryptionError) as `cause`; without this the original
|
|
1806
|
+
// failure mode is invisible in logs.
|
|
1807
|
+
const cause = error instanceof Error ? error.cause : undefined;
|
|
1785
1808
|
core.Logger[resolvedLevel]('[DynamicWaasWalletClient] Error in browser client', {
|
|
1786
1809
|
message,
|
|
1787
1810
|
error: error instanceof Error ? {
|
|
1788
1811
|
name: error.name,
|
|
1789
1812
|
message: error.message
|
|
1790
1813
|
} : String(error),
|
|
1814
|
+
cause: cause instanceof Error ? {
|
|
1815
|
+
name: cause.name,
|
|
1816
|
+
message: cause.message
|
|
1817
|
+
} : undefined,
|
|
1791
1818
|
context
|
|
1792
1819
|
});
|
|
1793
1820
|
};
|
|
@@ -4720,12 +4747,17 @@ class DynamicWalletClient {
|
|
|
4720
4747
|
// AES-GCM authenticates the ciphertext, so a wrong key fails to decrypt
|
|
4721
4748
|
// rather than returning corrupted plaintext — "decrypt did not throw" is a
|
|
4722
4749
|
// sufficient guarantee the cipher is recoverable.
|
|
4723
|
-
async assertEncryptionRoundTrip({ password, encrypted, walletId, accountAddress }) {
|
|
4750
|
+
async assertEncryptionRoundTrip({ password, encrypted, encryptKeyBytes, walletId, accountAddress }) {
|
|
4724
4751
|
if (!encrypted) return;
|
|
4752
|
+
// Capture the decrypt-side derived key (envId path only) so a failure can be
|
|
4753
|
+
// diffed against the encrypt key without any extra Argon2 derivation.
|
|
4754
|
+
let decryptKeyBytes;
|
|
4755
|
+
const onRawKey = password ? undefined : (k)=>decryptKeyBytes != null ? decryptKeyBytes : decryptKeyBytes = k;
|
|
4725
4756
|
try {
|
|
4726
4757
|
await this.decryptKeyShare({
|
|
4727
4758
|
keyShare: encrypted,
|
|
4728
|
-
password
|
|
4759
|
+
password,
|
|
4760
|
+
onRawKey
|
|
4729
4761
|
});
|
|
4730
4762
|
} catch (error) {
|
|
4731
4763
|
// Only a genuine ciphertext-integrity failure (AES-GCM auth failure /
|
|
@@ -4737,6 +4769,15 @@ class DynamicWalletClient {
|
|
|
4737
4769
|
// transient network error, so rethrow it as-is rather than masking it
|
|
4738
4770
|
// behind "backup aborted" — it stays visible in logs and stays retryable.
|
|
4739
4771
|
if (error instanceof InvalidPasswordError || error instanceof KeyShareDecryptionError) {
|
|
4772
|
+
this.logSelfTestDiagnostics({
|
|
4773
|
+
encrypted,
|
|
4774
|
+
password,
|
|
4775
|
+
walletId,
|
|
4776
|
+
accountAddress,
|
|
4777
|
+
cause: error,
|
|
4778
|
+
encryptKeyBytes,
|
|
4779
|
+
decryptKeyBytes
|
|
4780
|
+
});
|
|
4740
4781
|
throw new EncryptionSelfTestFailedError({
|
|
4741
4782
|
walletId,
|
|
4742
4783
|
accountAddress,
|
|
@@ -4746,11 +4787,82 @@ class DynamicWalletClient {
|
|
|
4746
4787
|
throw error;
|
|
4747
4788
|
}
|
|
4748
4789
|
}
|
|
4749
|
-
|
|
4790
|
+
/**
|
|
4791
|
+
* Diagnostics for backup self-test failures. ONLY runs on the envId-default
|
|
4792
|
+
* path (no user password): envId is public, so the salt/iv/version emitted
|
|
4793
|
+
* here are non-secret.
|
|
4794
|
+
*
|
|
4795
|
+
* Reuses the encrypt- and decrypt-side keys that the backup already derived
|
|
4796
|
+
* (no extra Argon2 work — important, since the failing clients are the
|
|
4797
|
+
* memory-constrained ones) and logs the byte-wise XOR of the two: equal keys
|
|
4798
|
+
* give an all-zero diff, any non-zero byte localises the Argon2id drift that
|
|
4799
|
+
* broke this round-trip. The XOR of two unknown keys is not usable key
|
|
4800
|
+
* material, and the raw keys are never logged.
|
|
4801
|
+
*/ logSelfTestDiagnostics({ encrypted, password, walletId, accountAddress, cause, encryptKeyBytes, decryptKeyBytes }) {
|
|
4802
|
+
// Hard gate: a user-supplied password must never reach these logs, even
|
|
4803
|
+
// derived or diffed. Only the public-envId path is instrumented.
|
|
4804
|
+
if (password) return;
|
|
4805
|
+
try {
|
|
4806
|
+
const decoded = JSON.parse(Buffer.from(encrypted, 'base64').toString());
|
|
4807
|
+
var _decoded_version;
|
|
4808
|
+
const version = (_decoded_version = decoded.version) != null ? _decoded_version : 'unknown';
|
|
4809
|
+
const config = getEncryptionConfig(version);
|
|
4810
|
+
const toHex = (a)=>Array.from(a, (b)=>b.toString(16).padStart(2, '0')).join('');
|
|
4811
|
+
// Diff the two real derivations when both were captured (v3/Argon2 only —
|
|
4812
|
+
// PBKDF2 keys are non-extractable so no bytes are available).
|
|
4813
|
+
let drift;
|
|
4814
|
+
if (encryptKeyBytes && decryptKeyBytes) {
|
|
4815
|
+
const len = Math.min(encryptKeyBytes.length, decryptKeyBytes.length);
|
|
4816
|
+
const xor = new Uint8Array(len);
|
|
4817
|
+
const driftPositions = [];
|
|
4818
|
+
for(let i = 0; i < len; i++){
|
|
4819
|
+
xor[i] = encryptKeyBytes[i] ^ decryptKeyBytes[i];
|
|
4820
|
+
if (xor[i] !== 0) driftPositions.push(i);
|
|
4821
|
+
}
|
|
4822
|
+
drift = {
|
|
4823
|
+
keyLength: len,
|
|
4824
|
+
keyDriftXor: toHex(xor),
|
|
4825
|
+
keyDriftByteCount: driftPositions.length,
|
|
4826
|
+
keyDriftPositions: driftPositions
|
|
4827
|
+
};
|
|
4828
|
+
}
|
|
4829
|
+
this.logger.error('[keyshare-selftest] self-test failed', _extends({
|
|
4830
|
+
walletId,
|
|
4831
|
+
accountAddress,
|
|
4832
|
+
environmentId: this.environmentId,
|
|
4833
|
+
userId: this.userId,
|
|
4834
|
+
version,
|
|
4835
|
+
salt: decoded.salt,
|
|
4836
|
+
iv: decoded.iv,
|
|
4837
|
+
saltLength: base64ToBytes(ensureBase64Padding(decoded.salt)).length,
|
|
4838
|
+
cipherLength: base64ToBytes(ensureBase64Padding(decoded.cipher)).length,
|
|
4839
|
+
causeName: cause instanceof Error ? cause.name : undefined,
|
|
4840
|
+
causeContext: cause instanceof KeyShareDecryptionError ? cause.context : undefined,
|
|
4841
|
+
// Whether both real keys were available to diff (false ⇒ non-v3 or a key wasn't captured).
|
|
4842
|
+
keyDriftAvailable: !!drift
|
|
4843
|
+
}, drift, {
|
|
4844
|
+
argon2: isArgon2Config(config) ? {
|
|
4845
|
+
memorySize: config.memorySize,
|
|
4846
|
+
iterations: config.iterations,
|
|
4847
|
+
parallelism: config.parallelism,
|
|
4848
|
+
hashLength: config.hashLength
|
|
4849
|
+
} : undefined
|
|
4850
|
+
}));
|
|
4851
|
+
} catch (diagError) {
|
|
4852
|
+
// Diagnostics must never mask the real failure.
|
|
4853
|
+
this.logger.warn('[keyshare-selftest] diagnostics failed to run', {
|
|
4854
|
+
walletId,
|
|
4855
|
+
accountAddress,
|
|
4856
|
+
error: diagError instanceof Error ? diagError.message : String(diagError)
|
|
4857
|
+
});
|
|
4858
|
+
}
|
|
4859
|
+
}
|
|
4860
|
+
async encryptKeyShare({ keyShare, password, onRawKey }) {
|
|
4750
4861
|
const serializedKeyShare = JSON.stringify(keyShare);
|
|
4751
4862
|
const encryptedKeyShare = await encryptData({
|
|
4752
4863
|
data: serializedKeyShare,
|
|
4753
|
-
password: password != null ? password : this.environmentId
|
|
4864
|
+
password: password != null ? password : this.environmentId,
|
|
4865
|
+
onRawKey
|
|
4754
4866
|
});
|
|
4755
4867
|
this.logPasswordSharePresence(password, 'encrypt');
|
|
4756
4868
|
// stringify the encrypted key share, convert to base64, and store it
|
|
@@ -5132,12 +5244,24 @@ class DynamicWalletClient {
|
|
|
5132
5244
|
}
|
|
5133
5245
|
const bitcoinConfig = this.getBitcoinConfigForChain(walletData.chainName, accountAddress);
|
|
5134
5246
|
const isPasswordEncrypted = shouldValidatePassword(password, this.environmentId);
|
|
5247
|
+
// On the envId-default path, capture each share's derived encrypt key
|
|
5248
|
+
// (keyed by its ciphertext blob) so the self-test can diff it against the
|
|
5249
|
+
// decrypt key it derives — detecting Argon2id drift with NO extra
|
|
5250
|
+
// derivations. Skipped entirely when a user password is set; keys are
|
|
5251
|
+
// in-process only and cleared right after the self-test.
|
|
5252
|
+
const encryptKeyByBlob = isPasswordEncrypted ? undefined : new Map();
|
|
5135
5253
|
// Pre-encrypt all shares once, with retry to handle transient WebCrypto errors.
|
|
5136
5254
|
// This avoids re-running expensive Argon2id key derivation on every retry attempt.
|
|
5137
|
-
const encryptWithRetry = (keyShare)=>retryPromise(()=>
|
|
5255
|
+
const encryptWithRetry = (keyShare)=>retryPromise(async ()=>{
|
|
5256
|
+
let rawKey;
|
|
5257
|
+
const blob = await this.encryptKeyShare({
|
|
5138
5258
|
keyShare,
|
|
5139
|
-
password
|
|
5140
|
-
|
|
5259
|
+
password,
|
|
5260
|
+
onRawKey: encryptKeyByBlob ? (k)=>rawKey = k : undefined
|
|
5261
|
+
});
|
|
5262
|
+
if (encryptKeyByBlob && rawKey) encryptKeyByBlob.set(blob, rawKey);
|
|
5263
|
+
return blob;
|
|
5264
|
+
}, {
|
|
5141
5265
|
maxAttempts: 3,
|
|
5142
5266
|
operationName: 'encrypt key share'
|
|
5143
5267
|
});
|
|
@@ -5160,12 +5284,19 @@ class DynamicWalletClient {
|
|
|
5160
5284
|
var _preEncryptedDynamicShares_;
|
|
5161
5285
|
// Fail fast before any upload if the just-written cipher can't be read
|
|
5162
5286
|
// back with the same key material. Runs once per backup, not per share.
|
|
5163
|
-
|
|
5164
|
-
|
|
5165
|
-
|
|
5166
|
-
|
|
5167
|
-
|
|
5168
|
-
|
|
5287
|
+
const selfTestBlob = (_preEncryptedDynamicShares_ = preEncryptedDynamicShares[0]) != null ? _preEncryptedDynamicShares_ : (_preEncryptedCloudShares_ = preEncryptedCloudShares[0]) == null ? void 0 : _preEncryptedCloudShares_.encrypted[0];
|
|
5288
|
+
try {
|
|
5289
|
+
await this.assertEncryptionRoundTrip({
|
|
5290
|
+
password,
|
|
5291
|
+
encrypted: selfTestBlob,
|
|
5292
|
+
encryptKeyBytes: selfTestBlob ? encryptKeyByBlob == null ? void 0 : encryptKeyByBlob.get(selfTestBlob) : undefined,
|
|
5293
|
+
walletId: walletData.walletId,
|
|
5294
|
+
accountAddress
|
|
5295
|
+
});
|
|
5296
|
+
} finally{
|
|
5297
|
+
// Drop captured key material promptly regardless of outcome.
|
|
5298
|
+
encryptKeyByBlob == null ? void 0 : encryptKeyByBlob.clear();
|
|
5299
|
+
}
|
|
5169
5300
|
// Step 1: Upload shares in parallel, each with its own retry
|
|
5170
5301
|
const uploadPromises = [];
|
|
5171
5302
|
if (distribution.clientShares.length > 0) {
|
|
@@ -5321,6 +5452,7 @@ class DynamicWalletClient {
|
|
|
5321
5452
|
}));
|
|
5322
5453
|
return backupData;
|
|
5323
5454
|
} catch (error) {
|
|
5455
|
+
var _error_cause_context;
|
|
5324
5456
|
const errorReason = classifyPasswordBackupError(error);
|
|
5325
5457
|
const logFn = isUserActionablePasswordBackupErrorReason(errorReason) ? this.logger.warn : this.logger.error;
|
|
5326
5458
|
logFn.call(this.logger, '[backupSharesWithDistribution] failed', _extends({}, logContext, {
|
|
@@ -5328,7 +5460,11 @@ class DynamicWalletClient {
|
|
|
5328
5460
|
errorReason,
|
|
5329
5461
|
errorName: error instanceof Error ? error.name : undefined,
|
|
5330
5462
|
errorMessage: error instanceof Error ? error.message : String(error),
|
|
5331
|
-
errorStack: error instanceof Error ? error.stack : undefined
|
|
5463
|
+
errorStack: error instanceof Error ? error.stack : undefined,
|
|
5464
|
+
// Unwrap the wrapped cause (name only — never raw fields) so self-test
|
|
5465
|
+
// failures show the underlying KeyShareDecryptionError / kdfVersion.
|
|
5466
|
+
errorCauseName: error instanceof Error && error.cause instanceof Error ? error.cause.name : undefined,
|
|
5467
|
+
kdfVersion: error instanceof Error && error.cause instanceof KeyShareDecryptionError ? (_error_cause_context = error.cause.context) == null ? void 0 : _error_cause_context.kdfVersion : undefined
|
|
5332
5468
|
}));
|
|
5333
5469
|
logError({
|
|
5334
5470
|
message: 'Error in backupSharesWithDistribution',
|
|
@@ -5677,7 +5813,7 @@ class DynamicWalletClient {
|
|
|
5677
5813
|
throw error;
|
|
5678
5814
|
}
|
|
5679
5815
|
}
|
|
5680
|
-
async decryptKeyShare({ keyShare, password }) {
|
|
5816
|
+
async decryptKeyShare({ keyShare, password, onRawKey }) {
|
|
5681
5817
|
const decodedKeyShare = JSON.parse(Buffer.from(keyShare, 'base64').toString());
|
|
5682
5818
|
// Track whether a user-supplied password was provided so we can emit a
|
|
5683
5819
|
// distinct error class on failure. The default `environmentId` fallback is
|
|
@@ -5689,7 +5825,8 @@ class DynamicWalletClient {
|
|
|
5689
5825
|
try {
|
|
5690
5826
|
const decryptedKeyShare = await decryptData({
|
|
5691
5827
|
data: decodedKeyShare,
|
|
5692
|
-
password: effectivePassword
|
|
5828
|
+
password: effectivePassword,
|
|
5829
|
+
onRawKey
|
|
5693
5830
|
});
|
|
5694
5831
|
this.logPasswordSharePresence(password, 'decrypt');
|
|
5695
5832
|
this.logger.info('[keyshare-decryption] key share decrypted', {
|
package/index.esm.js
CHANGED
|
@@ -102,32 +102,6 @@ const ARGON2_HASH_LENGTH = 32;
|
|
|
102
102
|
*/ const PBKDF2_ITERATIONS_V1 = 100000;
|
|
103
103
|
const PBKDF2_ITERATIONS_V2 = 1000000;
|
|
104
104
|
|
|
105
|
-
/**
|
|
106
|
-
* Derives a key using Argon2id algorithm
|
|
107
|
-
* @param params - Key derivation parameters
|
|
108
|
-
* @param encryptionConfig - Encryption configuration
|
|
109
|
-
* @returns Promise<CryptoKey>
|
|
110
|
-
*/ const deriveArgon2Key = async ({ password, salt }, encryptionConfig)=>{
|
|
111
|
-
const argon2id = await loadArgon2idWasm();
|
|
112
|
-
const argon2Config = encryptionConfig;
|
|
113
|
-
const passwordBytes = new TextEncoder().encode(password);
|
|
114
|
-
const hash = argon2id({
|
|
115
|
-
password: passwordBytes,
|
|
116
|
-
salt: salt,
|
|
117
|
-
parallelism: argon2Config.parallelism || ARGON2_PARALLELISM,
|
|
118
|
-
passes: argon2Config.iterations,
|
|
119
|
-
memorySize: argon2Config.memorySize || ARGON2_MEMORY_SIZE,
|
|
120
|
-
tagLength: argon2Config.hashLength || ARGON2_HASH_LENGTH
|
|
121
|
-
});
|
|
122
|
-
return crypto.subtle.importKey('raw', new Uint8Array(hash), {
|
|
123
|
-
name: encryptionConfig.algorithm,
|
|
124
|
-
length: encryptionConfig.algorithmLength
|
|
125
|
-
}, false, [
|
|
126
|
-
'encrypt',
|
|
127
|
-
'decrypt'
|
|
128
|
-
]);
|
|
129
|
-
};
|
|
130
|
-
|
|
131
105
|
/**
|
|
132
106
|
* Encryption configuration for each version
|
|
133
107
|
*/ const ENCRYPTION_VERSIONS = {
|
|
@@ -180,6 +154,48 @@ const PBKDF2_ITERATIONS_V2 = 1000000;
|
|
|
180
154
|
return config.keyDerivation === ARGON2_ALGORITHM;
|
|
181
155
|
};
|
|
182
156
|
|
|
157
|
+
/**
|
|
158
|
+
* Derives the raw Argon2id hash bytes for the given params/config.
|
|
159
|
+
*
|
|
160
|
+
* Exposed separately from {@link deriveArgon2Key} for the backup self-test's
|
|
161
|
+
* determinism probe: it lets the caller derive twice from identical inputs and
|
|
162
|
+
* diff the results to detect Argon2id non-determinism (suspected on
|
|
163
|
+
* memory-constrained clients). The raw bytes are AES key material and must
|
|
164
|
+
* never be logged or persisted — keep them in-process.
|
|
165
|
+
*/ const deriveRawArgon2Bytes = async ({ password, salt }, encryptionConfig)=>{
|
|
166
|
+
const argon2id = await loadArgon2idWasm();
|
|
167
|
+
const argon2Config = encryptionConfig;
|
|
168
|
+
const passwordBytes = new TextEncoder().encode(password);
|
|
169
|
+
const hash = argon2id({
|
|
170
|
+
password: passwordBytes,
|
|
171
|
+
salt: salt,
|
|
172
|
+
parallelism: argon2Config.parallelism || ARGON2_PARALLELISM,
|
|
173
|
+
passes: argon2Config.iterations,
|
|
174
|
+
memorySize: argon2Config.memorySize || ARGON2_MEMORY_SIZE,
|
|
175
|
+
tagLength: argon2Config.hashLength || ARGON2_HASH_LENGTH
|
|
176
|
+
});
|
|
177
|
+
return new Uint8Array(hash);
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Derives a key using Argon2id algorithm
|
|
181
|
+
* @param params - Key derivation parameters
|
|
182
|
+
* @param encryptionConfig - Encryption configuration
|
|
183
|
+
* @returns Promise<CryptoKey>
|
|
184
|
+
*/ const deriveArgon2Key = async (params, encryptionConfig, // In-process hook receiving the raw derived bytes (key material — never log).
|
|
185
|
+
// Lets the backup self-test reuse the keys it already derives instead of
|
|
186
|
+
// running extra Argon2 derivations to detect drift.
|
|
187
|
+
onRawKey)=>{
|
|
188
|
+
const hash = await deriveRawArgon2Bytes(params, encryptionConfig);
|
|
189
|
+
onRawKey == null ? void 0 : onRawKey(hash);
|
|
190
|
+
return crypto.subtle.importKey('raw', new Uint8Array(hash), {
|
|
191
|
+
name: encryptionConfig.algorithm,
|
|
192
|
+
length: encryptionConfig.algorithmLength
|
|
193
|
+
}, false, [
|
|
194
|
+
'encrypt',
|
|
195
|
+
'decrypt'
|
|
196
|
+
]);
|
|
197
|
+
};
|
|
198
|
+
|
|
183
199
|
/**
|
|
184
200
|
* Utility functions for encryption operations
|
|
185
201
|
* These functions are separated to avoid circular dependencies
|
|
@@ -254,18 +270,20 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
254
270
|
*/ const isInvalidPasswordError = (error)=>error instanceof Error && error.name === 'OperationError';
|
|
255
271
|
/**
|
|
256
272
|
* Get the appropriate key derivation function based on the encryption config
|
|
257
|
-
*/ const getKey = async (params, encryptionConfig)=>{
|
|
273
|
+
*/ const getKey = async (params, encryptionConfig, onRawKey)=>{
|
|
258
274
|
// Use Argon2 for v3, PBKDF2 for v1 and v2
|
|
259
275
|
if (encryptionConfig.keyDerivation === ARGON2_ALGORITHM) {
|
|
260
|
-
return deriveArgon2Key(params, encryptionConfig);
|
|
276
|
+
return deriveArgon2Key(params, encryptionConfig, onRawKey);
|
|
261
277
|
} else {
|
|
278
|
+
// PBKDF2 derives a non-extractable CryptoKey directly, so raw bytes are
|
|
279
|
+
// unavailable; the hook simply doesn't fire (drift probe is v3-only anyway).
|
|
262
280
|
return derivePBKDF2Key(params, encryptionConfig);
|
|
263
281
|
}
|
|
264
282
|
};
|
|
265
283
|
/**
|
|
266
284
|
* Encrypts data using the specified encryption version.
|
|
267
285
|
* Always uses the latest encryption configuration for new encryptions by default.
|
|
268
|
-
*/ const encryptData = async ({ data, password, version = ENCRYPTION_VERSION_CURRENT })=>{
|
|
286
|
+
*/ const encryptData = async ({ data, password, version = ENCRYPTION_VERSION_CURRENT, onRawKey })=>{
|
|
269
287
|
const encryptionConfig = getEncryptionConfig(version);
|
|
270
288
|
try {
|
|
271
289
|
// Generate a random salt and IV
|
|
@@ -274,7 +292,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
274
292
|
const key = await getKey({
|
|
275
293
|
password,
|
|
276
294
|
salt
|
|
277
|
-
}, encryptionConfig);
|
|
295
|
+
}, encryptionConfig, onRawKey);
|
|
278
296
|
// Convert the input string to bytes
|
|
279
297
|
const dataBytes = new TextEncoder().encode(data);
|
|
280
298
|
// Encrypt the data
|
|
@@ -299,7 +317,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
299
317
|
* Uses the version field from the data to determine encryption parameters.
|
|
300
318
|
* Falls back to legacy version for backward compatibility if no version is specified.
|
|
301
319
|
* For v3 (Argon2), retries with parallelism=1 if an OperationError occurs.
|
|
302
|
-
*/ const decryptData = async ({ data, password })=>{
|
|
320
|
+
*/ const decryptData = async ({ data, password, onRawKey })=>{
|
|
303
321
|
const { salt, iv, cipher, version } = data;
|
|
304
322
|
// Ensure proper base64 padding for all values
|
|
305
323
|
const paddedSalt = ensureBase64Padding(salt);
|
|
@@ -314,7 +332,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
314
332
|
const key = await getKey({
|
|
315
333
|
password,
|
|
316
334
|
salt: saltBytes
|
|
317
|
-
}, encryptionConfig);
|
|
335
|
+
}, encryptionConfig, onRawKey);
|
|
318
336
|
const decryptedData = await crypto.subtle.decrypt({
|
|
319
337
|
name: AES_GCM_ALGORITHM,
|
|
320
338
|
iv: ivBytes
|
|
@@ -333,7 +351,7 @@ const KEY_SHARE_DECRYPTION_ERROR = 'Decryption failed.';
|
|
|
333
351
|
const key = await getKey({
|
|
334
352
|
password,
|
|
335
353
|
salt: saltBytes
|
|
336
|
-
}, modifiedConfig);
|
|
354
|
+
}, modifiedConfig, onRawKey);
|
|
337
355
|
const decryptedData = await crypto.subtle.decrypt({
|
|
338
356
|
name: AES_GCM_ALGORITHM,
|
|
339
357
|
iv: ivBytes
|
|
@@ -1783,12 +1801,21 @@ const logError = ({ message, error, context, level = 'error' })=>{
|
|
|
1783
1801
|
return;
|
|
1784
1802
|
}
|
|
1785
1803
|
const resolvedLevel = isExpectedUserError(error) ? 'info' : level;
|
|
1804
|
+
// Surface the unwrapped `cause` (name only — never its raw fields, which may
|
|
1805
|
+
// carry key material). Errors like EncryptionSelfTestFailedError wrap the real
|
|
1806
|
+
// failure (e.g. KeyShareDecryptionError) as `cause`; without this the original
|
|
1807
|
+
// failure mode is invisible in logs.
|
|
1808
|
+
const cause = error instanceof Error ? error.cause : undefined;
|
|
1786
1809
|
Logger[resolvedLevel]('[DynamicWaasWalletClient] Error in browser client', {
|
|
1787
1810
|
message,
|
|
1788
1811
|
error: error instanceof Error ? {
|
|
1789
1812
|
name: error.name,
|
|
1790
1813
|
message: error.message
|
|
1791
1814
|
} : String(error),
|
|
1815
|
+
cause: cause instanceof Error ? {
|
|
1816
|
+
name: cause.name,
|
|
1817
|
+
message: cause.message
|
|
1818
|
+
} : undefined,
|
|
1792
1819
|
context
|
|
1793
1820
|
});
|
|
1794
1821
|
};
|
|
@@ -4721,12 +4748,17 @@ class DynamicWalletClient {
|
|
|
4721
4748
|
// AES-GCM authenticates the ciphertext, so a wrong key fails to decrypt
|
|
4722
4749
|
// rather than returning corrupted plaintext — "decrypt did not throw" is a
|
|
4723
4750
|
// sufficient guarantee the cipher is recoverable.
|
|
4724
|
-
async assertEncryptionRoundTrip({ password, encrypted, walletId, accountAddress }) {
|
|
4751
|
+
async assertEncryptionRoundTrip({ password, encrypted, encryptKeyBytes, walletId, accountAddress }) {
|
|
4725
4752
|
if (!encrypted) return;
|
|
4753
|
+
// Capture the decrypt-side derived key (envId path only) so a failure can be
|
|
4754
|
+
// diffed against the encrypt key without any extra Argon2 derivation.
|
|
4755
|
+
let decryptKeyBytes;
|
|
4756
|
+
const onRawKey = password ? undefined : (k)=>decryptKeyBytes != null ? decryptKeyBytes : decryptKeyBytes = k;
|
|
4726
4757
|
try {
|
|
4727
4758
|
await this.decryptKeyShare({
|
|
4728
4759
|
keyShare: encrypted,
|
|
4729
|
-
password
|
|
4760
|
+
password,
|
|
4761
|
+
onRawKey
|
|
4730
4762
|
});
|
|
4731
4763
|
} catch (error) {
|
|
4732
4764
|
// Only a genuine ciphertext-integrity failure (AES-GCM auth failure /
|
|
@@ -4738,6 +4770,15 @@ class DynamicWalletClient {
|
|
|
4738
4770
|
// transient network error, so rethrow it as-is rather than masking it
|
|
4739
4771
|
// behind "backup aborted" — it stays visible in logs and stays retryable.
|
|
4740
4772
|
if (error instanceof InvalidPasswordError || error instanceof KeyShareDecryptionError) {
|
|
4773
|
+
this.logSelfTestDiagnostics({
|
|
4774
|
+
encrypted,
|
|
4775
|
+
password,
|
|
4776
|
+
walletId,
|
|
4777
|
+
accountAddress,
|
|
4778
|
+
cause: error,
|
|
4779
|
+
encryptKeyBytes,
|
|
4780
|
+
decryptKeyBytes
|
|
4781
|
+
});
|
|
4741
4782
|
throw new EncryptionSelfTestFailedError({
|
|
4742
4783
|
walletId,
|
|
4743
4784
|
accountAddress,
|
|
@@ -4747,11 +4788,82 @@ class DynamicWalletClient {
|
|
|
4747
4788
|
throw error;
|
|
4748
4789
|
}
|
|
4749
4790
|
}
|
|
4750
|
-
|
|
4791
|
+
/**
|
|
4792
|
+
* Diagnostics for backup self-test failures. ONLY runs on the envId-default
|
|
4793
|
+
* path (no user password): envId is public, so the salt/iv/version emitted
|
|
4794
|
+
* here are non-secret.
|
|
4795
|
+
*
|
|
4796
|
+
* Reuses the encrypt- and decrypt-side keys that the backup already derived
|
|
4797
|
+
* (no extra Argon2 work — important, since the failing clients are the
|
|
4798
|
+
* memory-constrained ones) and logs the byte-wise XOR of the two: equal keys
|
|
4799
|
+
* give an all-zero diff, any non-zero byte localises the Argon2id drift that
|
|
4800
|
+
* broke this round-trip. The XOR of two unknown keys is not usable key
|
|
4801
|
+
* material, and the raw keys are never logged.
|
|
4802
|
+
*/ logSelfTestDiagnostics({ encrypted, password, walletId, accountAddress, cause, encryptKeyBytes, decryptKeyBytes }) {
|
|
4803
|
+
// Hard gate: a user-supplied password must never reach these logs, even
|
|
4804
|
+
// derived or diffed. Only the public-envId path is instrumented.
|
|
4805
|
+
if (password) return;
|
|
4806
|
+
try {
|
|
4807
|
+
const decoded = JSON.parse(Buffer.from(encrypted, 'base64').toString());
|
|
4808
|
+
var _decoded_version;
|
|
4809
|
+
const version = (_decoded_version = decoded.version) != null ? _decoded_version : 'unknown';
|
|
4810
|
+
const config = getEncryptionConfig(version);
|
|
4811
|
+
const toHex = (a)=>Array.from(a, (b)=>b.toString(16).padStart(2, '0')).join('');
|
|
4812
|
+
// Diff the two real derivations when both were captured (v3/Argon2 only —
|
|
4813
|
+
// PBKDF2 keys are non-extractable so no bytes are available).
|
|
4814
|
+
let drift;
|
|
4815
|
+
if (encryptKeyBytes && decryptKeyBytes) {
|
|
4816
|
+
const len = Math.min(encryptKeyBytes.length, decryptKeyBytes.length);
|
|
4817
|
+
const xor = new Uint8Array(len);
|
|
4818
|
+
const driftPositions = [];
|
|
4819
|
+
for(let i = 0; i < len; i++){
|
|
4820
|
+
xor[i] = encryptKeyBytes[i] ^ decryptKeyBytes[i];
|
|
4821
|
+
if (xor[i] !== 0) driftPositions.push(i);
|
|
4822
|
+
}
|
|
4823
|
+
drift = {
|
|
4824
|
+
keyLength: len,
|
|
4825
|
+
keyDriftXor: toHex(xor),
|
|
4826
|
+
keyDriftByteCount: driftPositions.length,
|
|
4827
|
+
keyDriftPositions: driftPositions
|
|
4828
|
+
};
|
|
4829
|
+
}
|
|
4830
|
+
this.logger.error('[keyshare-selftest] self-test failed', _extends({
|
|
4831
|
+
walletId,
|
|
4832
|
+
accountAddress,
|
|
4833
|
+
environmentId: this.environmentId,
|
|
4834
|
+
userId: this.userId,
|
|
4835
|
+
version,
|
|
4836
|
+
salt: decoded.salt,
|
|
4837
|
+
iv: decoded.iv,
|
|
4838
|
+
saltLength: base64ToBytes(ensureBase64Padding(decoded.salt)).length,
|
|
4839
|
+
cipherLength: base64ToBytes(ensureBase64Padding(decoded.cipher)).length,
|
|
4840
|
+
causeName: cause instanceof Error ? cause.name : undefined,
|
|
4841
|
+
causeContext: cause instanceof KeyShareDecryptionError ? cause.context : undefined,
|
|
4842
|
+
// Whether both real keys were available to diff (false ⇒ non-v3 or a key wasn't captured).
|
|
4843
|
+
keyDriftAvailable: !!drift
|
|
4844
|
+
}, drift, {
|
|
4845
|
+
argon2: isArgon2Config(config) ? {
|
|
4846
|
+
memorySize: config.memorySize,
|
|
4847
|
+
iterations: config.iterations,
|
|
4848
|
+
parallelism: config.parallelism,
|
|
4849
|
+
hashLength: config.hashLength
|
|
4850
|
+
} : undefined
|
|
4851
|
+
}));
|
|
4852
|
+
} catch (diagError) {
|
|
4853
|
+
// Diagnostics must never mask the real failure.
|
|
4854
|
+
this.logger.warn('[keyshare-selftest] diagnostics failed to run', {
|
|
4855
|
+
walletId,
|
|
4856
|
+
accountAddress,
|
|
4857
|
+
error: diagError instanceof Error ? diagError.message : String(diagError)
|
|
4858
|
+
});
|
|
4859
|
+
}
|
|
4860
|
+
}
|
|
4861
|
+
async encryptKeyShare({ keyShare, password, onRawKey }) {
|
|
4751
4862
|
const serializedKeyShare = JSON.stringify(keyShare);
|
|
4752
4863
|
const encryptedKeyShare = await encryptData({
|
|
4753
4864
|
data: serializedKeyShare,
|
|
4754
|
-
password: password != null ? password : this.environmentId
|
|
4865
|
+
password: password != null ? password : this.environmentId,
|
|
4866
|
+
onRawKey
|
|
4755
4867
|
});
|
|
4756
4868
|
this.logPasswordSharePresence(password, 'encrypt');
|
|
4757
4869
|
// stringify the encrypted key share, convert to base64, and store it
|
|
@@ -5133,12 +5245,24 @@ class DynamicWalletClient {
|
|
|
5133
5245
|
}
|
|
5134
5246
|
const bitcoinConfig = this.getBitcoinConfigForChain(walletData.chainName, accountAddress);
|
|
5135
5247
|
const isPasswordEncrypted = shouldValidatePassword(password, this.environmentId);
|
|
5248
|
+
// On the envId-default path, capture each share's derived encrypt key
|
|
5249
|
+
// (keyed by its ciphertext blob) so the self-test can diff it against the
|
|
5250
|
+
// decrypt key it derives — detecting Argon2id drift with NO extra
|
|
5251
|
+
// derivations. Skipped entirely when a user password is set; keys are
|
|
5252
|
+
// in-process only and cleared right after the self-test.
|
|
5253
|
+
const encryptKeyByBlob = isPasswordEncrypted ? undefined : new Map();
|
|
5136
5254
|
// Pre-encrypt all shares once, with retry to handle transient WebCrypto errors.
|
|
5137
5255
|
// This avoids re-running expensive Argon2id key derivation on every retry attempt.
|
|
5138
|
-
const encryptWithRetry = (keyShare)=>retryPromise(()=>
|
|
5256
|
+
const encryptWithRetry = (keyShare)=>retryPromise(async ()=>{
|
|
5257
|
+
let rawKey;
|
|
5258
|
+
const blob = await this.encryptKeyShare({
|
|
5139
5259
|
keyShare,
|
|
5140
|
-
password
|
|
5141
|
-
|
|
5260
|
+
password,
|
|
5261
|
+
onRawKey: encryptKeyByBlob ? (k)=>rawKey = k : undefined
|
|
5262
|
+
});
|
|
5263
|
+
if (encryptKeyByBlob && rawKey) encryptKeyByBlob.set(blob, rawKey);
|
|
5264
|
+
return blob;
|
|
5265
|
+
}, {
|
|
5142
5266
|
maxAttempts: 3,
|
|
5143
5267
|
operationName: 'encrypt key share'
|
|
5144
5268
|
});
|
|
@@ -5161,12 +5285,19 @@ class DynamicWalletClient {
|
|
|
5161
5285
|
var _preEncryptedDynamicShares_;
|
|
5162
5286
|
// Fail fast before any upload if the just-written cipher can't be read
|
|
5163
5287
|
// back with the same key material. Runs once per backup, not per share.
|
|
5164
|
-
|
|
5165
|
-
|
|
5166
|
-
|
|
5167
|
-
|
|
5168
|
-
|
|
5169
|
-
|
|
5288
|
+
const selfTestBlob = (_preEncryptedDynamicShares_ = preEncryptedDynamicShares[0]) != null ? _preEncryptedDynamicShares_ : (_preEncryptedCloudShares_ = preEncryptedCloudShares[0]) == null ? void 0 : _preEncryptedCloudShares_.encrypted[0];
|
|
5289
|
+
try {
|
|
5290
|
+
await this.assertEncryptionRoundTrip({
|
|
5291
|
+
password,
|
|
5292
|
+
encrypted: selfTestBlob,
|
|
5293
|
+
encryptKeyBytes: selfTestBlob ? encryptKeyByBlob == null ? void 0 : encryptKeyByBlob.get(selfTestBlob) : undefined,
|
|
5294
|
+
walletId: walletData.walletId,
|
|
5295
|
+
accountAddress
|
|
5296
|
+
});
|
|
5297
|
+
} finally{
|
|
5298
|
+
// Drop captured key material promptly regardless of outcome.
|
|
5299
|
+
encryptKeyByBlob == null ? void 0 : encryptKeyByBlob.clear();
|
|
5300
|
+
}
|
|
5170
5301
|
// Step 1: Upload shares in parallel, each with its own retry
|
|
5171
5302
|
const uploadPromises = [];
|
|
5172
5303
|
if (distribution.clientShares.length > 0) {
|
|
@@ -5322,6 +5453,7 @@ class DynamicWalletClient {
|
|
|
5322
5453
|
}));
|
|
5323
5454
|
return backupData;
|
|
5324
5455
|
} catch (error) {
|
|
5456
|
+
var _error_cause_context;
|
|
5325
5457
|
const errorReason = classifyPasswordBackupError(error);
|
|
5326
5458
|
const logFn = isUserActionablePasswordBackupErrorReason(errorReason) ? this.logger.warn : this.logger.error;
|
|
5327
5459
|
logFn.call(this.logger, '[backupSharesWithDistribution] failed', _extends({}, logContext, {
|
|
@@ -5329,7 +5461,11 @@ class DynamicWalletClient {
|
|
|
5329
5461
|
errorReason,
|
|
5330
5462
|
errorName: error instanceof Error ? error.name : undefined,
|
|
5331
5463
|
errorMessage: error instanceof Error ? error.message : String(error),
|
|
5332
|
-
errorStack: error instanceof Error ? error.stack : undefined
|
|
5464
|
+
errorStack: error instanceof Error ? error.stack : undefined,
|
|
5465
|
+
// Unwrap the wrapped cause (name only — never raw fields) so self-test
|
|
5466
|
+
// failures show the underlying KeyShareDecryptionError / kdfVersion.
|
|
5467
|
+
errorCauseName: error instanceof Error && error.cause instanceof Error ? error.cause.name : undefined,
|
|
5468
|
+
kdfVersion: error instanceof Error && error.cause instanceof KeyShareDecryptionError ? (_error_cause_context = error.cause.context) == null ? void 0 : _error_cause_context.kdfVersion : undefined
|
|
5333
5469
|
}));
|
|
5334
5470
|
logError({
|
|
5335
5471
|
message: 'Error in backupSharesWithDistribution',
|
|
@@ -5678,7 +5814,7 @@ class DynamicWalletClient {
|
|
|
5678
5814
|
throw error;
|
|
5679
5815
|
}
|
|
5680
5816
|
}
|
|
5681
|
-
async decryptKeyShare({ keyShare, password }) {
|
|
5817
|
+
async decryptKeyShare({ keyShare, password, onRawKey }) {
|
|
5682
5818
|
const decodedKeyShare = JSON.parse(Buffer.from(keyShare, 'base64').toString());
|
|
5683
5819
|
// Track whether a user-supplied password was provided so we can emit a
|
|
5684
5820
|
// distinct error class on failure. The default `environmentId` fallback is
|
|
@@ -5690,7 +5826,8 @@ class DynamicWalletClient {
|
|
|
5690
5826
|
try {
|
|
5691
5827
|
const decryptedKeyShare = await decryptData({
|
|
5692
5828
|
data: decodedKeyShare,
|
|
5693
|
-
password: effectivePassword
|
|
5829
|
+
password: effectivePassword,
|
|
5830
|
+
onRawKey
|
|
5694
5831
|
});
|
|
5695
5832
|
this.logPasswordSharePresence(password, 'decrypt');
|
|
5696
5833
|
this.logger.info('[keyshare-decryption] key share decrypted', {
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-wallet/browser",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.15",
|
|
4
4
|
"license": "Licensed under the Dynamic Labs, Inc. Terms Of Service (https://www.dynamic.xyz/terms-conditions)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@dynamic-labs-wallet/core": "1.0.
|
|
7
|
+
"@dynamic-labs-wallet/core": "1.0.15",
|
|
8
8
|
"@dynamic-labs-wallet/forward-mpc-client": "0.10.1",
|
|
9
|
-
"@dynamic-labs-wallet/primitives": "1.0.
|
|
9
|
+
"@dynamic-labs-wallet/primitives": "1.0.15",
|
|
10
10
|
"@dynamic-labs/sdk-api-core": "^0.0.984",
|
|
11
11
|
"argon2id": "1.0.1",
|
|
12
12
|
"axios": "1.16.0",
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import type { EncryptionConfig } from './config.js';
|
|
2
2
|
import type { KeyDerivationParams } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Derives the raw Argon2id hash bytes for the given params/config.
|
|
5
|
+
*
|
|
6
|
+
* Exposed separately from {@link deriveArgon2Key} for the backup self-test's
|
|
7
|
+
* determinism probe: it lets the caller derive twice from identical inputs and
|
|
8
|
+
* diff the results to detect Argon2id non-determinism (suspected on
|
|
9
|
+
* memory-constrained clients). The raw bytes are AES key material and must
|
|
10
|
+
* never be logged or persisted — keep them in-process.
|
|
11
|
+
*/
|
|
12
|
+
export declare const deriveRawArgon2Bytes: ({ password, salt }: KeyDerivationParams, encryptionConfig: EncryptionConfig) => Promise<Uint8Array>;
|
|
3
13
|
/**
|
|
4
14
|
* Derives a key using Argon2id algorithm
|
|
5
15
|
* @param params - Key derivation parameters
|
|
6
16
|
* @param encryptionConfig - Encryption configuration
|
|
7
17
|
* @returns Promise<CryptoKey>
|
|
8
18
|
*/
|
|
9
|
-
export declare const deriveArgon2Key: (
|
|
19
|
+
export declare const deriveArgon2Key: (params: KeyDerivationParams, encryptionConfig: EncryptionConfig, onRawKey?: (raw: Uint8Array) => void) => Promise<CryptoKey>;
|
|
10
20
|
//# sourceMappingURL=argon2.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argon2.d.ts","sourceRoot":"","sources":["../../../src/backup/encryption/argon2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAA0B,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"argon2.d.ts","sourceRoot":"","sources":["../../../src/backup/encryption/argon2.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAA0B,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE9E;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,uBACX,mBAAmB,oBACrB,gBAAgB,KACjC,OAAO,CAAC,UAAU,CAgBpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,WAClB,mBAAmB,oBACT,gBAAgB,aAIvB,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,KACnC,OAAO,CAAC,SAAS,CAcnB,CAAC"}
|
|
@@ -32,10 +32,12 @@ export declare class KeyShareDecryptionError extends Error {
|
|
|
32
32
|
* Encrypts data using the specified encryption version.
|
|
33
33
|
* Always uses the latest encryption configuration for new encryptions by default.
|
|
34
34
|
*/
|
|
35
|
-
export declare const encryptData: ({ data, password, version, }: {
|
|
35
|
+
export declare const encryptData: ({ data, password, version, onRawKey, }: {
|
|
36
36
|
data: string;
|
|
37
37
|
password: string;
|
|
38
38
|
version?: string;
|
|
39
|
+
/** In-process hook receiving the raw derived key bytes — key material, never log. */
|
|
40
|
+
onRawKey?: (raw: Uint8Array) => void;
|
|
39
41
|
}) => Promise<EncryptedData>;
|
|
40
42
|
/**
|
|
41
43
|
* Decrypts data with version-based configuration.
|
|
@@ -43,9 +45,11 @@ export declare const encryptData: ({ data, password, version, }: {
|
|
|
43
45
|
* Falls back to legacy version for backward compatibility if no version is specified.
|
|
44
46
|
* For v3 (Argon2), retries with parallelism=1 if an OperationError occurs.
|
|
45
47
|
*/
|
|
46
|
-
export declare const decryptData: ({ data, password }: {
|
|
48
|
+
export declare const decryptData: ({ data, password, onRawKey, }: {
|
|
47
49
|
data: DecryptionData;
|
|
48
50
|
password: string;
|
|
51
|
+
/** In-process hook receiving the raw derived key bytes — key material, never log. */
|
|
52
|
+
onRawKey?: (raw: Uint8Array) => void;
|
|
49
53
|
}) => Promise<string>;
|
|
50
54
|
/**
|
|
51
55
|
* Gets encryption metadata for a specific version.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/backup/encryption/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAMpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAuB,MAAM,YAAY,CAAC;AAGrF,eAAO,MAAM,sBAAsB,mFAAmF,CAAC;AAEvH,qBAAa,oBAAqB,SAAQ,KAAK;;CAK9C;AAED,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAgB,OAAO,CAAC,EAAE,yBAAyB,CAAC;gBAExC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,yBAAyB,CAAA;KAAE;CAU/E;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/backup/encryption/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAMpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAuB,MAAM,YAAY,CAAC;AAGrF,eAAO,MAAM,sBAAsB,mFAAmF,CAAC;AAEvH,qBAAa,oBAAqB,SAAQ,KAAK;;CAK9C;AAED,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAgB,OAAO,CAAC,EAAE,yBAAyB,CAAC;gBAExC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,yBAAyB,CAAA;KAAE;CAU/E;AA0BD;;;GAGG;AACH,eAAO,MAAM,WAAW,2CAKrB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;CACtC,KAAG,OAAO,CAAC,aAAa,CA2BxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,kCAIrB;IACD,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;CACtC,KAAG,OAAO,CAAC,MAAM,CAyDjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,YAAa,MAAM,KAAG,kBAmBjE,CAAC"}
|
package/src/client.d.ts
CHANGED
|
@@ -418,9 +418,24 @@ export declare class DynamicWalletClient {
|
|
|
418
418
|
rawPublicKey: EcdsaPublicKey | Uint8Array | string | undefined;
|
|
419
419
|
}>;
|
|
420
420
|
private assertEncryptionRoundTrip;
|
|
421
|
-
|
|
421
|
+
/**
|
|
422
|
+
* Diagnostics for backup self-test failures. ONLY runs on the envId-default
|
|
423
|
+
* path (no user password): envId is public, so the salt/iv/version emitted
|
|
424
|
+
* here are non-secret.
|
|
425
|
+
*
|
|
426
|
+
* Reuses the encrypt- and decrypt-side keys that the backup already derived
|
|
427
|
+
* (no extra Argon2 work — important, since the failing clients are the
|
|
428
|
+
* memory-constrained ones) and logs the byte-wise XOR of the two: equal keys
|
|
429
|
+
* give an all-zero diff, any non-zero byte localises the Argon2id drift that
|
|
430
|
+
* broke this round-trip. The XOR of two unknown keys is not usable key
|
|
431
|
+
* material, and the raw keys are never logged.
|
|
432
|
+
*/
|
|
433
|
+
private logSelfTestDiagnostics;
|
|
434
|
+
encryptKeyShare({ keyShare, password, onRawKey, }: {
|
|
422
435
|
keyShare: ClientKeyShare;
|
|
423
436
|
password?: string;
|
|
437
|
+
/** In-process hook receiving the raw derived key bytes — key material, never log. */
|
|
438
|
+
onRawKey?: (raw: Uint8Array) => void;
|
|
424
439
|
}): Promise<string>;
|
|
425
440
|
/**
|
|
426
441
|
* helper function to store encrypted backup by wallet from iframe local storage
|
|
@@ -590,9 +605,11 @@ export declare class DynamicWalletClient {
|
|
|
590
605
|
signedSessionId: string;
|
|
591
606
|
passwordUpdateBatchId?: string;
|
|
592
607
|
}): Promise<void>;
|
|
593
|
-
decryptKeyShare({ keyShare, password }: {
|
|
608
|
+
decryptKeyShare({ keyShare, password, onRawKey, }: {
|
|
594
609
|
keyShare: string;
|
|
595
610
|
password?: string;
|
|
611
|
+
/** In-process hook receiving the raw derived key bytes — key material, never log. */
|
|
612
|
+
onRawKey?: (raw: Uint8Array) => void;
|
|
596
613
|
}): Promise<ClientKeyShare>;
|
|
597
614
|
/**
|
|
598
615
|
* Validates that the provided password is consistent with existing encrypted wallets.
|
package/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,QAAQ,wCAKlB;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B,KAAG,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,QAAQ,wCAKlB;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B,KAAG,IAkBH,CAAC"}
|