From: Chris Duncan Date: Fri, 4 Jul 2025 00:45:36 +0000 (-0700) Subject: Handle BIP-44 errors and remove keys that failed. X-Git-Tag: v0.10.5~127 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=ec15832293d81f0a4f45d5b9b41e16c1fd7ac096;p=libnemo.git Handle BIP-44 errors and remove keys that failed. --- diff --git a/src/lib/wallets/bip44-wallet.ts b/src/lib/wallets/bip44-wallet.ts index dcbf72b..9df7fc6 100644 --- a/src/lib/wallets/bip44-wallet.ts +++ b/src/lib/wallets/bip44-wallet.ts @@ -204,6 +204,11 @@ export class Bip44Wallet extends Wallet { const data: any = [] indexes.forEach(i => data.push({ seed: this.seed, index: i })) const privateKeys: KeyPair[] = await this.#poolBip44Ckd.assign(data) + for (let i = 0; i < privateKeys.length; i++) { + if (privateKeys[i].privateKey == null) { + privateKeys.splice(i, 1) + } + } return privateKeys } } diff --git a/src/lib/workers/bip44-ckd.ts b/src/lib/workers/bip44-ckd.ts index cf2acbe..47287e0 100644 --- a/src/lib/workers/bip44-ckd.ts +++ b/src/lib/workers/bip44-ckd.ts @@ -19,10 +19,14 @@ export class Bip44Ckd extends WorkerInterface { static async work (data: any[]): Promise { for (const d of data) { - if (d.coin != null && d.coin !== this.BIP44_PURPOSE) { - d.privateKey = await this.ckd(d.seed, d.coin, d.index) - } else { - d.privateKey = await this.nanoCKD(d.seed, d.index) + try { + if (d.coin != null && d.coin !== this.BIP44_PURPOSE) { + d.privateKey = await this.ckd(d.seed, d.coin, d.index) + } else { + d.privateKey = await this.nanoCKD(d.seed, d.index) + } + } catch (err) { + d.privateKey = null } } return data