@dynamic-labs-wallet/browser 1.0.13 → 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 +199 -51
- package/index.esm.js +199 -51
- 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,26 +4747,122 @@ 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 /
|
|
4764
|
+
// wrong key material) means the backup is unrecoverable — that's the
|
|
4765
|
+
// terminal, non-retryable condition this self-test exists to catch.
|
|
4766
|
+
// Anything else (most commonly a failure to fetch the Argon2id WASM,
|
|
4767
|
+
// which surfaces as "Fetch error GET .../argon2id/simd.wasm") means the
|
|
4768
|
+
// self-test never actually ran: the crypto engine couldn't load. That's a
|
|
4769
|
+
// transient network error, so rethrow it as-is rather than masking it
|
|
4770
|
+
// behind "backup aborted" — it stays visible in logs and stays retryable.
|
|
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
|
+
});
|
|
4781
|
+
throw new EncryptionSelfTestFailedError({
|
|
4782
|
+
walletId,
|
|
4783
|
+
accountAddress,
|
|
4784
|
+
cause: error
|
|
4785
|
+
});
|
|
4786
|
+
}
|
|
4787
|
+
throw error;
|
|
4788
|
+
}
|
|
4789
|
+
}
|
|
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', {
|
|
4732
4854
|
walletId,
|
|
4733
4855
|
accountAddress,
|
|
4734
|
-
|
|
4856
|
+
error: diagError instanceof Error ? diagError.message : String(diagError)
|
|
4735
4857
|
});
|
|
4736
4858
|
}
|
|
4737
4859
|
}
|
|
4738
|
-
async encryptKeyShare({ keyShare, password }) {
|
|
4860
|
+
async encryptKeyShare({ keyShare, password, onRawKey }) {
|
|
4739
4861
|
const serializedKeyShare = JSON.stringify(keyShare);
|
|
4740
4862
|
const encryptedKeyShare = await encryptData({
|
|
4741
4863
|
data: serializedKeyShare,
|
|
4742
|
-
password: password != null ? password : this.environmentId
|
|
4864
|
+
password: password != null ? password : this.environmentId,
|
|
4865
|
+
onRawKey
|
|
4743
4866
|
});
|
|
4744
4867
|
this.logPasswordSharePresence(password, 'encrypt');
|
|
4745
4868
|
// stringify the encrypted key share, convert to base64, and store it
|
|
@@ -5121,12 +5244,24 @@ class DynamicWalletClient {
|
|
|
5121
5244
|
}
|
|
5122
5245
|
const bitcoinConfig = this.getBitcoinConfigForChain(walletData.chainName, accountAddress);
|
|
5123
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();
|
|
5124
5253
|
// Pre-encrypt all shares once, with retry to handle transient WebCrypto errors.
|
|
5125
5254
|
// This avoids re-running expensive Argon2id key derivation on every retry attempt.
|
|
5126
|
-
const encryptWithRetry = (keyShare)=>retryPromise(()=>
|
|
5255
|
+
const encryptWithRetry = (keyShare)=>retryPromise(async ()=>{
|
|
5256
|
+
let rawKey;
|
|
5257
|
+
const blob = await this.encryptKeyShare({
|
|
5127
5258
|
keyShare,
|
|
5128
|
-
password
|
|
5129
|
-
|
|
5259
|
+
password,
|
|
5260
|
+
onRawKey: encryptKeyByBlob ? (k)=>rawKey = k : undefined
|
|
5261
|
+
});
|
|
5262
|
+
if (encryptKeyByBlob && rawKey) encryptKeyByBlob.set(blob, rawKey);
|
|
5263
|
+
return blob;
|
|
5264
|
+
}, {
|
|
5130
5265
|
maxAttempts: 3,
|
|
5131
5266
|
operationName: 'encrypt key share'
|
|
5132
5267
|
});
|
|
@@ -5149,12 +5284,19 @@ class DynamicWalletClient {
|
|
|
5149
5284
|
var _preEncryptedDynamicShares_;
|
|
5150
5285
|
// Fail fast before any upload if the just-written cipher can't be read
|
|
5151
5286
|
// back with the same key material. Runs once per backup, not per share.
|
|
5152
|
-
|
|
5153
|
-
|
|
5154
|
-
|
|
5155
|
-
|
|
5156
|
-
|
|
5157
|
-
|
|
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
|
+
}
|
|
5158
5300
|
// Step 1: Upload shares in parallel, each with its own retry
|
|
5159
5301
|
const uploadPromises = [];
|
|
5160
5302
|
if (distribution.clientShares.length > 0) {
|
|
@@ -5310,6 +5452,7 @@ class DynamicWalletClient {
|
|
|
5310
5452
|
}));
|
|
5311
5453
|
return backupData;
|
|
5312
5454
|
} catch (error) {
|
|
5455
|
+
var _error_cause_context;
|
|
5313
5456
|
const errorReason = classifyPasswordBackupError(error);
|
|
5314
5457
|
const logFn = isUserActionablePasswordBackupErrorReason(errorReason) ? this.logger.warn : this.logger.error;
|
|
5315
5458
|
logFn.call(this.logger, '[backupSharesWithDistribution] failed', _extends({}, logContext, {
|
|
@@ -5317,7 +5460,11 @@ class DynamicWalletClient {
|
|
|
5317
5460
|
errorReason,
|
|
5318
5461
|
errorName: error instanceof Error ? error.name : undefined,
|
|
5319
5462
|
errorMessage: error instanceof Error ? error.message : String(error),
|
|
5320
|
-
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
|
|
5321
5468
|
}));
|
|
5322
5469
|
logError({
|
|
5323
5470
|
message: 'Error in backupSharesWithDistribution',
|
|
@@ -5666,7 +5813,7 @@ class DynamicWalletClient {
|
|
|
5666
5813
|
throw error;
|
|
5667
5814
|
}
|
|
5668
5815
|
}
|
|
5669
|
-
async decryptKeyShare({ keyShare, password }) {
|
|
5816
|
+
async decryptKeyShare({ keyShare, password, onRawKey }) {
|
|
5670
5817
|
const decodedKeyShare = JSON.parse(Buffer.from(keyShare, 'base64').toString());
|
|
5671
5818
|
// Track whether a user-supplied password was provided so we can emit a
|
|
5672
5819
|
// distinct error class on failure. The default `environmentId` fallback is
|
|
@@ -5678,7 +5825,8 @@ class DynamicWalletClient {
|
|
|
5678
5825
|
try {
|
|
5679
5826
|
const decryptedKeyShare = await decryptData({
|
|
5680
5827
|
data: decodedKeyShare,
|
|
5681
|
-
password: effectivePassword
|
|
5828
|
+
password: effectivePassword,
|
|
5829
|
+
onRawKey
|
|
5682
5830
|
});
|
|
5683
5831
|
this.logPasswordSharePresence(password, 'decrypt');
|
|
5684
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,26 +4748,122 @@ 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 /
|
|
4765
|
+
// wrong key material) means the backup is unrecoverable — that's the
|
|
4766
|
+
// terminal, non-retryable condition this self-test exists to catch.
|
|
4767
|
+
// Anything else (most commonly a failure to fetch the Argon2id WASM,
|
|
4768
|
+
// which surfaces as "Fetch error GET .../argon2id/simd.wasm") means the
|
|
4769
|
+
// self-test never actually ran: the crypto engine couldn't load. That's a
|
|
4770
|
+
// transient network error, so rethrow it as-is rather than masking it
|
|
4771
|
+
// behind "backup aborted" — it stays visible in logs and stays retryable.
|
|
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
|
+
});
|
|
4782
|
+
throw new EncryptionSelfTestFailedError({
|
|
4783
|
+
walletId,
|
|
4784
|
+
accountAddress,
|
|
4785
|
+
cause: error
|
|
4786
|
+
});
|
|
4787
|
+
}
|
|
4788
|
+
throw error;
|
|
4789
|
+
}
|
|
4790
|
+
}
|
|
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', {
|
|
4733
4855
|
walletId,
|
|
4734
4856
|
accountAddress,
|
|
4735
|
-
|
|
4857
|
+
error: diagError instanceof Error ? diagError.message : String(diagError)
|
|
4736
4858
|
});
|
|
4737
4859
|
}
|
|
4738
4860
|
}
|
|
4739
|
-
async encryptKeyShare({ keyShare, password }) {
|
|
4861
|
+
async encryptKeyShare({ keyShare, password, onRawKey }) {
|
|
4740
4862
|
const serializedKeyShare = JSON.stringify(keyShare);
|
|
4741
4863
|
const encryptedKeyShare = await encryptData({
|
|
4742
4864
|
data: serializedKeyShare,
|
|
4743
|
-
password: password != null ? password : this.environmentId
|
|
4865
|
+
password: password != null ? password : this.environmentId,
|
|
4866
|
+
onRawKey
|
|
4744
4867
|
});
|
|
4745
4868
|
this.logPasswordSharePresence(password, 'encrypt');
|
|
4746
4869
|
// stringify the encrypted key share, convert to base64, and store it
|
|
@@ -5122,12 +5245,24 @@ class DynamicWalletClient {
|
|
|
5122
5245
|
}
|
|
5123
5246
|
const bitcoinConfig = this.getBitcoinConfigForChain(walletData.chainName, accountAddress);
|
|
5124
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();
|
|
5125
5254
|
// Pre-encrypt all shares once, with retry to handle transient WebCrypto errors.
|
|
5126
5255
|
// This avoids re-running expensive Argon2id key derivation on every retry attempt.
|
|
5127
|
-
const encryptWithRetry = (keyShare)=>retryPromise(()=>
|
|
5256
|
+
const encryptWithRetry = (keyShare)=>retryPromise(async ()=>{
|
|
5257
|
+
let rawKey;
|
|
5258
|
+
const blob = await this.encryptKeyShare({
|
|
5128
5259
|
keyShare,
|
|
5129
|
-
password
|
|
5130
|
-
|
|
5260
|
+
password,
|
|
5261
|
+
onRawKey: encryptKeyByBlob ? (k)=>rawKey = k : undefined
|
|
5262
|
+
});
|
|
5263
|
+
if (encryptKeyByBlob && rawKey) encryptKeyByBlob.set(blob, rawKey);
|
|
5264
|
+
return blob;
|
|
5265
|
+
}, {
|
|
5131
5266
|
maxAttempts: 3,
|
|
5132
5267
|
operationName: 'encrypt key share'
|
|
5133
5268
|
});
|
|
@@ -5150,12 +5285,19 @@ class DynamicWalletClient {
|
|
|
5150
5285
|
var _preEncryptedDynamicShares_;
|
|
5151
5286
|
// Fail fast before any upload if the just-written cipher can't be read
|
|
5152
5287
|
// back with the same key material. Runs once per backup, not per share.
|
|
5153
|
-
|
|
5154
|
-
|
|
5155
|
-
|
|
5156
|
-
|
|
5157
|
-
|
|
5158
|
-
|
|
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
|
+
}
|
|
5159
5301
|
// Step 1: Upload shares in parallel, each with its own retry
|
|
5160
5302
|
const uploadPromises = [];
|
|
5161
5303
|
if (distribution.clientShares.length > 0) {
|
|
@@ -5311,6 +5453,7 @@ class DynamicWalletClient {
|
|
|
5311
5453
|
}));
|
|
5312
5454
|
return backupData;
|
|
5313
5455
|
} catch (error) {
|
|
5456
|
+
var _error_cause_context;
|
|
5314
5457
|
const errorReason = classifyPasswordBackupError(error);
|
|
5315
5458
|
const logFn = isUserActionablePasswordBackupErrorReason(errorReason) ? this.logger.warn : this.logger.error;
|
|
5316
5459
|
logFn.call(this.logger, '[backupSharesWithDistribution] failed', _extends({}, logContext, {
|
|
@@ -5318,7 +5461,11 @@ class DynamicWalletClient {
|
|
|
5318
5461
|
errorReason,
|
|
5319
5462
|
errorName: error instanceof Error ? error.name : undefined,
|
|
5320
5463
|
errorMessage: error instanceof Error ? error.message : String(error),
|
|
5321
|
-
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
|
|
5322
5469
|
}));
|
|
5323
5470
|
logError({
|
|
5324
5471
|
message: 'Error in backupSharesWithDistribution',
|
|
@@ -5667,7 +5814,7 @@ class DynamicWalletClient {
|
|
|
5667
5814
|
throw error;
|
|
5668
5815
|
}
|
|
5669
5816
|
}
|
|
5670
|
-
async decryptKeyShare({ keyShare, password }) {
|
|
5817
|
+
async decryptKeyShare({ keyShare, password, onRawKey }) {
|
|
5671
5818
|
const decodedKeyShare = JSON.parse(Buffer.from(keyShare, 'base64').toString());
|
|
5672
5819
|
// Track whether a user-supplied password was provided so we can emit a
|
|
5673
5820
|
// distinct error class on failure. The default `environmentId` fallback is
|
|
@@ -5679,7 +5826,8 @@ class DynamicWalletClient {
|
|
|
5679
5826
|
try {
|
|
5680
5827
|
const decryptedKeyShare = await decryptData({
|
|
5681
5828
|
data: decodedKeyShare,
|
|
5682
|
-
password: effectivePassword
|
|
5829
|
+
password: effectivePassword,
|
|
5830
|
+
onRawKey
|
|
5683
5831
|
});
|
|
5684
5832
|
this.logPasswordSharePresence(password, 'decrypt');
|
|
5685
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"}
|