@dynamic-labs-wallet/browser 1.0.14 → 1.0.16

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 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
- async encryptKeyShare({ keyShare, password }) {
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(()=>this.encryptKeyShare({
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
- await this.assertEncryptionRoundTrip({
5164
- password,
5165
- encrypted: (_preEncryptedDynamicShares_ = preEncryptedDynamicShares[0]) != null ? _preEncryptedDynamicShares_ : (_preEncryptedCloudShares_ = preEncryptedCloudShares[0]) == null ? void 0 : _preEncryptedCloudShares_.encrypted[0],
5166
- walletId: walletData.walletId,
5167
- accountAddress
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', {
@@ -6096,23 +6233,45 @@ class DynamicWalletClient {
6096
6233
  * @param params.googleDriveAccessToken - Optional Google OAuth access token. When provided, the SDK uses it directly
6097
6234
  * instead of looking up the user's linked Google account and exchanging it for a token via the Dynamic backend.
6098
6235
  */ async backupKeySharesToGoogleDrive({ accountAddress, password, signedSessionId, googleDriveAccessToken }) {
6099
- const [updatedBackupServiceAuthToken, resolvedAccessToken] = await Promise.all([
6100
- this.apiClient.getBackupRelayToken({}),
6101
- this.preflightGoogleDriveBackup({
6236
+ // Track whether the Drive token was supplied by the caller (external) or
6237
+ // will be resolved from the user's stored OAuth account (stored_oauth), so
6238
+ // backups using a token we don't control are auditable. Enum only — the
6239
+ // token value itself is never logged.
6240
+ const tokenSource = googleDriveAccessToken === undefined ? 'stored_oauth' : 'external';
6241
+ let success = false;
6242
+ try {
6243
+ const [updatedBackupServiceAuthToken, resolvedAccessToken] = await Promise.all([
6244
+ this.apiClient.getBackupRelayToken({}),
6245
+ this.preflightGoogleDriveBackup({
6246
+ accountAddress,
6247
+ googleDriveAccessToken
6248
+ })
6249
+ ]);
6250
+ this.apiClient.syncBackupServiceAuthToken(updatedBackupServiceAuthToken);
6251
+ await this.backupKeySharesToCloudProvider({
6102
6252
  accountAddress,
6103
- googleDriveAccessToken
6104
- })
6105
- ]);
6106
- this.apiClient.syncBackupServiceAuthToken(updatedBackupServiceAuthToken);
6107
- return this.backupKeySharesToCloudProvider({
6108
- accountAddress,
6109
- password,
6110
- signedSessionId,
6111
- backupLocation: core.BackupLocation.GOOGLE_DRIVE,
6112
- // Forward the resolved token so the downstream upload path doesn't
6113
- // re-fetch it via fetchGoogleDriveAccessToken.
6114
- googleDriveAccessToken: resolvedAccessToken
6115
- });
6253
+ password,
6254
+ signedSessionId,
6255
+ backupLocation: core.BackupLocation.GOOGLE_DRIVE,
6256
+ // Forward the resolved token so the downstream upload path doesn't
6257
+ // re-fetch it via fetchGoogleDriveAccessToken.
6258
+ googleDriveAccessToken: resolvedAccessToken
6259
+ });
6260
+ success = true;
6261
+ } finally{
6262
+ // Audit the token source for every attempt success or failure — so
6263
+ // misuse of an externally-supplied token (e.g. repeated failures) is
6264
+ // traceable, not just completed backups. Enum only; the original error
6265
+ // still propagates after this. Failures log at warn to surface them.
6266
+ const logFn = success ? this.logger.info : this.logger.warn;
6267
+ logFn.call(this.logger, '[DynamicWaasWalletClient] Google Drive backup token source', {
6268
+ accountAddress,
6269
+ environmentId: this.environmentId,
6270
+ userId: this.userId,
6271
+ tokenSource,
6272
+ success
6273
+ });
6274
+ }
6116
6275
  }
6117
6276
  /**
6118
6277
  * Resolve the Google Drive OAuth access token (lazy-fetch via
@@ -7255,7 +7414,8 @@ class DynamicWalletClient {
7255
7414
  sdkVersion,
7256
7415
  forwardMPCClient,
7257
7416
  baseClientKeysharesRelayApiUrl,
7258
- logger: this.logger
7417
+ logger: this.logger,
7418
+ onUnauthorized: internalOptions == null ? void 0 : internalOptions.onUnauthorized
7259
7419
  });
7260
7420
  this.debug = Boolean(debug);
7261
7421
  this.featureFlags = featureFlags || {};
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
- async encryptKeyShare({ keyShare, password }) {
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(()=>this.encryptKeyShare({
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
- await this.assertEncryptionRoundTrip({
5165
- password,
5166
- encrypted: (_preEncryptedDynamicShares_ = preEncryptedDynamicShares[0]) != null ? _preEncryptedDynamicShares_ : (_preEncryptedCloudShares_ = preEncryptedCloudShares[0]) == null ? void 0 : _preEncryptedCloudShares_.encrypted[0],
5167
- walletId: walletData.walletId,
5168
- accountAddress
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', {
@@ -6097,23 +6234,45 @@ class DynamicWalletClient {
6097
6234
  * @param params.googleDriveAccessToken - Optional Google OAuth access token. When provided, the SDK uses it directly
6098
6235
  * instead of looking up the user's linked Google account and exchanging it for a token via the Dynamic backend.
6099
6236
  */ async backupKeySharesToGoogleDrive({ accountAddress, password, signedSessionId, googleDriveAccessToken }) {
6100
- const [updatedBackupServiceAuthToken, resolvedAccessToken] = await Promise.all([
6101
- this.apiClient.getBackupRelayToken({}),
6102
- this.preflightGoogleDriveBackup({
6237
+ // Track whether the Drive token was supplied by the caller (external) or
6238
+ // will be resolved from the user's stored OAuth account (stored_oauth), so
6239
+ // backups using a token we don't control are auditable. Enum only — the
6240
+ // token value itself is never logged.
6241
+ const tokenSource = googleDriveAccessToken === undefined ? 'stored_oauth' : 'external';
6242
+ let success = false;
6243
+ try {
6244
+ const [updatedBackupServiceAuthToken, resolvedAccessToken] = await Promise.all([
6245
+ this.apiClient.getBackupRelayToken({}),
6246
+ this.preflightGoogleDriveBackup({
6247
+ accountAddress,
6248
+ googleDriveAccessToken
6249
+ })
6250
+ ]);
6251
+ this.apiClient.syncBackupServiceAuthToken(updatedBackupServiceAuthToken);
6252
+ await this.backupKeySharesToCloudProvider({
6103
6253
  accountAddress,
6104
- googleDriveAccessToken
6105
- })
6106
- ]);
6107
- this.apiClient.syncBackupServiceAuthToken(updatedBackupServiceAuthToken);
6108
- return this.backupKeySharesToCloudProvider({
6109
- accountAddress,
6110
- password,
6111
- signedSessionId,
6112
- backupLocation: BackupLocation.GOOGLE_DRIVE,
6113
- // Forward the resolved token so the downstream upload path doesn't
6114
- // re-fetch it via fetchGoogleDriveAccessToken.
6115
- googleDriveAccessToken: resolvedAccessToken
6116
- });
6254
+ password,
6255
+ signedSessionId,
6256
+ backupLocation: BackupLocation.GOOGLE_DRIVE,
6257
+ // Forward the resolved token so the downstream upload path doesn't
6258
+ // re-fetch it via fetchGoogleDriveAccessToken.
6259
+ googleDriveAccessToken: resolvedAccessToken
6260
+ });
6261
+ success = true;
6262
+ } finally{
6263
+ // Audit the token source for every attempt success or failure — so
6264
+ // misuse of an externally-supplied token (e.g. repeated failures) is
6265
+ // traceable, not just completed backups. Enum only; the original error
6266
+ // still propagates after this. Failures log at warn to surface them.
6267
+ const logFn = success ? this.logger.info : this.logger.warn;
6268
+ logFn.call(this.logger, '[DynamicWaasWalletClient] Google Drive backup token source', {
6269
+ accountAddress,
6270
+ environmentId: this.environmentId,
6271
+ userId: this.userId,
6272
+ tokenSource,
6273
+ success
6274
+ });
6275
+ }
6117
6276
  }
6118
6277
  /**
6119
6278
  * Resolve the Google Drive OAuth access token (lazy-fetch via
@@ -7256,7 +7415,8 @@ class DynamicWalletClient {
7256
7415
  sdkVersion,
7257
7416
  forwardMPCClient,
7258
7417
  baseClientKeysharesRelayApiUrl,
7259
- logger: this.logger
7418
+ logger: this.logger,
7419
+ onUnauthorized: internalOptions == null ? void 0 : internalOptions.onUnauthorized
7260
7420
  });
7261
7421
  this.debug = Boolean(debug);
7262
7422
  this.featureFlags = featureFlags || {};
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/browser",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
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.14",
7
+ "@dynamic-labs-wallet/core": "1.0.16",
8
8
  "@dynamic-labs-wallet/forward-mpc-client": "0.10.1",
9
- "@dynamic-labs-wallet/primitives": "1.0.14",
9
+ "@dynamic-labs-wallet/primitives": "1.0.16",
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: ({ password, salt }: KeyDerivationParams, encryptionConfig: EncryptionConfig) => Promise<CryptoKey>;
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,uBACN,mBAAmB,oBACrB,gBAAgB,KACjC,OAAO,CAAC,SAAS,CAyBnB,CAAC"}
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;AAoBD;;;GAGG;AACH,eAAO,MAAM,WAAW,iCAIrB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KAAG,OAAO,CAAC,aAAa,CA2BxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,uBAA8B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,MAAM,CAyDhH,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,YAAa,MAAM,KAAG,kBAmBjE,CAAC"}
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
@@ -18,6 +18,12 @@ export interface DynamicWalletClientInternalOptions {
18
18
  */
19
19
  getSignedSessionId?: () => Promise<string>;
20
20
  createWaasSDKContainer?: CreateWaasSDKContainer;
21
+ /**
22
+ * Invoked when a backend call returns 401. Passed via internalOptions (not
23
+ * props) because the per-chain wallet clients forward internalOptions to
24
+ * `super` verbatim, whereas they only forward an explicit subset of props.
25
+ */
26
+ onUnauthorized?: () => void;
21
27
  }
22
28
  export declare class DynamicWalletClient {
23
29
  environmentId: string;
@@ -418,9 +424,24 @@ export declare class DynamicWalletClient {
418
424
  rawPublicKey: EcdsaPublicKey | Uint8Array | string | undefined;
419
425
  }>;
420
426
  private assertEncryptionRoundTrip;
421
- encryptKeyShare({ keyShare, password }: {
427
+ /**
428
+ * Diagnostics for backup self-test failures. ONLY runs on the envId-default
429
+ * path (no user password): envId is public, so the salt/iv/version emitted
430
+ * here are non-secret.
431
+ *
432
+ * Reuses the encrypt- and decrypt-side keys that the backup already derived
433
+ * (no extra Argon2 work — important, since the failing clients are the
434
+ * memory-constrained ones) and logs the byte-wise XOR of the two: equal keys
435
+ * give an all-zero diff, any non-zero byte localises the Argon2id drift that
436
+ * broke this round-trip. The XOR of two unknown keys is not usable key
437
+ * material, and the raw keys are never logged.
438
+ */
439
+ private logSelfTestDiagnostics;
440
+ encryptKeyShare({ keyShare, password, onRawKey, }: {
422
441
  keyShare: ClientKeyShare;
423
442
  password?: string;
443
+ /** In-process hook receiving the raw derived key bytes — key material, never log. */
444
+ onRawKey?: (raw: Uint8Array) => void;
424
445
  }): Promise<string>;
425
446
  /**
426
447
  * helper function to store encrypted backup by wallet from iframe local storage
@@ -590,9 +611,11 @@ export declare class DynamicWalletClient {
590
611
  signedSessionId: string;
591
612
  passwordUpdateBatchId?: string;
592
613
  }): Promise<void>;
593
- decryptKeyShare({ keyShare, password }: {
614
+ decryptKeyShare({ keyShare, password, onRawKey, }: {
594
615
  keyShare: string;
595
616
  password?: string;
617
+ /** In-process hook receiving the raw derived key bytes — key material, never log. */
618
+ onRawKey?: (raw: Uint8Array) => void;
596
619
  }): Promise<ClientKeyShare>;
597
620
  /**
598
621
  * Validates that the provided password is consistent with existing encrypted wallets.
@@ -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,IAYH,CAAC"}
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"}