What changed, and why it matters
This commit is a simple code cleanup (refactor) in the SeedSigner project. It removes an unused intermediate screen that asked users to choose a BIP-85 'application mode' and instead takes them directly to choosing 12 or 24 words. The actual behavior for users remains the same because only one application mode (BIP-39 child seed) was ever supported. There is no security issue here.
No security action required. This is a routine refactor. Reviewers may optionally verify that downstream BIP-85 derivation code still correctly uses application number 39' (0x80000027) internally.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change renames SeedBIP85ApplicationModeView to SeedBIP85SelectNumWordsView and removes the self.bip85_app_num = 39 field and related comments. The navigation from SeedOptionsView now jumps directly to the word-count selection screen. The BIP-85 application number 39’ (BIP-39 child mnemonic) is still implicitly the only supported mode. Screenshot generator references are updated accordingly. No cryptographic logic, derivation paths, or input handling changed.
Changed components
src/seedsigner/views/seed_views.pytests/screenshot_generator/generator.pyInspect captured patch +4 / −13
diff --git a/src/seedsigner/views/seed_views.py b/src/seedsigner/views/seed_views.py
index e35c5b8..b7f8b6b 100644
--- a/src/seedsigner/views/seed_views.py
+++ b/src/seedsigner/views/seed_views.py
@@ -629,7 +629,7 @@ class SeedOptionsView(View):
return Destination(SeedBackupView, view_args=dict(seed_num=self.seed_num))
elif button_data[selected_menu_num] == self.BIP85_CHILD_SEED:
- return Destination(SeedBIP85ApplicationModeView, view_args={"seed_num": self.seed_num})
+ return Destination(SeedBIP85SelectNumWordsView, view_args={"seed_num": self.seed_num})
elif button_data[selected_menu_num] == self.DISCARD:
return Destination(SeedDiscardView, view_args=dict(seed_num=self.seed_num))
@@ -1120,17 +1120,9 @@ class SeedWordsView(View):
"""****************************************************************************
- BIP-85 - Derive child mnemonic (seed) flow
+ BIP-85 - Derive child mnemonic (seed) flow (Application number 39')
****************************************************************************"""
-class SeedBIP85ApplicationModeView(View):
- """
- * Ask the user the application type as defined in the BIP-85 spec.
- * Currently only Word mode of 12, 24 words (Application number: 39')
- * Possible future additions are
- * WIF (HDSEED)
- * XPRV (BIP-32)
- """
- # TODO: Future enhancement to display WIF (HD-SEED) and XPRV (BIP-32)?
+class SeedBIP85SelectNumWordsView(View):
WORDS_12 = ButtonOption("12 Words")
WORDS_24 = ButtonOption("24 Words")
@@ -1138,7 +1130,6 @@ class SeedBIP85ApplicationModeView(View):
super().__init__()
self.seed_num = seed_num
self.num_words = 0
- self.bip85_app_num = 39 # TODO: Support other Application numbers; TODO: Define this as a constant
def run(self):
diff --git a/tests/screenshot_generator/generator.py b/tests/screenshot_generator/generator.py
index 91018ea..622a377 100644
--- a/tests/screenshot_generator/generator.py
+++ b/tests/screenshot_generator/generator.py
@@ -304,7 +304,7 @@ def generate_screenshots(locale):
ScreenshotConfig(seed_views.SeedWordsWarningView, dict(seed_num=0)),
ScreenshotConfig(seed_views.SeedWordsView, dict(seed_num=0)),
ScreenshotConfig(seed_views.SeedWordsView, dict(seed_num=0, page_index=2), screenshot_name="SeedWordsView_2"),
- ScreenshotConfig(seed_views.SeedBIP85ApplicationModeView, dict(seed_num=0)),
+ ScreenshotConfig(seed_views.SeedBIP85SelectNumWordsView, dict(seed_num=0)),
ScreenshotConfig(seed_views.SeedBIP85SelectChildIndexView, dict(seed_num=0, num_words=24)),
ScreenshotConfig(seed_views.SeedBIP85InvalidChildIndexView, dict(seed_num=0, num_words=12)),
ScreenshotConfig(seed_views.SeedWordsBackupTestPromptView, dict(seed_num=0)),
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.