From 186eacc245aa693c11d9f120e909705128d465fc Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Thu, 12 Mar 2026 12:33:56 +0200 Subject: [PATCH] validate bip129 header on import, and fix importing unencrypted bsms files with open wallet --- src/main/java/com/sparrowwallet/sparrow/AppController.java | 1 + src/main/java/com/sparrowwallet/sparrow/io/Bip129.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/com/sparrowwallet/sparrow/AppController.java b/src/main/java/com/sparrowwallet/sparrow/AppController.java index 78227648..191ce5b3 100644 --- a/src/main/java/com/sparrowwallet/sparrow/AppController.java +++ b/src/main/java/com/sparrowwallet/sparrow/AppController.java @@ -1287,6 +1287,7 @@ public class AppController implements Initializable { private boolean attemptImportWallet(File file, SecureString password) { List walletImporters = List.of(new ColdcardSinglesig(), new ColdcardMultisig(), + new Bip129(), new Electrum(), new SpecterDesktop(), new Descriptor(), diff --git a/src/main/java/com/sparrowwallet/sparrow/io/Bip129.java b/src/main/java/com/sparrowwallet/sparrow/io/Bip129.java index 4e20427b..cae0bcee 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/Bip129.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/Bip129.java @@ -235,6 +235,10 @@ public class Bip129 implements KeystoreFileExport, KeystoreFileImport, WalletExp } String header = reader.readLine(); + if(header == null || !header.startsWith("BSMS")) { + throw new ImportException("Not a BSMS file"); + } + String descriptor = reader.readLine(); String paths = reader.readLine(); String address = reader.readLine();