on master help sign in
bitcoin: modify path in a more robust way when signing
ef3340apkova
src/lib/validators.js+3−1
@@ -147,7 +147,9 @@ export const validateSignablePsbt = btcWallet => base64 => {
147 return !psbt.data.inputs.some((input, idx) => {
147 return !psbt.data.inputs.some((input, idx) => {
148 try {
148 try {
149 // removing already derived part, eg m/84'/0'/0'/0/0 becomes 0/0
149 // removing already derived part, eg m/84'/0'/0'/0/0 becomes 0/0
150− const path = input.bip32Derivation[0].path.substring(12);
150+ const path = input.bip32Derivation[0].path
151+ .split("m/84'/0'/0'/")
152+ .join('');
151 const prv = btcWallet.derivePath(path).privateKey;
153 const prv = btcWallet.derivePath(path).privateKey;
152 psbt.signInput(idx, bitcoin.ECPair.fromPrivateKey(prv));
154 psbt.signInput(idx, bitcoin.ECPair.fromPrivateKey(prv));
153 return true;
155 return true;
src/views/Bitcoin.js+3−1
@@ -67,7 +67,9 @@ export default function Bitcoin() {
67 const hex = newPsbt.data.inputs
67 const hex = newPsbt.data.inputs
68 .reduce((psbt, input, idx) => {
68 .reduce((psbt, input, idx) => {
69 // removing already derived part, eg m/84'/0'/0'/0/0 becomes 0/0
69 // removing already derived part, eg m/84'/0'/0'/0/0 becomes 0/0
70− const path = input.bip32Derivation[0].path.substring(12);
70+ const path = input.bip32Derivation[0].path
71+ .split("m/84'/0'/0'/")
72+ .join('');
71 const prv = btcWallet.derivePath(path).privateKey;
73 const prv = btcWallet.derivePath(path).privateKey;
72 try {
74 try {
73 return psbt.signInput(idx, bitcoin.ECPair.fromPrivateKey(prv));
75 return psbt.signInput(idx, bitcoin.ECPair.fromPrivateKey(prv));