Merge pull request #1591 from Toporin/patch-satochip-multisig

default to first keystore for signing path if satochip keystore cannot be determined
This commit is contained in:
craigraw 2025-01-15 09:14:06 +02:00 committed by GitHub
commit 7ef51e6a5d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -164,8 +164,9 @@ public class SatoCardApi extends CardApi {
for(PSBTInput psbtInput : psbt.getPsbtInputs()) { for(PSBTInput psbtInput : psbt.getPsbtInputs()) {
if(!psbtInput.isSigned()) { if(!psbtInput.isSigned()) {
WalletNode signingNode = signingNodes.get(psbtInput); WalletNode signingNode = signingNodes.get(psbtInput);
String fullPath = null;
List<Keystore> keystores = wallet.getKeystores(); List<Keystore> keystores = wallet.getKeystores();
// recover derivation path from Satochip keystore
String fullPath = null;
for(int i = 0; i < keystores.size(); i++) { for(int i = 0; i < keystores.size(); i++) {
Keystore keystore = keystores.get(i); Keystore keystore = keystores.get(i);
WalletModel walletModel = keystore.getWalletModel(); WalletModel walletModel = keystore.getWalletModel();
@ -173,11 +174,16 @@ public class SatoCardApi extends CardApi {
String basePath = keystore.getKeyDerivation().getDerivationPath(); String basePath = keystore.getKeyDerivation().getDerivationPath();
String extendedPath = signingNode.getDerivationPath().substring(1); String extendedPath = signingNode.getDerivationPath().substring(1);
fullPath = basePath + extendedPath; fullPath = basePath + extendedPath;
keystore.getPubKey(signingNode);
break; break;
} }
} }
if (fullPath == null) {
// recover a default derivation path from first keystore
Keystore keystore = keystores.get(0);
String basePath = keystore.getKeyDerivation().getDerivationPath();
String extendedPath = signingNode.getDerivationPath().substring(1);
fullPath = basePath + extendedPath;
}
psbtInput.sign(new CardPSBTInputSigner(signingNode, fullPath)); psbtInput.sign(new CardPSBTInputSigner(signingNode, fullPath));
} }
} }