Merge pull request #649 from Foundation-Devices/bitcoin-safe-wallet-flow
What changed, and why it matters
This commit adds support for a new Bitcoin software wallet called 'Bitcoin Safe' to the Passport hardware wallet firmware. It is a straightforward feature addition that registers the wallet in the firmware's list of supported software wallets and defines how to export wallet data to it (via QR code or microSD card). There is no indication of a security bug, vulnerability, or fix in the changed code.
No security action required. Treat as a normal feature addition. If reviewing for supply-chain assurance, verify that the reused generic_json_wallet, multisig_json, and multisig_import helpers behave correctly when invoked for this new wallet label and filename patterns.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit introduces a new wallet integration module, ports/stm32/boards/Passport/modules/wallets/bitcoin_safe.py, which defines a BitcoinSafeWallet dictionary. It reuses existing generic and multisig JSON export helpers (create_generic_json_wallet, create_multisig_json_wallet) and existing multisig import readers (read_multisig_config_from_qr, read_multisig_config_from_microsd). The new wallet is then added to the frozen manifest and to the supported_software_wallets list in sw_wallets.py. No cryptographic, parsing, or access-control logic is changed.
Changed components
Passport firmware software wallet integration listports/stm32/boards/Passport/modules/wallets/bitcoin_safe.pyports/stm32/boards/Passport/modules/wallets/sw_wallets.pyports/stm32/boards/Passport/manifest.pyInspect captured patch +27 / −0
### ports/stm32/boards/Passport/manifest.py
@@ -343,6 +343,7 @@
freeze('$(MPY_DIR)/ports/stm32/boards/Passport/modules',
('wallets/__init__.py',
'wallets/bitcoin_core.py',
+ 'wallets/bitcoin_safe.py',
'wallets/bluewallet.py',
'wallets/btcpay.py',
'wallets/bull.py',
### ports/stm32/boards/Passport/modules/wallets/bitcoin_safe.py
@@ -0,0 +1,24 @@
+# SPDX-FileCopyrightText: 2026 Foundation Devices, Inc. <hello@foundation.xyz>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# bitcoin_safe.py - Bitcoin Safe 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
+
+BitcoinSafeWallet = {
+ 'label': 'Bitcoin Safe',
+ 'sig_types': [
+ {'id': 'single-sig', 'label': 'Single-sig', 'addr_type': None, 'create_wallet': create_generic_json_wallet},
+ {'id': 'multisig', 'label': 'Multisig', 'addr_type': None, 'create_wallet': create_multisig_json_wallet,
+ 'import_qr': read_multisig_config_from_qr, 'import_microsd': read_multisig_config_from_microsd}
+ ],
+ 'export_modes': [
+ {'id': 'qr', 'label': 'QR Code', 'qr_type': QRType.UR2},
+ {'id': 'microsd', 'label': 'microSD', 'filename_pattern': '{xfp}-bitcoin-safe.json',
+ 'filename_pattern_multisig': '{xfp}-bitcoin-safe-multisig.json'}
+ ]
+}
### ports/stm32/boards/Passport/modules/wallets/sw_wallets.py
@@ -5,6 +5,7 @@
#
from .bitcoin_core import BitcoinCoreWallet
+from .bitcoin_safe import BitcoinSafeWallet
from .keeper import KeeperWallet
from .bluewallet import BlueWallet
from .btcpay import BtcPayWallet
@@ -31,6 +32,7 @@
supported_software_wallets = [
EnvoyWallet,
BitcoinCoreWallet,
+ BitcoinSafeWallet,
KeeperWallet,
BlueWallet,
BtcPayWallet,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.