From e7633e4b1a15b1f77223f18a940948c2fd047abf Mon Sep 17 00:00:00 2001 From: Overtorment Date: Mon, 3 May 2021 17:19:54 +0100 Subject: [PATCH] FIX: multisig vault create crash --- class/wallets/abstract-hd-electrum-wallet.js | 11 ++++++++++- class/wallets/multisig-hd-wallet.js | 5 ----- screen/wallets/addMultisigStep2.js | 2 +- screen/wallets/viewEditMultisigCosigners.js | 4 ++-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/class/wallets/abstract-hd-electrum-wallet.js b/class/wallets/abstract-hd-electrum-wallet.js index 13dc1b536..bb9d42a34 100644 --- a/class/wallets/abstract-hd-electrum-wallet.js +++ b/class/wallets/abstract-hd-electrum-wallet.js @@ -1102,7 +1102,7 @@ export class AbstractHDElectrumWallet extends AbstractHDWallet { /** * @param seed {Buffer} Buffer object with seed - * @returns {string} Hex string of fingerprint derived from mnemonics. Always has lenght of 8 chars and correct leading zeroes + * @returns {string} Hex string of fingerprint derived from mnemonics. Always has lenght of 8 chars and correct leading zeroes. All caps */ static seedToFingerprint(seed) { const root = bitcoin.bip32.fromSeed(seed); @@ -1111,6 +1111,15 @@ export class AbstractHDElectrumWallet extends AbstractHDWallet { return hex.toUpperCase(); } + /** + * @param mnemonic {string} Mnemonic phrase (12 or 24 words) + * @returns {string} Hex fingerprint + */ + static mnemonicToFingerprint(mnemonic) { + const seed = bip39.mnemonicToSeed(mnemonic); + return AbstractHDElectrumWallet.seedToFingerprint(seed); + } + /** * @returns {string} Hex string of fingerprint derived from wallet mnemonics. Always has lenght of 8 chars and correct leading zeroes */ diff --git a/class/wallets/multisig-hd-wallet.js b/class/wallets/multisig-hd-wallet.js index dd813f7ae..dbaffc6cc 100644 --- a/class/wallets/multisig-hd-wallet.js +++ b/class/wallets/multisig-hd-wallet.js @@ -1103,9 +1103,4 @@ export class MultisigHDWallet extends AbstractHDElectrumWallet { static isXpubForMultisig(xpub) { return ['xpub', 'Ypub', 'Zpub'].includes(xpub.substring(0, 4)); } - - static mnemonicToFingerprint(mnemonic) { - const seed = bip39.mnemonicToSeed(mnemonic); - return MultisigHDWallet.seedToFingerprint(seed); - } } diff --git a/screen/wallets/addMultisigStep2.js b/screen/wallets/addMultisigStep2.js index c124cf093..3185c519a 100644 --- a/screen/wallets/addMultisigStep2.js +++ b/screen/wallets/addMultisigStep2.js @@ -285,7 +285,7 @@ const WalletsAddMultisigStep2 = () => { }; const setFpCacheForMnemonics = seed => { - staticCache[seed] = MultisigHDWallet.seedToFingerprint(seed); + staticCache[seed] = MultisigHDWallet.mnemonicToFingerprint(seed); return staticCache[seed]; }; diff --git a/screen/wallets/viewEditMultisigCosigners.js b/screen/wallets/viewEditMultisigCosigners.js index 3af06d44c..0aab870f0 100644 --- a/screen/wallets/viewEditMultisigCosigners.js +++ b/screen/wallets/viewEditMultisigCosigners.js @@ -441,7 +441,7 @@ const ViewEditMultisigCosigners = () => { hd.setSecret(mnemonic); if (!hd.validateMnemonic()) return alert(loc.multisig.invalid_mnemonics); - const newFp = MultisigHDWallet.seedToFingerprint(hd.getSecret()); + const newFp = MultisigHDWallet.mnemonicToFingerprint(hd.getSecret()); if (newFp !== wallet.getFingerprint(currentlyEditingCosignerNum)) return alert(loc.multisig.invalid_fingerprint); wallet.deleteCosigner(newFp); @@ -457,7 +457,7 @@ const ViewEditMultisigCosigners = () => { InteractionManager.runAfterInteractions(() => { try { const mnemonics = wallet.getCosigner(index); - const newFp = MultisigHDWallet.seedToFingerprint(mnemonics); + const newFp = MultisigHDWallet.mnemonicToFingerprint(mnemonics); const path = wallet.getCustomDerivationPathForCosigner(index); const xpub = wallet.convertXpubToMultisignatureXpub(MultisigHDWallet.seedToXpub(mnemonics, path)); wallet.deleteCosigner(newFp);