Skip to content

Commit 19d2711

Browse files
authored
fix btc-only version issues (#366)
* fix(btc-only): fix firmware response and UI issues. * feat(ui):optimize progress bar display.
1 parent 24841fd commit 19d2711

3 files changed

Lines changed: 85 additions & 68 deletions

File tree

core/embed/trezorhal/se_thd89.c

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1986,17 +1986,20 @@ secbool se_gen_session_seed(const char *passphrase, bool cardano) {
19861986
if (!session_generate_cardano_seed(passphrase, &percent)) {
19871987
return secfalse;
19881988
}
1989-
while (percent != 100) {
1990-
if (ui_callback) {
1991-
ui_callback(0, percent * 10, NULL);
1989+
if (percent != 100) {
1990+
while (percent != 100) {
1991+
if (ui_callback) {
1992+
ui_callback(0, percent * 10, NULL);
1993+
}
1994+
if (!session_generate_seed_percent(&percent)) {
1995+
return secfalse;
1996+
}
1997+
hal_delay(100);
19921998
}
1993-
if (!session_generate_seed_percent(&percent)) {
1994-
return secfalse;
1999+
2000+
if (ui_callback) {
2001+
ui_callback(0, 100 * 10, NULL);
19952002
}
1996-
hal_delay(100);
1997-
}
1998-
if (ui_callback) {
1999-
ui_callback(0, 100 * 10, NULL);
20002003
}
20012004
} else {
20022005
if (status & 0x80) {
@@ -2005,18 +2008,20 @@ secbool se_gen_session_seed(const char *passphrase, bool cardano) {
20052008
if (!session_generate_master_seed(passphrase, &percent)) {
20062009
return secfalse;
20072010
}
2008-
while (percent != 100) {
2009-
if (ui_callback) {
2010-
ui_callback(0, percent * 10, NULL);
2011+
if (percent != 100) {
2012+
while (percent != 100) {
2013+
if (ui_callback) {
2014+
ui_callback(0, percent * 10, NULL);
2015+
}
2016+
if (!session_generate_seed_percent(&percent)) {
2017+
return secfalse;
2018+
}
2019+
hal_delay(100);
20112020
}
2012-
if (!session_generate_seed_percent(&percent)) {
2013-
return secfalse;
2014-
}
2015-
hal_delay(100);
2016-
}
20172021

2018-
if (ui_callback) {
2019-
ui_callback(0, 100 * 10, NULL);
2022+
if (ui_callback) {
2023+
ui_callback(0, 100 * 10, NULL);
2024+
}
20202025
}
20212026
}
20222027

core/src/apps/workflow_handlers.py

Lines changed: 52 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,11 @@ def find_registered_handler(iface: WireInterface, msg_type: int) -> Handler | No
392392
module = __import__(modname, None, None, (handler_name,), 0)
393393
handler = getattr(module, handler_name)
394394

395-
if iface is not None and _is_address_derivation_message(msg_type):
395+
if (
396+
handler is not None
397+
and iface is not None
398+
and _is_address_derivation_message(msg_type)
399+
):
396400
return _wrap_with_version_check(handler)
397401

398402
return handler
@@ -401,47 +405,53 @@ def find_registered_handler(iface: WireInterface, msg_type: int) -> Handler | No
401405

402406

403407
def _is_address_derivation_message(msg_type: int) -> bool:
404-
return msg_type in (
405-
MessageType.GetAddress,
406-
MessageType.GetPublicKey,
407-
MessageType.EthereumGetAddress,
408-
MessageType.EthereumGetAddressOneKey,
409-
MessageType.MoneroGetAddress,
410-
MessageType.NEMGetAddress,
411-
MessageType.NeoGetAddress,
412-
MessageType.StellarGetAddress,
413-
MessageType.RippleGetAddress,
414-
MessageType.CardanoGetAddress,
415-
MessageType.TezosGetAddress,
416-
MessageType.BinanceGetAddress,
417-
MessageType.ConfluxGetAddress,
418-
MessageType.TonGetAddress,
419-
MessageType.TronGetAddress,
420-
MessageType.SolanaGetAddress,
421-
MessageType.StarcoinGetAddress,
422-
MessageType.NearGetAddress,
423-
MessageType.AptosGetAddress,
424-
MessageType.AlgorandGetAddress,
425-
MessageType.PolkadotGetAddress,
426-
MessageType.SuiGetAddress,
427-
MessageType.FilecoinGetAddress,
428-
MessageType.CosmosGetAddress,
429-
MessageType.KaspaGetAddress,
430-
MessageType.NexaGetAddress,
431-
MessageType.NervosGetAddress,
432-
MessageType.ScdoGetAddress,
433-
MessageType.AlephiumGetAddress,
434-
MessageType.BenfenGetAddress,
435-
# Add other GetPublicKey variants
436-
MessageType.BinanceGetPublicKey,
437-
MessageType.CardanoGetPublicKey,
438-
MessageType.EthereumGetPublicKey,
439-
MessageType.EthereumGetPublicKeyOneKey,
440-
MessageType.TezosGetPublicKey,
441-
MessageType.StarcoinGetPublicKey,
442-
# MessageType.EOSGetPublicKey,
443-
MessageType.NostrGetPublicKey,
444-
)
408+
if utils.BITCOIN_ONLY:
409+
return msg_type in (
410+
MessageType.GetAddress,
411+
MessageType.GetPublicKey,
412+
)
413+
else:
414+
return msg_type in (
415+
MessageType.GetAddress,
416+
MessageType.GetPublicKey,
417+
MessageType.EthereumGetAddress,
418+
MessageType.EthereumGetAddressOneKey,
419+
MessageType.MoneroGetAddress,
420+
MessageType.NEMGetAddress,
421+
MessageType.NeoGetAddress,
422+
MessageType.StellarGetAddress,
423+
MessageType.RippleGetAddress,
424+
MessageType.CardanoGetAddress,
425+
MessageType.TezosGetAddress,
426+
MessageType.BinanceGetAddress,
427+
MessageType.ConfluxGetAddress,
428+
MessageType.TonGetAddress,
429+
MessageType.TronGetAddress,
430+
MessageType.SolanaGetAddress,
431+
MessageType.StarcoinGetAddress,
432+
MessageType.NearGetAddress,
433+
MessageType.AptosGetAddress,
434+
MessageType.AlgorandGetAddress,
435+
MessageType.PolkadotGetAddress,
436+
MessageType.SuiGetAddress,
437+
MessageType.FilecoinGetAddress,
438+
MessageType.CosmosGetAddress,
439+
MessageType.KaspaGetAddress,
440+
MessageType.NexaGetAddress,
441+
MessageType.NervosGetAddress,
442+
MessageType.ScdoGetAddress,
443+
MessageType.AlephiumGetAddress,
444+
MessageType.BenfenGetAddress,
445+
# Add other GetPublicKey variants
446+
MessageType.BinanceGetPublicKey,
447+
MessageType.CardanoGetPublicKey,
448+
MessageType.EthereumGetPublicKey,
449+
MessageType.EthereumGetPublicKeyOneKey,
450+
MessageType.TezosGetPublicKey,
451+
MessageType.StarcoinGetPublicKey,
452+
# MessageType.EOSGetPublicKey,
453+
MessageType.NostrGetPublicKey,
454+
)
445455

446456

447457
def _wrap_with_version_check(handler):

core/src/trezor/lvglui/scrs/homescreen.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1562,11 +1562,12 @@ def __init__(self, prev_scr=None):
15621562
self.wallet = ListItemBtn(
15631563
self.container, _(i18n_keys.ITEM__WALLET), left_img_src="A:/res/wallet.png"
15641564
)
1565-
self.fido_keys = ListItemBtn(
1566-
self.container,
1567-
_(i18n_keys.FIDO_FIDO_KEYS_LABEL),
1568-
left_img_src="A:/res/fido-keys.png",
1569-
)
1565+
if not utils.BITCOIN_ONLY:
1566+
self.fido_keys = ListItemBtn(
1567+
self.container,
1568+
_(i18n_keys.FIDO_FIDO_KEYS_LABEL),
1569+
left_img_src="A:/res/fido-keys.png",
1570+
)
15701571
self.about = ListItemBtn(
15711572
self.container,
15721573
_(i18n_keys.ITEM__ABOUT_DEVICE),
@@ -1587,7 +1588,8 @@ def refresh_text(self):
15871588
# self.home_scr.label_left.set_text(_(i18n_keys.ITEM__HOMESCREEN))
15881589
self.security.label_left.set_text(_(i18n_keys.ITEM__SECURITY))
15891590
self.wallet.label_left.set_text(_(i18n_keys.ITEM__WALLET))
1590-
self.fido_keys.label_left.set_text(_(i18n_keys.FIDO_FIDO_KEYS_LABEL))
1591+
if not utils.BITCOIN_ONLY:
1592+
self.fido_keys.label_left.set_text(_(i18n_keys.FIDO_FIDO_KEYS_LABEL))
15911593
self.about.label_left.set_text(_(i18n_keys.ITEM__ABOUT_DEVICE))
15921594

15931595
def on_click(self, event_obj):
@@ -1612,7 +1614,7 @@ def on_click(self, event_obj):
16121614
# Go2UpdateMode(self)
16131615
elif target == self.air_gap:
16141616
AirGapSetting(self)
1615-
elif target == self.fido_keys:
1617+
elif not utils.BITCOIN_ONLY and target == self.fido_keys:
16161618
FidoKeysSetting(self)
16171619
elif not utils.PRODUCTION and target == self.fp_test:
16181620
FingerprintTest(self)

0 commit comments

Comments
 (0)