@sidhujag/sysweb3-keyring 1.0.612 → 1.0.613

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/cjs/storage.js CHANGED
@@ -96,7 +96,10 @@ class VaultAuthenticationError extends Error {
96
96
  exports.VaultAuthenticationError = VaultAuthenticationError;
97
97
  const invalidPasswordError = () => new VaultAuthenticationError();
98
98
  const decryptVaultWebCrypto = async (envelope, keyHex) => {
99
- const subtle = globalThis.crypto.subtle;
99
+ const subtle = globalThis?.crypto?.subtle;
100
+ if (!subtle) {
101
+ throw new Error('WebCrypto is required to decrypt this vault');
102
+ }
100
103
  const keyBytes = hexToBytes(keyHex);
101
104
  if (keyBytes.length !== 32) {
102
105
  throw new Error('Vault key must be 32 bytes (hex length 64)');
@@ -122,28 +125,35 @@ const decryptVaultWebCrypto = async (envelope, keyHex) => {
122
125
  return new TextDecoder().decode(pt);
123
126
  };
124
127
  // Single vault for all networks - stores the mnemonic and can derive accounts for any slip44
125
- const setEncryptedVault = async (decryptedVault, pwd) => {
128
+ const setEncryptedVault = async (decryptedVault, pwd, freshVaultKeys) => {
126
129
  return vaultMutex.runExclusive(async () => {
127
130
  const plaintext = JSON.stringify(decryptedVault);
128
- // Prefer WebCrypto AES-GCM when available.
129
- // For v4, callers pass a PBKDF2-derived hex key (32 bytes).
130
- // Fallback to CryptoJS passphrase-AES if WebCrypto is unavailable.
131
- let toStore;
131
+ // Writes never downgrade to unauthenticated passphrase AES. Legacy CBC
132
+ // remains readable below, but missing WebCrypto is an operational failure.
132
133
  const canUseWebCrypto = !!globalThis?.crypto?.subtle &&
133
134
  !!globalThis?.crypto?.getRandomValues;
134
- if (canUseWebCrypto &&
135
- typeof pwd === 'string' &&
136
- isHex(pwd) &&
137
- pwd.length === 64) {
138
- const envelope = await encryptVaultWebCrypto(plaintext, pwd);
139
- toStore = JSON.stringify(envelope);
135
+ if (!canUseWebCrypto) {
136
+ throw new Error('WebCrypto is required for vault encryption');
137
+ }
138
+ if (typeof pwd !== 'string' || !isHex(pwd) || pwd.length !== 64) {
139
+ throw new Error('Vault key must be 32 bytes (hex length 64)');
140
+ }
141
+ const envelope = await encryptVaultWebCrypto(plaintext, pwd);
142
+ const toStore = JSON.stringify(envelope);
143
+ if (freshVaultKeys) {
144
+ // The backend primitive (or native storage Web Lock) covers both the
145
+ // absence check and batch commit across independently bundled contexts.
146
+ const created = await storage.createManyIfAbsent({
147
+ 'vault-keys': freshVaultKeys,
148
+ vault: toStore,
149
+ });
150
+ if (!created)
151
+ throw new Error('Cannot initialize a new vault over existing wallet storage');
140
152
  }
141
153
  else {
142
- const encryptedVault = crypto_js_1.default.AES.encrypt(plaintext, pwd);
143
- toStore = encryptedVault.toString();
154
+ // Existing vault updates retain their migration-specific write ordering.
155
+ await storage.set('vault', toStore);
144
156
  }
145
- // Always use single 'vault' key for all networks
146
- await storage.set('vault', toStore);
147
157
  });
148
158
  };
149
159
  exports.setEncryptedVault = setEncryptedVault;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
@@ -44,11 +44,12 @@ const types_1 = require("../types");
44
44
  const blockbook_cache_1 = require("../utils/blockbook-cache");
45
45
  const derivation_paths_1 = require("../utils/derivation-paths");
46
46
  const psbt_1 = require("../utils/psbt");
47
+ const psbt_account_scope_1 = require("../utils/psbt-account-scope");
47
48
  // Recommended fee changes slowly; cache per explorer to avoid hammering
48
49
  // Blockbook while the user edits amounts on the send screen
49
50
  const FEE_CACHE_TTL_MS = 60000;
50
51
  class SyscoinTransactions {
51
- constructor(getSyscoinSigner, getReadOnlySigner, getState, getAddress, ledgerSigner, trezorSigner) {
52
+ constructor(getSyscoinSigner, getReadOnlySigner, getState, getAddress, ledgerSigner, trezorSigner, captureSigningContext) {
52
53
  this.getTransactionPSBT = async ({ txOptions, outputs, changeAddress, feeRateBN, xpub }, main) => {
53
54
  try {
54
55
  // Use syscoinjs-lib directly for transaction creation
@@ -199,6 +200,41 @@ class SyscoinTransactions {
199
200
  // Sign PSBT with appropriate method - separated for better error handling
200
201
  this.signPSBTWithMethod = async (psbt, isTrezor, isLedger = false) => {
201
202
  const { activeNetwork, activeAccountId, activeAccountType, accounts } = this.getState();
203
+ const account = accounts[activeAccountType]?.[activeAccountId];
204
+ if (!account)
205
+ throw new Error('Active account not found');
206
+ // Device choice belongs to the selected account, never to PSBT/caller flags.
207
+ isTrezor =
208
+ activeAccountType === types_1.KeyringAccountType.Trezor ||
209
+ account.isTrezorWallet === true;
210
+ isLedger =
211
+ activeAccountType === types_1.KeyringAccountType.Ledger ||
212
+ account.isLedgerWallet === true;
213
+ const assertSession = this.captureSigningContext?.() || (() => undefined);
214
+ const scope = {
215
+ account: { address: account.address, xpub: account.xpub },
216
+ accountId: activeAccountId,
217
+ accountType: activeAccountType,
218
+ network: { ...activeNetwork },
219
+ };
220
+ const assertCurrent = () => {
221
+ assertSession();
222
+ const current = this.getState();
223
+ const selected = current.accounts[current.activeAccountType]?.[current.activeAccountId];
224
+ if (current.activeAccountId !== activeAccountId ||
225
+ current.activeAccountType !== activeAccountType ||
226
+ selected?.address !== scope.account.address ||
227
+ selected?.xpub !== scope.account.xpub ||
228
+ current.activeNetwork.kind !== scope.network.kind ||
229
+ current.activeNetwork.chainId !== scope.network.chainId ||
230
+ current.activeNetwork.slip44 !== scope.network.slip44 ||
231
+ current.activeNetwork.url !== scope.network.url) {
232
+ throw new Error('Wallet signing context changed');
233
+ }
234
+ };
235
+ assertCurrent();
236
+ if (isTrezor || isLedger)
237
+ (0, psbt_account_scope_1.assertPsbtAccountScope)(psbt, scope);
202
238
  if (isLedger) {
203
239
  // CRITICAL: Enhance PSBT with required Ledger fields
204
240
  const account = accounts[activeAccountType]?.[activeAccountId];
@@ -218,9 +254,16 @@ class SyscoinTransactions {
218
254
  if (Array.isArray(inputMetas) &&
219
255
  Array.isArray(txInputs) &&
220
256
  txInputs.length > 0) {
221
- // Fetch and add nonWitnessUtxo for all inputs
257
+ // Fetch and add nonWitnessUtxo where Ledger still needs it.
222
258
  const txFetchPromises = txInputs.map(async (_txInput, index) => {
223
259
  try {
260
+ // Keep existing previous transactions, and finalized witness
261
+ // inputs that already carry the prevout data needed by Ledger.
262
+ const input = inputMetas[index];
263
+ if (input?.nonWitnessUtxo ||
264
+ (input?.witnessUtxo &&
265
+ (input.finalScriptSig || input.finalScriptWitness)))
266
+ return { index, success: true };
224
267
  const tx = txInputs[index];
225
268
  const prevTxId = Buffer.from(tx.hash).reverse().toString('hex');
226
269
  // Fetch the raw transaction
@@ -267,7 +310,10 @@ class SyscoinTransactions {
267
310
  `Ledger devices require this data for signing.`);
268
311
  }
269
312
  }
313
+ assertCurrent();
270
314
  const enhancedPsbt = await this.ledger.convertToLedgerFormat(psbt, accountXpub, accountId, activeNetwork.currency, activeNetwork.slip44);
315
+ assertCurrent();
316
+ (0, psbt_account_scope_1.assertPsbtAccountScope)(enhancedPsbt, scope);
271
317
  // Get wallet policy for Ledger
272
318
  const fingerprint = await this.ledger.ledgerUtxoClient.getMasterFingerprint();
273
319
  const hdPath = (0, derivation_paths_1.getAccountDerivationPath)(activeNetwork.currency, activeNetwork.slip44, accountId);
@@ -294,14 +340,27 @@ class SyscoinTransactions {
294
340
  }
295
341
  // Convert to PsbtV2 for direct signing without intermediate base64 encode/decode
296
342
  const psbtV2 = new psbtv2_1.PsbtV2().fromBitcoinJS(enhancedPsbt);
343
+ assertCurrent();
344
+ (0, psbt_account_scope_1.assertPsbtAccountScope)(enhancedPsbt, scope);
297
345
  const signatureEntries = await this.ledger.ledgerUtxoClient.signPsbt(psbtV2, walletPolicy, hmac);
346
+ assertCurrent();
298
347
  signatureEntries.forEach(([inputIndex, partialSig]) => {
348
+ const input = enhancedPsbt.data.inputs[inputIndex];
349
+ if (!input ||
350
+ input.finalScriptSig ||
351
+ input.finalScriptWitness ||
352
+ !input.bip32Derivation?.some((derivation) => Buffer.from(derivation.pubkey).equals(Buffer.from(partialSig.pubkey)))) {
353
+ throw new Error('PSBT input is outside the approved account');
354
+ }
299
355
  enhancedPsbt.updateInput(inputIndex, {
300
356
  partialSig: [partialSig],
301
357
  });
302
358
  });
303
- // Finalize all inputs
304
- enhancedPsbt.finalizeAllInputs();
359
+ // Preserve external inputs that were finalized before device signing.
360
+ enhancedPsbt.data.inputs.forEach((input, index) => {
361
+ if (!input.finalScriptSig && !input.finalScriptWitness)
362
+ enhancedPsbt.finalizeInput(index);
363
+ });
305
364
  return enhancedPsbt;
306
365
  }
307
366
  else if (isTrezor) {
@@ -317,7 +376,9 @@ class SyscoinTransactions {
317
376
  coin: activeNetwork.currency.toLowerCase(),
318
377
  network: bitcoinjsNetwork || undefined, // Pass network config for isScriptHash check
319
378
  });
379
+ assertCurrent();
320
380
  const signedPsbt = await this.trezor.signUtxoTransaction(trezorTx, psbt);
381
+ assertCurrent();
321
382
  return signedPsbt;
322
383
  }
323
384
  else {
@@ -362,7 +423,9 @@ class SyscoinTransactions {
362
423
  }
363
424
  const needsAnyPath = psbt?.data?.inputs?.some((input) => {
364
425
  const unknowns = input?.unknownKeyVals || [];
365
- return !unknowns.some((kv) => kv?.key?.toString?.() === 'path');
426
+ return (!input.bip32Derivation?.length &&
427
+ !input.tapBip32Derivation?.length &&
428
+ !unknowns.some((kv) => kv?.key?.toString?.() === 'path'));
366
429
  });
367
430
  if (needsAnyPath &&
368
431
  accountXpub &&
@@ -419,11 +482,14 @@ class SyscoinTransactions {
419
482
  catch (_e) {
420
483
  // Best-effort enrichment; if it fails, fall back to default signing error path.
421
484
  }
485
+ assertCurrent();
486
+ (0, psbt_account_scope_1.assertPsbtAccountScope)(psbt, scope);
422
487
  const { hd } = this.getSigner();
423
488
  const signedPsbt = await this.signPSBTWithSigner({
424
489
  psbt,
425
490
  signer: hd,
426
491
  });
492
+ assertCurrent();
427
493
  return signedPsbt;
428
494
  }
429
495
  };
@@ -532,7 +598,43 @@ class SyscoinTransactions {
532
598
  };
533
599
  this.signPSBT = async ({ psbt, isTrezor = false, isLedger = false, }) => {
534
600
  const psbtObj = psbt_1.PsbtUtils.fromPali(psbt, this.getState().activeNetwork);
601
+ // Scope validation temporarily removes other signers' hints. Preserve the
602
+ // public metadata for the next cosigner, without exposing it to our signer.
603
+ const cosignerMetadata = psbtObj.data.inputs.map((input, index) => ({
604
+ hash: Buffer.from(psbtObj.txInputs[index].hash),
605
+ index: psbtObj.txInputs[index].index,
606
+ bip32Derivation: input.bip32Derivation?.map((value) => ({ ...value })),
607
+ tapBip32Derivation: input.tapBip32Derivation?.map((value) => ({
608
+ ...value,
609
+ })),
610
+ path: input.unknownKeyVals
611
+ ?.filter((value) => Buffer.from(value.key).toString() === 'path')
612
+ .map((value) => ({
613
+ key: Buffer.from(value.key),
614
+ value: Buffer.from(value.value),
615
+ }))[0],
616
+ }));
535
617
  const signedPsbt = await this.signPSBTWithMethod(psbtObj, isTrezor, isLedger);
618
+ signedPsbt.data.inputs.forEach((input, index) => {
619
+ if (input.finalScriptSig || input.finalScriptWitness)
620
+ return;
621
+ const metadata = cosignerMetadata[index];
622
+ if (!metadata)
623
+ return;
624
+ const signed = signedPsbt.txInputs[index];
625
+ if (!signed ||
626
+ metadata.index !== signed.index ||
627
+ !metadata.hash.equals(Buffer.from(signed.hash)))
628
+ throw new Error('Wallet signing context changed');
629
+ if (metadata.bip32Derivation)
630
+ input.bip32Derivation = metadata.bip32Derivation;
631
+ if (metadata.tapBip32Derivation)
632
+ input.tapBip32Derivation = metadata.tapBip32Derivation;
633
+ if (metadata.path) {
634
+ input.unknownKeyVals = (input.unknownKeyVals || []).filter((value) => Buffer.from(value.key).toString() !== 'path');
635
+ input.unknownKeyVals.push(metadata.path);
636
+ }
637
+ });
536
638
  return psbt_1.PsbtUtils.toPali(signedPsbt);
537
639
  };
538
640
  this.sendTransaction = async (psbt) => {
@@ -546,6 +648,7 @@ class SyscoinTransactions {
546
648
  this.getState = getState;
547
649
  this.getAddress = getAddress;
548
650
  this.trezor = trezorSigner;
651
+ this.captureSigningContext = captureSigningContext;
549
652
  this.ledger = ledgerSigner;
550
653
  }
551
654
  }
@@ -1 +1 @@
1
- {"version":3,"file":"syscoin.js","sourceRoot":"","sources":["../../../src/transactions/syscoin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syscoin.js","sourceRoot":"","sources":["../../../src/transactions/syscoin.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,24 @@ const { fromBase58Check, fromBech32 } = utxo_lib_1.address;
53
53
  const initialHDPath = `m/44'/60'/0'/0/0`;
54
54
  const DELAY_BETWEEN_POPUPS = 2000; // Increased from 1000ms to 2000ms for more reliable operation
55
55
  const stripHexPrefix = (value) => value.startsWith('0x') || value.startsWith('0X') ? value.slice(2) : value;
56
+ const serializeWitness = (witness) => {
57
+ const stack = witness.map((item) => buffer_1.Buffer.from(item));
58
+ const size = utxo_lib_1.bufferutils.varIntSize(stack.length) +
59
+ stack.reduce((total, item) => total + utxo_lib_1.bufferutils.varIntSize(item.length) + item.length, 0);
60
+ const writer = new utxo_lib_1.bufferutils.BufferWriter(buffer_1.Buffer.alloc(size));
61
+ writer.writeVector(stack);
62
+ return writer.buffer;
63
+ };
64
+ const finalizedFields = (input) => {
65
+ if (!input.finalScriptSig && !input.finalScriptWitness)
66
+ return null;
67
+ return {
68
+ scriptSig: buffer_1.Buffer.from(input.finalScriptSig || []).toString('hex'),
69
+ witness: input.finalScriptWitness
70
+ ? buffer_1.Buffer.from(input.finalScriptWitness).toString('hex')
71
+ : '00',
72
+ };
73
+ };
56
74
  class TrezorKeyring {
57
75
  constructor() {
58
76
  this.hdPath = initialHDPath;
@@ -319,34 +337,72 @@ class TrezorKeyring {
319
337
  * @returns signature object
320
338
  */
321
339
  async signUtxoTransaction(utxoTransaction, psbt) {
322
- return this.executeWithRetry(async () => {
323
- const { payload, success } = await connect_webextension_1.default.signTransaction(utxoTransaction);
324
- if (success) {
325
- const tx = bitcoinjs.Transaction.fromHex(payload.serializedTx);
326
- for (const i of this.range(psbt.data.inputs.length)) {
327
- if (tx.ins[i].witness == null) {
328
- throw new Error('Please move your funds to a Segwit address: https://wiki.trezor.io/Account');
329
- }
330
- const partialSig = [
331
- {
332
- pubkey: tx.ins[i].witness[1],
333
- signature: tx.ins[i].witness[0],
334
- },
335
- ];
336
- psbt.updateInput(i, { partialSig });
337
- }
338
- try {
339
- syscoinjs.utils.finalizePSBT(psbt);
340
- }
341
- catch (err) {
342
- console.log(err);
343
- }
344
- return psbt;
345
- }
346
- else {
347
- throw new Error('Trezor sign failed: ' + payload.error);
348
- }
340
+ // Capture approval before the device await. Witnesses and scriptSigs are
341
+ // signatures, but every unsigned transaction field must remain identical.
342
+ const unsignedSnapshot = (transaction) => JSON.stringify({
343
+ version: transaction.version,
344
+ locktime: transaction.locktime,
345
+ inputs: (transaction.txInputs || transaction.ins).map((input) => ({
346
+ hash: buffer_1.Buffer.from(input.hash).toString('hex'),
347
+ index: input.index,
348
+ sequence: input.sequence,
349
+ })),
350
+ outputs: (transaction.txOutputs || transaction.outs).map((output) => ({
351
+ script: buffer_1.Buffer.from(output.script).toString('hex'),
352
+ value: output.value.toString(),
353
+ })),
354
+ });
355
+ const approvedTransaction = unsignedSnapshot(psbt);
356
+ const approvedFinalInputs = psbt.data.inputs.map(finalizedFields);
357
+ const payload = await this.executeWithRetry(async () => {
358
+ const response = await connect_webextension_1.default.signTransaction(utxoTransaction);
359
+ if (!response.success) {
360
+ throw new Error('Trezor sign failed: ' + response.payload.error);
361
+ }
362
+ return response.payload;
349
363
  }, 'signUtxoTransaction');
364
+ const tx = bitcoinjs.Transaction.fromHex(payload.serializedTx);
365
+ if (unsignedSnapshot(tx) !== approvedTransaction ||
366
+ unsignedSnapshot(psbt) !== approvedTransaction) {
367
+ throw new Error('Trezor returned a different unsigned transaction');
368
+ }
369
+ // Finalized inputs belong to another signer. Neither the device response
370
+ // nor concurrent code may replace their approved scripts or witnesses.
371
+ if (approvedFinalInputs.some((approved, index) => {
372
+ const current = finalizedFields(psbt.data.inputs[index]);
373
+ if (!approved)
374
+ return current !== null;
375
+ return (!current ||
376
+ current.scriptSig !== approved.scriptSig ||
377
+ current.witness !== approved.witness ||
378
+ buffer_1.Buffer.from(tx.ins[index].script).toString('hex') !==
379
+ approved.scriptSig ||
380
+ serializeWitness(tx.ins[index].witness || []).toString('hex') !==
381
+ approved.witness);
382
+ })) {
383
+ throw new Error('Trezor changed an already-finalized input');
384
+ }
385
+ for (const i of this.range(psbt.data.inputs.length)) {
386
+ if (approvedFinalInputs[i])
387
+ continue;
388
+ if (tx.ins[i].witness == null || tx.ins[i].witness.length !== 2) {
389
+ throw new Error('Please move your funds to a Segwit address: https://wiki.trezor.io/Account');
390
+ }
391
+ const partialSig = [
392
+ {
393
+ pubkey: tx.ins[i].witness[1],
394
+ signature: tx.ins[i].witness[0],
395
+ },
396
+ ];
397
+ psbt.updateInput(i, { partialSig });
398
+ }
399
+ try {
400
+ syscoinjs.utils.finalizePSBT(psbt);
401
+ }
402
+ catch (err) {
403
+ console.log(err);
404
+ }
405
+ return psbt;
350
406
  }
351
407
  setHdPath(coin, accountIndex, slip44) {
352
408
  if ((0, derivation_paths_1.isEvmCoin)(coin, slip44)) {
@@ -436,20 +492,48 @@ class TrezorKeyring {
436
492
  const trezortx = {};
437
493
  trezortx.coin = coin;
438
494
  trezortx.version = psbt.version;
495
+ trezortx.locktime = psbt.locktime;
439
496
  trezortx.inputs = [];
440
497
  trezortx.outputs = [];
441
498
  for (let i = 0; i < psbt.txInputs.length; i++) {
442
499
  const input = psbt.txInputs[i];
443
500
  const inputItem = {};
444
501
  inputItem.prev_index = input.index;
445
- const hashBuf = buffer_1.Buffer.isBuffer(input.hash)
446
- ? input.hash
447
- : buffer_1.Buffer.from(input.hash);
502
+ const hashBuf = buffer_1.Buffer.from(input.hash);
448
503
  const prevHashHex = hashBuf.reverse().toString('hex'); // 64-char hex
449
504
  inputItem.prev_hash = prevHashHex;
450
- if (input.sequence)
505
+ if (input.sequence !== undefined)
451
506
  inputItem.sequence = input.sequence;
452
507
  const dataInput = psbt.data.inputs[i];
508
+ if (dataInput.finalScriptSig || dataInput.finalScriptWitness) {
509
+ // A finalized co-signer input is supplied as public transaction data,
510
+ // never as a private derivation request to this device.
511
+ let prevout = dataInput.witnessUtxo;
512
+ if (dataInput.nonWitnessUtxo) {
513
+ const previous = bitcoinjs.Transaction.fromBuffer(buffer_1.Buffer.from(dataInput.nonWitnessUtxo));
514
+ const output = previous.outs[input.index];
515
+ if (!buffer_1.Buffer.from(previous.getHash()).equals(buffer_1.Buffer.from(input.hash)) ||
516
+ !output ||
517
+ (prevout &&
518
+ (!buffer_1.Buffer.from(prevout.script).equals(buffer_1.Buffer.from(output.script)) ||
519
+ prevout.value.toString() !== output.value.toString()))) {
520
+ throw new Error('Trezor external input has an invalid prevout');
521
+ }
522
+ prevout = output;
523
+ }
524
+ if (!prevout || prevout.value === undefined || !prevout.script) {
525
+ throw new Error('Trezor external input is missing its prevout');
526
+ }
527
+ inputItem.script_type = 'EXTERNAL';
528
+ inputItem.amount = prevout.value.toString();
529
+ inputItem.script_pubkey = buffer_1.Buffer.from(prevout.script).toString('hex');
530
+ if (dataInput.finalScriptSig)
531
+ inputItem.script_sig = buffer_1.Buffer.from(dataInput.finalScriptSig).toString('hex');
532
+ if (dataInput.finalScriptWitness)
533
+ inputItem.witness = buffer_1.Buffer.from(dataInput.finalScriptWitness).toString('hex');
534
+ trezortx.inputs.push(inputItem);
535
+ continue;
536
+ }
453
537
  // Resolve derivation path for this input
454
538
  let resolvedPath = null;
455
539
  const tapDer = dataInput.tapBip32Derivation && dataInput.tapBip32Derivation.length > 0