1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-02-12 15:42:40 +00:00

refactor(core): make homescreen max size model dependent

[no changelog]
This commit is contained in:
tychovrahe 2025-01-23 16:32:59 +01:00 committed by TychoVrahe
parent 25ce4e3fc9
commit 566f82ccd8
12 changed files with 17 additions and 6 deletions

View File

@ -10,6 +10,7 @@
#define MODEL_INTERNAL_NAME_QSTR MP_QSTR_D001 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_D001
#define MODEL_USB_MANUFACTURER "Trezor DIY" #define MODEL_USB_MANUFACTURER "Trezor DIY"
#define MODEL_USB_PRODUCT MODEL_FULL_NAME #define MODEL_USB_PRODUCT MODEL_FULL_NAME
#define MODEL_HOMESCREEN_MAXSIZE 16384
/*** Discovery uses DEV keys in any build variant ***/ /*** Discovery uses DEV keys in any build variant ***/
#define MODEL_BOARDLOADER_KEYS \ #define MODEL_BOARDLOADER_KEYS \

View File

@ -12,6 +12,7 @@
#define MODEL_INTERNAL_NAME_QSTR MP_QSTR_D001 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_D001
#define MODEL_USB_MANUFACTURER "Trezor DIY" #define MODEL_USB_MANUFACTURER "Trezor DIY"
#define MODEL_USB_PRODUCT MODEL_FULL_NAME #define MODEL_USB_PRODUCT MODEL_FULL_NAME
#define MODEL_HOMESCREEN_MAXSIZE 65536
/*** Discovery uses DEV keys in any build variant ***/ /*** Discovery uses DEV keys in any build variant ***/
#define MODEL_BOARDLOADER_KEYS \ #define MODEL_BOARDLOADER_KEYS \

View File

@ -10,6 +10,7 @@
#define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T2B1 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T2B1
#define MODEL_USB_MANUFACTURER "SatoshiLabs" #define MODEL_USB_MANUFACTURER "SatoshiLabs"
#define MODEL_USB_PRODUCT "TREZOR" #define MODEL_USB_PRODUCT "TREZOR"
#define MODEL_HOMESCREEN_MAXSIZE 16384
/*** PRODUCTION KEYS ***/ /*** PRODUCTION KEYS ***/
#define MODEL_BOARDLOADER_KEYS \ #define MODEL_BOARDLOADER_KEYS \

View File

@ -10,6 +10,7 @@
#define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T2T1 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T2T1
#define MODEL_USB_MANUFACTURER "SatoshiLabs" #define MODEL_USB_MANUFACTURER "SatoshiLabs"
#define MODEL_USB_PRODUCT "TREZOR" #define MODEL_USB_PRODUCT "TREZOR"
#define MODEL_HOMESCREEN_MAXSIZE 16384
/*** PRODUCTION KEYS ***/ /*** PRODUCTION KEYS ***/
#define MODEL_BOARDLOADER_KEYS \ #define MODEL_BOARDLOADER_KEYS \

View File

@ -12,6 +12,7 @@
#define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T3B1 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T3B1
#define MODEL_USB_MANUFACTURER "Trezor Company" #define MODEL_USB_MANUFACTURER "Trezor Company"
#define MODEL_USB_PRODUCT MODEL_FULL_NAME #define MODEL_USB_PRODUCT MODEL_FULL_NAME
#define MODEL_HOMESCREEN_MAXSIZE 16384
#define MODEL_BOARDLOADER_KEYS \ #define MODEL_BOARDLOADER_KEYS \
(const uint8_t *)"\xbb\xc2\x1a\xdb\xc1\xb4\x4d\x6b\xfe\x10\xc5\x22\x3d\xe3\x3c\x28\x42\x9e\x52\x68\x07\x07\xd3\x24\x90\x07\xed\x42\xdc\xc5\xbe\x13", \ (const uint8_t *)"\xbb\xc2\x1a\xdb\xc1\xb4\x4d\x6b\xfe\x10\xc5\x22\x3d\xe3\x3c\x28\x42\x9e\x52\x68\x07\x07\xd3\x24\x90\x07\xed\x42\xdc\xc5\xbe\x13", \

View File

@ -12,6 +12,7 @@
#define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T3T1 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T3T1
#define MODEL_USB_MANUFACTURER "Trezor Company" #define MODEL_USB_MANUFACTURER "Trezor Company"
#define MODEL_USB_PRODUCT MODEL_FULL_NAME #define MODEL_USB_PRODUCT MODEL_FULL_NAME
#define MODEL_HOMESCREEN_MAXSIZE 16384
#define MODEL_BOARDLOADER_KEYS \ #define MODEL_BOARDLOADER_KEYS \
(const uint8_t *)"\x76\xaf\x42\x6e\x61\x40\x6b\xad\x7c\x07\x7b\x40\x9c\x66\xfd\xe3\x9f\xb8\x17\x91\x93\x13\xae\x1e\x4c\x02\x53\x5c\x80\xbe\xed\x96", \ (const uint8_t *)"\x76\xaf\x42\x6e\x61\x40\x6b\xad\x7c\x07\x7b\x40\x9c\x66\xfd\xe3\x9f\xb8\x17\x91\x93\x13\xae\x1e\x4c\x02\x53\x5c\x80\xbe\xed\x96", \

View File

