fix: adjust fingerprint warning message for rare case (#801)
What changed, and why it matters
This commit fixes a warning message that was being shown to users at the wrong time. The Krux device signs Bitcoin transactions using PSBT files. In rare cases, the device needs to fill in a missing 'fingerprint' (a short identifier for a wallet key) with zeros before signing. The warning 'Fingerprint unset in PSBT' was being displayed whenever this zero-fill happened, even when the wallet's own fingerprint was already zero. That meant users could see a confusing or misleading security warning in a legitimate situation. The change only shows the warning when the wallet actually has a non-zero fingerprint but the PSBT still needs zero filling. This is a user-interface and correctness fix, not a direct theft-of-funds vulnerability, but misleading warnings can train users to ignore real security alerts.
Treat as a low-risk UI/UX fix. Review whether other prompts in the signing path can also be triggered by legitimate zero-fingerprint wallets, and consider adding a test case for a wallet with a zero fingerprint to prevent regression of the warning behavior.
Security signals we found
UI warning false positive suppressed
Fingerprint handling in PSBT signing path
No cryptographic or authorization logic changed
CHANGELOG labels change as a fix for a rare case
Evidence from the diff
In src/krux/pages/home_pages/home.py the condition guarding the ‘Fingerprint unset in PSBT’ prompt is tightened. Previously signer.fill_zero_fingerprint() was called and, if it returned True, a warning was shown. fill_zero_fingerprint() returns True when the PSBT’s fingerprint was missing and had to be set to 0x00000000. The new guard adds self.ctx.wallet.key.fingerprint != b’\x00\x00\x00\x00’ as an additional prerequisite, so the warning is suppressed when the wallet key itself has a zero fingerprint. This prevents a false-positive warning in the rare case where the wallet fingerprint is legitimately zero. The underlying signing behavior is unchanged; only the warning prompt is conditionalized.
Changed components
src/krux/pages/home_pages/home.pyPSBT signing flowFingerprint warning promptInspect captured patch +5 / −1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2c8b41b..387b261 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@ Exported Uniform Resource (UR) QR codes, a widely adopted standard for exchangin
- Bugfix: Screensaver not activating in menu pages without statusbar
- Embit: Improved BIP39 mnemonic validation
- Bug Fix: Corrected handling of certain binary-encoded QR codes
+- Fix fingerprint unset warn message for rare case
- Improved QR code decoding performance and added inverted color QR code detection
# Changelog 25.10.1 - October 2025
diff --git a/src/krux/pages/home_pages/home.py b/src/krux/pages/home_pages/home.py
index efacd43..a4fdced 100644
--- a/src/krux/pages/home_pages/home.py
+++ b/src/krux/pages/home_pages/home.py
@@ -400,7 +400,10 @@ class Home(Page):
return False
# Fix zero fingerprint, it is necessary for the signing process on embit in a few cases
- if signer.fill_zero_fingerprint():
+ if (
+ self.ctx.wallet.key.fingerprint != b"\x00\x00\x00\x00"
+ and signer.fill_zero_fingerprint()
+ ):
self.ctx.display.clear()
self.ctx.display.draw_centered_text(t("Fingerprint unset in PSBT"))
if not self.prompt(t("Proceed?"), BOTTOM_PROMPT_LINE):
Why this scored 32/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.