What changed, and why it matters
This commit only changes user-facing text labels in the COLDCARD firmware. It expands the abbreviation 'MSG' to 'Message' on screens that have enough space, and updates the corresponding automated tests to match the new wording. There is no change to security logic, cryptography, or how data is handled.
No security action needed. This is a cosmetic wording change. Optionally, the typo 'Messsage' in the QWERTY title could be corrected in a follow-up commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff modifies two files: shared/auth.py and testing/test_bip322.py. In auth.py, the BIP-322 import/signing flow titles and prompts are changed from ‘BIP-322 MSG’ / ‘MSG:’ / ‘Scan MSG from a QR code’ to ‘BIP-322 Message’ (or ‘BIP-322 Messsage’ with a typo on QWERTY devices) / ‘Message:’ / ‘Scan message from a QR code’. The test file updates assertions from exact title equality to substring checks. No functional code paths, validation, hashing, or signing behavior is altered.
Changed components
shared/auth.py UI strings for BIP-322 message signingtesting/test_bip322.py test assertionsInspect captured patch +10 / −9
diff --git a/shared/auth.py b/shared/auth.py
index 2ce92fe..cd267dc 100644
--- a/shared/auth.py
+++ b/shared/auth.py
@@ -293,7 +293,8 @@ class ApproveTransaction(UserAuthorizedAction):
from actions import file_picker
ch = await import_export_prompt("message", is_import=True, force_prompt=True,
intro="Import msg that hashes to 'to_spend' msg hash.",
- key0="to input message manually", title="BIP-322 MSG",
+ key0="to input message manually",
+ title="BIP-322 Messsage" if version.has_qwerty else 'BIP-322 MSG',
no_qr=not version.has_qwerty)
# single sha256 of b'BIP0322-signed-message'
@@ -307,7 +308,7 @@ class ApproveTransaction(UserAuthorizedAction):
msg = await NFC.read_bip322_msg()
elif ch == KEY_QR:
from ux_q1 import QRScannerInteraction
- msg = await QRScannerInteraction().scan_text('Scan MSG from a QR code')
+ msg = await QRScannerInteraction().scan_text('Scan message from a QR code')
else:
choices = await file_picker(suffix='.txt', ux=False)
target = "%s.txt" % b2a_hex(self.psbt.por322_msg_hash).decode()
@@ -330,7 +331,7 @@ class ApproveTransaction(UserAuthorizedAction):
assert msg_hash == self.psbt.por322_msg_hash, "hash verification failed"
ch = await ux_show_story(
msg+"\n\nPress %s to approve message, otherwise %s to exit." % (OK, X),
- title="MSG:"
+ title="Message:"
)
return True if ch == "y" else False
diff --git a/testing/test_bip322.py b/testing/test_bip322.py
index 1940975..b3120ff 100644
--- a/testing/test_bip322.py
+++ b/testing/test_bip322.py
@@ -1,6 +1,6 @@
# (c) Copyright 2026 by Coinkite Inc. This file is covered by license found in COPYING-CC.
#
-# BIP-322 message signing & Proof of Reserves
+# BIP-322 Message Signing and Proof of Reserves
#
import pytest, time
from io import BytesIO
@@ -19,7 +19,7 @@ def verify_msg_bip322_por(cap_story, need_keypress, press_select, press_cancel,
enter_complex, pick_menu_item):
def doit(msg, refuse=False, way="sd", fname=None):
title, story = cap_story()
- assert title == "BIP-322 MSG"
+ assert "BIP-322" in title
# file was already created with bip322_txn fixture above
if "qr" in way and not is_q1:
raise pytest.xfail("Mk4 no QR")
@@ -532,7 +532,7 @@ def test_bip322_msg_import_fail(bip322_txn, start_sign, end_sign, cap_story, nee
start_sign(psbt, finalize=True)
time.sleep(.1)
title, story = cap_story()
- assert title == "BIP-322 MSG"
+ assert 'BIP-322' in title
need_keypress("1") # SD
time.sleep(.1)
@@ -545,7 +545,7 @@ def test_bip322_msg_import_fail(bip322_txn, start_sign, end_sign, cap_story, nee
start_sign(psbt, finalize=True)
time.sleep(.1)
title, story = cap_story()
- assert title == "BIP-322 MSG"
+ assert 'BIP-322' in title
need_keypress("0") # manual input
# leave empty
@@ -560,7 +560,7 @@ def test_bip322_msg_import_fail(bip322_txn, start_sign, end_sign, cap_story, nee
start_sign(psbt, finalize=True)
time.sleep(.1)
title, story = cap_story()
- assert title == "BIP-322 MSG"
+ assert 'BIP-322' in title
need_keypress("0") # manual input
enter_complex("AAA", apply=False, b39pass=False) # msg wrong
@@ -571,4 +571,4 @@ def test_bip322_msg_import_fail(bip322_txn, start_sign, end_sign, cap_story, nee
assert "hash verification failed" in story
press_cancel()
-# EOF
\ No newline at end of file
+# EOF
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.