@ -12,6 +12,7 @@
#define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T3W1 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T3W1
#define MODEL_USB_MANUFACTURER "Trezor Company" #define MODEL_USB_MANUFACTURER "Trezor Company"
#define MODEL_USB_PRODUCT MODEL_FULL_NAME #define MODEL_USB_PRODUCT MODEL_FULL_NAME
#define MODEL_HOMESCREEN_MAXSIZE 65536
#define MODEL_BOARDLOADER_KEYS \ #define MODEL_BOARDLOADER_KEYS \
(const uint8_t *)"\xe8\x91\x2f\x81\xb3\xe7\x80\xee\x65\x0e\xd3\x85\x6d\xb5\x32\x6e\x0b\x9e\xff\x10\x36\x4b\x33\x91\x93\xe7\xa8\xf1\x0f\x76\x21\xb9", \ (const uint8_t *)"\xe8\x91\x2f\x81\xb3\xe7\x80\xee\x65\x0e\xd3\x85\x6d\xb5\x32\x6e\x0b\x9e\xff\x10\x36\x4b\x33\x91\x93\xe7\xa8\xf1\x0f\x76\x21\xb9", \

View File

@ -405,6 +405,8 @@ STATIC mp_obj_tuple_t mod_trezorutils_version_obj = {
/// """USB Product name.""" /// """USB Product name."""
/// INTERNAL_MODEL: str /// INTERNAL_MODEL: str
/// """Internal model code.""" /// """Internal model code."""
/// HOMESCREEN_MAXSIZE: int
/// """Maximum size of user-uploaded homescreen in bytes."""
/// EMULATOR: bool /// EMULATOR: bool
/// """Whether the firmware is running in the emulator.""" /// """Whether the firmware is running in the emulator."""
/// BITCOIN_ONLY: bool /// BITCOIN_ONLY: bool
@ -488,6 +490,8 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = {
MP_ROM_PTR(&mod_trezorutils_model_usb_product_obj)}, MP_ROM_PTR(&mod_trezorutils_model_usb_product_obj)},
{MP_ROM_QSTR(MP_QSTR_INTERNAL_MODEL), {MP_ROM_QSTR(MP_QSTR_INTERNAL_MODEL),
MP_ROM_QSTR(MODEL_INTERNAL_NAME_QSTR)}, MP_ROM_QSTR(MODEL_INTERNAL_NAME_QSTR)},
{MP_ROM_QSTR(MP_QSTR_HOMESCREEN_MAXSIZE),
MP_ROM_INT(MODEL_HOMESCREEN_MAXSIZE)},
#ifdef TREZOR_EMULATOR #ifdef TREZOR_EMULATOR
{MP_ROM_QSTR(MP_QSTR_EMULATOR), mp_const_true}, {MP_ROM_QSTR(MP_QSTR_EMULATOR), mp_const_true},
MEMINFO_DICT_ENTRIES MEMINFO_DICT_ENTRIES

View File

@ -146,6 +146,8 @@ MODEL_USB_PRODUCT: str
"""USB Product name.""" """USB Product name."""
INTERNAL_MODEL: str INTERNAL_MODEL: str
"""Internal model code.""" """Internal model code."""
HOMESCREEN_MAXSIZE: int
"""Maximum size of user-uploaded homescreen in bytes."""
EMULATOR: bool EMULATOR: bool
"""Whether the firmware is running in the emulator.""" """Whether the firmware is running in the emulator."""
BITCOIN_ONLY: bool BITCOIN_ONLY: bool

View File

@ -16,14 +16,12 @@ BRT_PROTECT_CALL = ButtonRequestType.ProtectCall # CACHE
def _validate_homescreen(homescreen: bytes) -> None: def _validate_homescreen(homescreen: bytes) -> None:
import storage.device as storage_device
if homescreen == b"": if homescreen == b"":
return return
if len(homescreen) > storage_device.HOMESCREEN_MAXSIZE: if len(homescreen) > utils.HOMESCREEN_MAXSIZE:
raise DataError( raise DataError(
f"Homescreen is too large, maximum size is {storage_device.HOMESCREEN_MAXSIZE} bytes" f"Homescreen is too large, maximum size is {utils.HOMESCREEN_MAXSIZE} bytes"
) )
if not trezorui_api.check_homescreen_format(homescreen): if not trezorui_api.check_homescreen_format(homescreen):
raise DataError("Wrong homescreen format") raise DataError("Wrong homescreen format")

View File

@ -50,7 +50,6 @@ if TYPE_CHECKING:
StorageSafetyCheckLevel = Literal[0, 1] StorageSafetyCheckLevel = Literal[0, 1]
# fmt: on # fmt: on
HOMESCREEN_MAXSIZE = const(16384)
LABEL_MAXLENGTH = const(32) LABEL_MAXLENGTH = const(32)
if __debug__: if __debug__:
@ -171,7 +170,7 @@ def set_passphrase_enabled(enable: bool) -> None:
def set_homescreen(homescreen: bytes) -> None: def set_homescreen(homescreen: bytes) -> None:
if len(homescreen) > HOMESCREEN_MAXSIZE: if len(homescreen) > utils.HOMESCREEN_MAXSIZE:
raise ValueError # homescreen too large raise ValueError # homescreen too large
common.set(_NAMESPACE, _HOMESCREEN, homescreen, public=True) common.set(_NAMESPACE, _HOMESCREEN, homescreen, public=True)

View File

@ -3,6 +3,7 @@ import sys
from trezorutils import ( # noqa: F401 from trezorutils import ( # noqa: F401
BITCOIN_ONLY, BITCOIN_ONLY,
EMULATOR, EMULATOR,
HOMESCREEN_MAXSIZE,
INTERNAL_MODEL, INTERNAL_MODEL,
MODEL, MODEL,
MODEL_FULL_NAME, MODEL_FULL_NAME,