SFT-5975: added bull bitcoin export, needs testing
What changed, and why it matters
This commit adds support for exporting wallet data to a new software wallet called Bull Bitcoin. It is a straightforward feature addition with no visible security-relevant changes. There is no indication of a vulnerability, bug fix, or security patch.
No security action required. Treat as a normal feature commit. If reviewing for release readiness, verify the Bull Bitcoin export format matches the wallet's expected import format and that the generic JSON wallet export does not leak unintended key material.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit introduces a new wallet integration module wallets/bull.py that registers Bull Bitcoin as a supported single-signature software wallet using a generic JSON export via QR code (UR2). It also adds the module to the firmware manifest and to the list of supported software wallets. The implementation reuses existing generic JSON wallet creation code and does not introduce new cryptographic, parsing, or trust-boundary logic.
Changed components
ports/stm32/boards/Passport/modules/wallets/bull.pyports/stm32/boards/Passport/modules/wallets/sw_wallets.pyports/stm32/boards/Passport/manifest.pyInspect captured patch +23 / −0
diff --git a/ports/stm32/boards/Passport/manifest.py b/ports/stm32/boards/Passport/manifest.py
index d0f41a5..e43a1f6 100644
--- a/ports/stm32/boards/Passport/manifest.py
+++ b/ports/stm32/boards/Passport/manifest.py
@@ -346,6 +346,7 @@ freeze('$(MPY_DIR)/ports/stm32/boards/Passport/modules',
'wallets/bitcoin_core.py',
'wallets/bluewallet.py',
'wallets/btcpay.py',
+ 'wallets/bull.py',
'wallets/caravan.py',
'wallets/casa.py',
'wallets/coinbits.py',
diff --git a/ports/stm32/boards/Passport/modules/wallets/bull.py b/ports/stm32/boards/Passport/modules/wallets/bull.py
new file mode 100644
index 0000000..4d19ee1
--- /dev/null
+++ b/ports/stm32/boards/Passport/modules/wallets/bull.py
@@ -0,0 +1,20 @@
+# SPDX-FileCopyrightText: © 2021 Foundation Devices, Inc. <hello@foundationdevices.com>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# bull.py - Bull Bitcoin wallet support
+#
+
+from .generic_json_wallet import create_generic_json_wallet
+from .multisig_json import create_multisig_json_wallet
+from .multisig_import import read_multisig_config_from_qr, read_multisig_config_from_microsd
+from data_codecs.qr_type import QRType
+
+BullBitcoinWallet = {
+ 'label': 'Bull',
+ 'sig_types': [
+ {'id': 'single-sig', 'label': 'Single-sig', 'addr_type': None, 'create_wallet': create_generic_json_wallet},
+ ],
+ 'export_modes': [
+ {'id': 'qr', 'label': 'QR Code', 'qr_type': QRType.UR2},
+ ]
+}
diff --git a/ports/stm32/boards/Passport/modules/wallets/sw_wallets.py b/ports/stm32/boards/Passport/modules/wallets/sw_wallets.py
index 9431510..bb6f9b0 100644
--- a/ports/stm32/boards/Passport/modules/wallets/sw_wallets.py
+++ b/ports/stm32/boards/Passport/modules/wallets/sw_wallets.py
@@ -8,6 +8,7 @@ from .bitcoin_core import BitcoinCoreWallet
from .keeper import KeeperWallet
from .bluewallet import BlueWallet
from .btcpay import BtcPayWallet
+from .bull import BullBitcoinWallet
from .casa import CasaWallet
from .coinbits import CoinbitsWallet
# from .caravan import CaravanWallet
@@ -32,6 +33,7 @@ supported_software_wallets = [
KeeperWallet,
BlueWallet,
BtcPayWallet,
+ BullBitcoinWallet,
# CaravanWallet,
CasaWallet,
CoinbitsWallet,
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.