fix(core): logic error in `ToifInfo::parse`
What changed, and why it matters
This commit fixes a logic bug in how the Trezor hardware wallet checks image files used as custom home screens. The old code accidentally accepted almost any image as valid because it used 'AND' instead of 'OR' when checking the file's magic bytes. The patch corrects the check so only proper TOIF images are accepted. It also removes a size-limit check on the stored homescreen, which is a separate hardening concern.
Review whether removing the HOMESCREEN_MAXSIZE limit is intentional and safe, since the commit message only mentions the TOIF parsing fix. Confirm that downstream TOIF parsing or rendering imposes its own bounds to prevent oversized or malformed homescreen payloads from being stored or rendered. Otherwise, ship the TOIF prefix fix promptly.
Security signals we found
Logic error in format/magic-byte validation
Input validation bypass for custom homescreen images
Removal of an input size limit for stored homescreen data
New negative test added for invalid TOIF prefix
Evidence from the diff
In core/embed/rust/src/ui/display/image.rs, ToifInfo::parse previously validated the TOIF prefix with image.read_u8(0)? != b'T' && image.read_u8(1)? != b'O' && image.read_u8(2)? != b'I'. Because the bytes are compared with AND, the prefix is only rejected if all three bytes are wrong; any single correct byte bypasses the check. The patch reads the first four bytes and compares the first three to b”TOI” with !=, correctly rejecting any non-TOIF prefix. The commit also removes the utils.HOMESCREEN_MAXSIZE length check from storage/device.py and the corresponding try/except ValueError handling in apply_settings.py, so oversized homescreens are no longer rejected before storage. A new device test verifies that a wrong TOIF prefix is rejected.
Changed components
core/embed/rust/src/ui/display/image.rs (ToifInfo::parse)core/src/storage/device.py (set_homescreen)core/src/apps/management/apply_settings.py (apply_settings)tests/device_tests/test_msg_applysettings.pyInspect captured patch +84 / −65
diff --git a/core/embed/rust/src/ui/display/image.rs b/core/embed/rust/src/ui/display/image.rs
index f340efcd..7c8161bf 100644
--- a/core/embed/rust/src/ui/display/image.rs
+++ b/core/embed/rust/src/ui/display/image.rs
@@ -56,11 +56,14 @@ impl ToifInfo {
pub const HEADER_LENGTH: usize = 12;
pub fn parse(image: BinaryData) -> Option<Self> {
- if image.read_u8(0)? != b'T' && image.read_u8(1)? != b'O' && image.read_u8(2)? != b'I' {
+ let mut prefix = [0u8; 4];
+ if image.read(0, prefix.as_mut()) != prefix.len() {
return None;
}
-
- let format = match image.read_u8(3)? {
+ if prefix[..3] != *b"TOI" {
+ return None;
+ }
+ let format = match prefix[3] {
b'f' => ToifFormat::FullColorBE,
b'g' => ToifFormat::GrayScaleOH,
b'F' => ToifFormat::FullColorLE,
diff --git a/core/src/apps/management/apply_settings.py b/core/src/apps/management/apply_settings.py
index 81b71324..6bade0f7 100644
--- a/core/src/apps/management/apply_settings.py
+++ b/core/src/apps/management/apply_settings.py
@@ -98,10 +98,7 @@ async def apply_settings(msg: ApplySettings) -> Success:
if homescreen is not None:
_validate_homescreen(homescreen)
await _require_confirm_change_homescreen(homescreen)
- try:
- storage_device.set_homescreen(homescreen)
- except ValueError:
- raise DataError("Invalid homescreen")
+ storage_device.set_homescreen(homescreen)
if label is not None:
if len(label) > storage_device.LABEL_MAXLENGTH:
diff --git a/core/src/storage/device.py b/core/src/storage/device.py
index b28f0810..343de482 100644
--- a/core/src/storage/device.py
+++ b/core/src/storage/device.py
@@ -251,8 +251,6 @@ def set_passphrase_enabled(enable: bool) -> None:
def set_homescreen(homescreen: AnyBytes) -> None:
- if len(homescreen) > utils.HOMESCREEN_MAXSIZE:
- raise ValueError # homescreen too large
common.set(_NAMESPACE, _HOMESCREEN, homescreen, public=True)
diff --git a/tests/device_tests/test_msg_applysettings.py b/tests/device_tests/test_msg_applysettings.py
index ff8a51bc..6e9f10dc 100644
--- a/tests/device_tests/test_msg_applysettings.py
+++ b/tests/device_tests/test_msg_applysettings.py
@@ -54,7 +54,7 @@ PIN4 = "1234"
pytestmark = pytest.mark.setup_client(pin=PIN4)
T1_HOMESCREEN = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x04\x80\x00\x00\x00\x00\x00\x00\x00\x00\x04\x88\x02\x00\x00\x00\x02\x91\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x90@\x00\x11@\x00\x00\x00\x00\x00\x00\x08\x00\x10\x92\x12\x04\x00\x00\x05\x12D\x00\x00\x00\x00\x00 \x00\x00\x08\x00Q\x00\x00\x02\xc0\x00\x00\x00\x00\x00\x00\x00\x10\x02 \x01\x04J\x00)$\x00\x00\x00\x00\x80\x00\x00\x00\x00\x08\x10\xa1\x00\x00\x02\x81 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\tP\x00\x00\x00\x00\x00\x00 \x00\x00\xa0\x00\xa0R \x12\x84\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x08\x00\tP\x00\x00\x00\x00 \x00\x04 \x00\x80\x02\x00@\x02T\xc2 \x00\x00\x00\x00\x00\x00\x00\x10@\x00)\t@\n\xa0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x80@\x14\xa9H\x04\x00\x00\x88@\x00\x00\x00\x00\x00\x02\x02$\x00\x15B@\x00\nP\x00\x00\x00\x00\x00\x80\x00\x00\x91\x01UP\x00\x00 \x02\x00\x00\x00\x00\x00\x00\x02\x08@ Z\xa5 \x00\x00\x80\x00\x00\x00\x00\x00\x00\x08\xa1%\x14*\xa0\x00\x00\x02\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00@\xaa\x91 \x00\x05E\x80\x00\x00\x00\x00\x00\x02*T\x05-D\x00\x00\x05 @\x00\x00\x00\x00\x00%@\x80\x11V\xa0\x88\x00\x05@\xb0\x00\x00\x00\x00\x00\x818$\x04\xabD \x00\x06\xa1T\x00\x00\x00\x00\x02\x03\xb8\x01R\xd5\x01\x00\x00\x05AP\x00\x00\x00\x00\x08\xadT\x00\x05j\xa4@\x00\x87ah\x00\x00\x00\x00\x02\x8d\xb8\x08\x00.\x01\x00\x00\x02\xa5\xa8\x10\x00\x00\x00*\xc1\xec \n\xaa\x88 \x02@\xf6\xd0\x02\x00\x00\x00\x0bB\xb6\x14@U"\x80\x00\x01{`\x00\x00\x00\x00M\xa3\xf8 \x15*\x00\x00\x00\x10n\xc0\x04\x00\x00\x02\x06\xc2\xa8)\x00\x96\x84\x80\x00\x00\x1b\x00\x00\x80@\x10\x87\xa7\xf0\x84\x10\xaa\x10\x00\x00D\x00\x00\x02 \x00\x8a\x06\xfa\xe0P\n-\x02@\x00\x12\x00\x00\x00\x00\x10@\x83\xdf\xa0\x00\x08\xaa@\x00\x00\x01H\x00\x05H\x04\x12\x01\xf7\x81P\x02T\t\x00\x00\x00 \x00\x00\x84\x10\x00\x00z\x00@)* \x00\x00\x01\n\xa0\x02 \x05\n\x00\x00\x05\x10\x84\xa8\x84\x80\x00\x00@\x14\x00\x92\x10\x80\x00\x04\x11@\tT\x00\x00\x00\x00\n@\x00\x08\x84@$\x00H\x00\x12Q\x02\x00\x00\x00\x00\x90\x02A\x12\xa8\n\xaa\x92\x10\x04\xa8\x10@\x00\x00\x04\x04\x00\x04I\x00\x04\x14H\x80"R\x01\x00\x00\x00!@\x00\x00$\xa0EB\x80\x08\x95hH\x00\x00\x00\x84\x10 \x05Z\x00\x00(\x00\x02\x00\xa1\x01\x00\x00\x04\x00@\x82\x00\xadH*\x92P\x00\xaaP\x00\x00\x00\x00\x11\x02\x01*\xad\x01\x00\x01\x01"\x11D\x08\x00\x00\x10\x80 \x00\x81W\x80J\x94\x04\x08\xa5 !\x00\x00\x00\x02\x00B*\xae\xa1\x00\x80\x10\x01\x08\xa4\x00\x00\x00\x00\x00\x84\x00\t[@"HA\x04E\x00\x84\x00\x00\x00\x10\x00\x01J\xd5\x82\x90\x02\x00!\x02\xa2\x00\x00\x00\x00\x00\x00\x00\x05~\xa0\x00 \x10\n)\x00\x11\x00\x00\x00\x00\x00\x00!U\x80\xa8\x88\x82\x80\x01\x00\x00\x00\x00\x00\x00H@\x11\xaa\xc0\x82\x00 *\n\x00\x00\x00\x00\x00\x00\x00\x00\n\xabb@ \x04\x00! \x84\x00\x00\x00\x00\x02@\xa5\x15A$\x04\x81(\n\x00\x00\x00\x00\x00\x00 \x01\x10\x02\xe0\x91\x02\x00\x00\x04\x00\x00\x00\x00\x00\x00\x01 \xa9\tQH@\x91 P\x00\x00\x00\x00\x00\x00\x08\x00\x00\xa0T\xa5\x00@\x80\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00 T\xa0\t\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00@\x02\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00*\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x10\x00\x00\x10\x02\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00@\x04\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x08@\x10\x00\x00\x00\x00'
-TR_HOMESCREEN = b"TOIG\x80\x00@\x00\x0c\x04\x00\x00\xa5RY\x96\xdc0\x08\xe4\x06\xdc\xff\x96\xdc\x80\xa8\x16\x90z\xd2y\xf9\x18{<m\xc9\x02j\xeb\xea_\xddy\xfe~\xf14:\xfc\xe2I\x00\xf8\xff\x13\xff\xfa\xc6>\xc0\xf1\xe5\xc9y\x0f\x95\x7f;C\xfe\xd0\xe1K\xefS\x96o\xf9\xb739\x1a\n\xc7\xde\x89\xff\x11\xd8=\xd5\xcf\xb1\x9f\xf7U\xf2\xa3spx\xb0&t\xe4\xaf3x\xcaT\xec\xe50k\xb4\xe8\nl\x16\xbf`'\xf3\xa7Z\x8d-\x98h\x1c\x03\x07\xf0\xcf\xf0\x8aD\x13\xec\x1f@y\x9e\xd8\xa3\xc6\x84F*\x1dx\x02U\x00\x10\xd3\x8cF\xbb\x97y\x18J\xa5T\x18x\x1c\x02\xc6\x90\xfd\xdc\x89\x1a\x94\xb3\xeb\x01\xdc\x9f2\x8c/\xe9/\x8c$\xc6\x9c\x1e\xf8C\x8f@\x17Q\x1d\x11F\x02g\xe4A \xebO\xad\xc6\xe3F\xa7\x8b\xf830R\x82\x0b\x8e\x16\x1dL,\x14\xce\x057tht^\xfe\x00\x9e\x86\xc2\x86\xa3b~^Bl\x18\x1f\xb9+w\x11\x14\xceO\xe9\xb6W\xd8\x85\xbeX\x17\xc2\x13,M`y\xd1~\xa3/\xcd0\xed6\xda\xf5b\x15\xb5\x18\x0f_\xf6\xe2\xdc\x8d\x8ez\xdd\xd5\r^O\x9e\xb6|\xc4e\x0f\x1f\xff0k\xd4\xb8\n\x12{\x8d\x8a>\x0b5\xa2o\xf2jZ\xe5\xee\xdc\x14\xd1\xbd\xd5\xad\x95\xbe\x8c\t\x8f\xb9\xde\xc4\xa551,#`\x94'\x1b\xe7\xd53u\x8fq\xbd4v>3\x8f\xcc\x1d\xbcV>\x90^\xb3L\xc3\xde0]\x05\xec\x83\xd0\x07\xd2(\xbb\xcf+\xd0\xc7ru\xecn\x14k-\xc0|\xd2\x0e\xe8\xe08\xa8<\xdaQ+{\xad\x01\x02#\x16\x12+\xc8\xe0P\x06\xedD7\xae\xd0\xa4\x97\x84\xe32\xca;]\xd04x:\x94`\xbe\xca\x89\xe2\xcb\xc5L\x03\xac|\xe7\xd5\x1f\xe3\x08_\xee!\x04\xd2\xef\x00\xd8\xea\x91p)\xed^#\xb1\xa78eJ\x00F*\xc7\xf1\x0c\x1a\x04\xf5l\xcc\xfc\xa4\x83,c\x1e\xb1>\xc5q\x8b\xe6Y9\xc7\x07\xfa\xcf\xf9\x15\x8a\xdd\x11\x1f\x98\x82\xbe>\xbe+u#g]aC\\\x1bC\xb1\xe8P\xce2\xd6\xb6r\x12\x1c*\xd3\x92\x9d9\xf9cB\x82\xf9S.\xc2B\xe7\x9d\xcf\xdb\xf3\xfd#\xfd\x94x9p<D?\x0e0\xd0)ufMK\x9d\x84\xbf\x95\x02\x15\x04\xaf\x9b\xd7|\x9f\xf5\xc2\x19D\xe1\xe8pC=\\\xb54\xff\xfd<\xfc\x8b\x83\x19\x9aZ\x99J\x9d\xa2oP6\xb2=\xe0\xe5=Z0\x7f\xb6\xe9\xb1\x98\n\xcc \xdb\x9f\xb6\xf4\xc2\x82Z:\t\xf2\xcd\x88\xe3\x8a0\n\x13\xdd\xf9;\xdbtr\xf4kj\xa6\x90\x9d\x97\x92+#\xf4;t\x1e6\x80\xcd)\xfe\xe1\xabdD(V\xf5\xcc\xcf\xbeY\xd8\xddX\x08*\xc5\xd6\xa1\xa2\xae\x89s]\xafj\x9b\x07\x8d\xcf\xb5\n\x162\xb7\xb0\x02p\xc0.{\xbf\xd6\xc7|\x8a\x8c\xc9g\xa8DO\x85\xf6<E\x05Ek\x8c\xbfU\x13bz\xcf\xd0\x07\xcd^\x0f\x9b\x951\xa1vb\x17u:\xd2X\x91/\x0f\x9a\xae\x16T\x81\xb6\x8e\xdc,\xb0\xa1=\x11af%^\xec\x95\x83\xa9\xb8+\xd0i\xe0+#%\x02\xfd2\x84\xf3\xde\x0c\x88\x8c\x80\xf7\xc2H\xaa#\x80m\xf4\x1e\xd4#\x04J\r\xb6\xf83s\x8c\x0e\x0bx\xabw\xbe\x90\x94\x90:C\x88\x9bR`B\xc02\x1a\x08\xca-M9\xac\xa3TP\xb1\x83\xf2\x8aT\xe9\xc0c9(\xe5d\xd1\xac\xfd\x83\xf3\xb4C\x95\x04doh\xd7M\xed \xd0\x90\xc9|\x8a\x1fX\x1f\x0eI\x12\x8e&\xc3\x91NM-\x02\xeckp\x1a/\x19\x9d\xf2\xb4$\x0eG:\xbe\xb2~\x10(,\x1cd\x07\xbb]n^F@\x173'\xc63\xdf!u\xf4F\xa9\xc3\x96E!e\xc2Iv\xe8zQH=v\x89\x9a\x04a^\x10\x06\x01\x04!2\xa6\x1b\xba\x111/\xfa\xfa\x9c\x15 @\xf6\xb9{&\xcc\x84\xfa\xd6\x81\x90\xd4\x92\xcf\x89/\xc8\x80\xadP\xa3\xf4Xa\x1f\x04A\x07\xe6N\xd2oEZ\xc9\xa6(!\x8e#|\x0e\xfbq\xce\xe6\x8b-;\x06_\x04n\xdc\x8d^\x05s\xd2\xa8\x0f\xfa/\xfa\xf8\xe1x\n\xa3\xf701i7\x0c \x87\xec#\x80\x9c^X\x02\x01C\xc7\x85\x83\x9dS\xf5\x07"
+CAESAR_HOMESCREEN = b"TOIG\x80\x00@\x00\x0c\x04\x00\x00\xa5RY\x96\xdc0\x08\xe4\x06\xdc\xff\x96\xdc\x80\xa8\x16\x90z\xd2y\xf9\x18{<m\xc9\x02j\xeb\xea_\xddy\xfe~\xf14:\xfc\xe2I\x00\xf8\xff\x13\xff\xfa\xc6>\xc0\xf1\xe5\xc9y\x0f\x95\x7f;C\xfe\xd0\xe1K\xefS\x96o\xf9\xb739\x1a\n\xc7\xde\x89\xff\x11\xd8=\xd5\xcf\xb1\x9f\xf7U\xf2\xa3spx\xb0&t\xe4\xaf3x\xcaT\xec\xe50k\xb4\xe8\nl\x16\xbf`'\xf3\xa7Z\x8d-\x98h\x1c\x03\x07\xf0\xcf\xf0\x8aD\x13\xec\x1f@y\x9e\xd8\xa3\xc6\x84F*\x1dx\x02U\x00\x10\xd3\x8cF\xbb\x97y\x18J\xa5T\x18x\x1c\x02\xc6\x90\xfd\xdc\x89\x1a\x94\xb3\xeb\x01\xdc\x9f2\x8c/\xe9/\x8c$\xc6\x9c\x1e\xf8C\x8f@\x17Q\x1d\x11F\x02g\xe4A \xebO\xad\xc6\xe3F\xa7\x8b\xf830R\x82\x0b\x8e\x16\x1dL,\x14\xce\x057tht^\xfe\x00\x9e\x86\xc2\x86\xa3b~^Bl\x18\x1f\xb9+w\x11\x14\xceO\xe9\xb6W\xd8\x85\xbeX\x17\xc2\x13,M`y\xd1~\xa3/\xcd0\xed6\xda\xf5b\x15\xb5\x18\x0f_\xf6\xe2\xdc\x8d\x8ez\xdd\xd5\r^O\x9e\xb6|\xc4e\x0f\x1f\xff0k\xd4\xb8\n\x12{\x8d\x8a>\x0b5\xa2o\xf2jZ\xe5\xee\xdc\x14\xd1\xbd\xd5\xad\x95\xbe\x8c\t\x8f\xb9\xde\xc4\xa551,#`\x94'\x1b\xe7\xd53u\x8fq\xbd4v>3\x8f\xcc\x1d\xbcV>\x90^\xb3L\xc3\xde0]\x05\xec\x83\xd0\x07\xd2(\xbb\xcf+\xd0\xc7ru\xecn\x14k-\xc0|\xd2\x0e\xe8\xe08\xa8<\xdaQ+{\xad\x01\x02#\x16\x12+\xc8\xe0P\x06\xedD7\xae\xd0\xa4\x97\x84\xe32\xca;]\xd04x:\x94`\xbe\xca\x89\xe2\xcb\xc5L\x03\xac|\xe7\xd5\x1f\xe3\x08_\xee!\x04\xd2\xef\x00\xd8\xea\x91p)\xed^#\xb1\xa78eJ\x00F*\xc7\xf1\x0c\x1a\x04\xf5l\xcc\xfc\xa4\x83,c\x1e\xb1>\xc5q\x8b\xe6Y9\xc7\x07\xfa\xcf\xf9\x15\x8a\xdd\x11\x1f\x98\x82\xbe>\xbe+u#g]aC\\\x1bC\xb1\xe8P\xce2\xd6\xb6r\x12\x1c*\xd3\x92\x9d9\xf9cB\x82\xf9S.\xc2B\xe7\x9d\xcf\xdb\xf3\xfd#\xfd\x94x9p<D?\x0e0\xd0)ufMK\x9d\x84\xbf\x95\x02\x15\x04\xaf\x9b\xd7|\x9f\xf5\xc2\x19D\xe1\xe8pC=\\\xb54\xff\xfd<\xfc\x8b\x83\x19\x9aZ\x99J\x9d\xa2oP6\xb2=\xe0\xe5=Z0\x7f\xb6\xe9\xb1\x98\n\xcc \xdb\x9f\xb6\xf4\xc2\x82Z:\t\xf2\xcd\x88\xe3\x8a0\n\x13\xdd\xf9;\xdbtr\xf4kj\xa6\x90\x9d\x97\x92+#\xf4;t\x1e6\x80\xcd)\xfe\xe1\xabdD(V\xf5\xcc\xcf\xbeY\xd8\xddX\x08*\xc5\xd6\xa1\xa2\xae\x89s]\xafj\x9b\x07\x8d\xcf\xb5\n\x162\xb7\xb0\x02p\xc0.{\xbf\xd6\xc7|\x8a\x8c\xc9g\xa8DO\x85\xf6<E\x05Ek\x8c\xbfU\x13bz\xcf\xd0\x07\xcd^\x0f\x9b\x951\xa1vb\x17u:\xd2X\x91/\x0f\x9a\xae\x16T\x81\xb6\x8e\xdc,\xb0\xa1=\x11af%^\xec\x95\x83\xa9\xb8+\xd0i\xe0+#%\x02\xfd2\x84\xf3\xde\x0c\x88\x8c\x80\xf7\xc2H\xaa#\x80m\xf4\x1e\xd4#\x04J\r\xb6\xf83s\x8c\x0e\x0bx\xabw\xbe\x90\x94\x90:C\x88\x9bR`B\xc02\x1a\x08\xca-M9\xac\xa3TP\xb1\x83\xf2\x8aT\xe9\xc0c9(\xe5d\xd1\xac\xfd\x83\xf3\xb4C\x95\x04doh\xd7M\xed \xd0\x90\xc9|\x8a\x1fX\x1f\x0eI\x12\x8e&\xc3\x91NM-\x02\xeckp\x1a/\x19\x9d\xf2\xb4$\x0eG:\xbe\xb2~\x10(,\x1cd\x07\xbb]n^F@\x173'\xc63\xdf!u\xf4F\xa9\xc3\x96E!e\xc2Iv\xe8zQH=v\x89\x9a\x04a^\x10\x06\x01\x04!2\xa6\x1b\xba\x111/\xfa\xfa\x9c\x15 @\xf6\xb9{&\xcc\x84\xfa\xd6\x81\x90\xd4\x92\xcf\x89/\xc8\x80\xadP\xa3\xf4Xa\x1f\x04A\x07\xe6N\xd2oEZ\xc9\xa6(!\x8e#|\x0e\xfbq\xce\xe6\x8b-;\x06_\x04n\xdc\x8d^\x05s\xd2\xa8\x0f\xfa/\xfa\xf8\xe1x\n\xa3\xf701i7\x0c \x87\xec#\x80\x9c^X\x02\x01C\xc7\x85\x83\x9dS\xf5\x07"
def _set_expected_responses(client: Client, homescreen: bytes | None = None):
@@ -150,10 +150,10 @@ def test_apply_settings_passphrase_on_device(session: Session):
@pytest.mark.models("safe3")
-def test_apply_homescreen_tr_toif_good(session: Session):
+def test_apply_homescreen_caesar_toif_good(session: Session):
with session.test_ctx as client:
- _set_expected_responses(client, homescreen=TR_HOMESCREEN)
- device.apply_settings(session, homescreen=TR_HOMESCREEN)
+ _set_expected_responses(client, homescreen=CAESAR_HOMESCREEN)
+ device.apply_settings(session, homescreen=CAESAR_HOMESCREEN)
# Revert to default settings
client.set_expected_responses(EXPECTED_RESPONSES_NOPIN)
@@ -161,10 +161,10 @@ def test_apply_homescreen_tr_toif_good(session: Session):
@pytest.mark.models("safe3")
-def test_apply_homescreen_tr_toif_single_message(session: Session):
+def test_apply_homescreen_caesar_toif_single_message(session: Session):
with session.test_ctx as client:
_set_expected_responses(client)
- session.call(messages.ApplySettings(homescreen=TR_HOMESCREEN))
+ session.call(messages.ApplySettings(homescreen=CAESAR_HOMESCREEN))
session.refresh_features()
# Revert to default settings
@@ -173,18 +173,33 @@ def test_apply_homescreen_tr_toif_single_message(session: Session):
session.refresh_features()
+@pytest.mark.models("safe3")
+def test_apply_homescreen_caesar_toif_wrong_prefix(session: Session):
+ with pytest.raises(exceptions.TrezorFailure), session.test_ctx as client:
+ BAD_CAESAR_HOMESCREEN = bytearray(CAESAR_HOMESCREEN)
+ BAD_CAESAR_HOMESCREEN[0] = ord("X")
+ _set_expected_responses(client)
+ session.call(messages.ApplySettings(homescreen=bytes(BAD_CAESAR_HOMESCREEN)))
+ session.refresh_features()
+
+ # Revert to default settings
+ client.set_expected_responses(EXPECTED_RESPONSES_NOPIN)
+ session.call(messages.ApplySettings(homescreen_length=0))
+ session.refresh_features()
+
+
@pytest.mark.models("safe3")
@pytest.mark.setup_client(pin=None) # so that "PIN NOT SET" is shown in the header
-def test_apply_homescreen_tr_toif_with_notification(session: Session):
+def test_apply_homescreen_caesar_toif_with_notification(session: Session):
with session.test_ctx:
- device.apply_settings(session, homescreen=TR_HOMESCREEN)
+ device.apply_settings(session, homescreen=CAESAR_HOMESCREEN)
@pytest.mark.models("safe3")
-def test_apply_homescreen_tr_toif_with_long_label(session: Session):
+def test_apply_homescreen_caesar_toif_with_long_label(session: Session):
with session.test_ctx as client:
- _set_expected_responses(client, homescreen=TR_HOMESCREEN)
- device.apply_settings(session, homescreen=TR_HOMESCREEN)
+ _set_expected_responses(client, homescreen=CAESAR_HOMESCREEN)
+ device.apply_settings(session, homescreen=CAESAR_HOMESCREEN)
# Showing longer label
with session.test_ctx:
@@ -196,7 +211,7 @@ def test_apply_homescreen_tr_toif_with_long_label(session: Session):
@pytest.mark.models("safe3")
-def test_apply_homescreen_tr_toif_wrong_size(session: Session):
+def test_apply_homescreen_caesar_toif_wrong_size(session: Session):
# 64x64 img
img = b"TOIG@\x00@\x009\x02\x00\x00}R\xdb\x81$A\x08\"\x03\xf3\xcf\xd2\x0c<\x01-{\xefc\xe6\xd5\xbbU\xa2\x08T\xd6\xcfw\xf4\xe7\xc7\xb7X\xf1\xe3\x1bl\xf0\xf7\x1b\xf8\x1f\xcf\xe7}\xe1\x83\xcf|>\x8d%\x14\xa5\xb3\xe9p5\xa1;~4:\xcd\xe0&\x11\x1d\xe9\xf6\xa1\x1fw\xf54\x95eWx\xda\xd0u\x91\x86\xb8\xbc\xdf\xdc\x008f\x15\xc6\xf6\x7f\xf0T\xb8\xc1\xa3\xc5_A\xc0G\x930\xe7\xdc=\xd5\xa7\xc1\xbcI\x16\xb8s\x9c&\xaa\x06\xc1}\x8b\x19\x9d'c\xc3\xe3^\xc3m\xb6n\xb0(\x16\xf6\xdeg\xb3\x96:i\xe5\x9c\x02\x93\x9fF\x9f-\xa7\"w\xf3X\x9f\x87\x08\x84\"v,\xab!9:<j+\xcb\xf3_\xc7\xd6^<\xce\xc1\xb8!\xec\x8f/\xb1\xc1\x8f\xbd\xcc\x06\x90\x0e\x98)[\xdb\x15\x99\xaf\xf2~\x8e\xd0\xdb\xcd\xfd\x90\x12\xb6\xdd\xc3\xdd|\x96$\x01P\x86H\xbc\xc0}\xa2\x08\xe5\x82\x06\xd2\xeb\x07[\r\xe4\xdeP\xf4\x86;\xa5\x14c\x12\xe3\xb16x\xad\xc7\x1d\x02\xef\x86<\xc6\x95\xd3/\xc4 \xa1\xf5V\xe2\t\xb2\x8a\xd6`\xf2\xcf\xb7\xd6\x07\xdf8X\xa7\x18\x03\x96\x82\xa4 \xeb.*kP\xceu\x9d~}H\xe9\xb8\x04<4\xff\xf8\xcf\xf6\xa0\xf2\xfcM\xe3/?k\xff\x18\x1d\xb1\xee\xc5\xf5\x1f\x01\x14\x03;\x1bU\x1f~\xcf\xb3\xf7w\xe5\nMfd/\xb93\x9fq\x9bQ\xb7'\xbfvq\x1d\xce\r\xbaDo\x90\xbc\xc5:?;\x84y\x8a\x1e\xad\xe9\xb7\x14\x10~\x9b@\xf8\x82\xdc\x89\xe7\xf0\xe0k4o\x9a\xa0\xc4\xb9\xba\xc56\x01i\x85EO'e6\xb7\x15\xb4G\x05\xe1\xe7%\xd3&\x93\x91\xc9CTQ\xeb\xcc\xd0\xd7E9\xa9JK\xcc\x00\x95(\xdc.\xd2#7:Yo}y_*\x1a\xae6)\x97\x9d\xc0\x80vl\x02\\M\xfe\xc9sW\xa8\xfbD\x99\xb8\xb0:\xbc\x80\xfd\xef\xd3\x94\xbe\x18j9z\x12S\xa1\xec$\x1c\xe3\xd1\xd0\xf4\xdd\xbfI\xf1rBj\x0f\x1cz\x1d\xf7\xa5tR\xb3\xfc\xa4\xd0\xfah\xc3Mj\xbe\x14r\x9d\x84z\xd2\x7f\x13\xb4w\xce\xa0\xaeW\xa4\x18\x0b\xe4\x8f\xe6\xc3\xbeQ\x93\xb0L<J\xe3g9\xb5W#f\xd1\x0b\x96|\xd6z1;\x85\x7f\xe3\xe6[\x02A\xdc\xa4\x02\x1b\x91\x88\x7f"
with pytest.raises(exceptions.TrezorFailure), session.test_ctx as client:
@@ -205,7 +220,7 @@ def test_apply_homescreen_tr_toif_wrong_size(session: Session):
@pytest.mark.models("safe3")
-def test_apply_homescreen_tr_upload_jpeg_fail(session: Session):
+def test_apply_homescreen_caesar_upload_jpeg_fail(session: Session):
with open(HERE / "test_bg.jpg", "rb") as f:
img = f.read()
with pytest.raises(exceptions.TrezorFailure), session.test_ctx as client:
@@ -214,7 +229,7 @@ def test_apply_homescreen_tr_upload_jpeg_fail(session: Session):
@pytest.mark.models("safe3")
-def test_apply_homescreen_tr_upload_t1_fail(session: Session):
+def test_apply_homescreen_caesar_upload_t1_fail(session: Session):
with pytest.raises(exceptions.TrezorFailure), session.test_ctx as client:
_set_expected_responses(client)
device.apply_settings(session, homescreen=T1_HOMESCREEN)
diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json
index 10d130fb..ecb19347 100644
--- a/tests/ui_tests/fixtures.json
+++ b/tests/ui_tests/fixtures.json
@@ -14023,13 +14023,14 @@
"T3B1_cs_test_language.py::test_switch_from_english_not_silent": "0c2da81059e94c06ac413ad180c13c39486bd1d0dce34e9adcf0528ce3c99ea2",
"T3B1_cs_test_language.py::test_switch_language": "c40507119a783ba0d711fdbafc4a694f28a15c43f2bb2177de9d58010fd9e5a2",
"T3B1_cs_test_language.py::test_translations_renders_on_screen": "2d4684ede6e662265a0b924338665b51786feaf8b56350e6ea4521974997c2b0",
-"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "56daee19cef4c568b120a21981cf17c8b3c0946f61da043104cb719e55827473",
-"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_single_message": "788a5b19f30473c546d61cb51ae632a9be750d6a2dc67888224b04e701956eed",
-"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "07e1e5a672473e950afd9245fb0052e53b0555319874a52e3b7b080d3fb0a073",
-"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "2555e48b452686035bbd75f14bf1826cc44038465c0c18449aaf545367675f18",
-"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "ff24f9c981a31ef0d20b9f02088ab8266b1929d45aaf7933565805e12bc4c6b8",
-"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "ff24f9c981a31ef0d20b9f02088ab8266b1929d45aaf7933565805e12bc4c6b8",
-"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "ff24f9c981a31ef0d20b9f02088ab8266b1929d45aaf7933565805e12bc4c6b8",
+"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_good": "56daee19cef4c568b120a21981cf17c8b3c0946f61da043104cb719e55827473",
+"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_single_message": "788a5b19f30473c546d61cb51ae632a9be750d6a2dc67888224b04e701956eed",
+"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_long_label": "07e1e5a672473e950afd9245fb0052e53b0555319874a52e3b7b080d3fb0a073",
+"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_notification": "2555e48b452686035bbd75f14bf1826cc44038465c0c18449aaf545367675f18",
+"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_prefix": "6d3d3b430ab1e7d975a4f61f852380a39cce5032e0747c89d1e719f4bd531ed8",
+"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_size": "ff24f9c981a31ef0d20b9f02088ab8266b1929d45aaf7933565805e12bc4c6b8",
+"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_jpeg_fail": "ff24f9c981a31ef0d20b9f02088ab8266b1929d45aaf7933565805e12bc4c6b8",
+"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_t1_fail": "ff24f9c981a31ef0d20b9f02088ab8266b1929d45aaf7933565805e12bc4c6b8",
"T3B1_cs_test_msg_applysettings.py::test_apply_settings": "c798de3d60026f0af2a683cd6650c2b887bfe3bfe9bce175f8cd724dd83c7bd0",
"T3B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "9fe891a7db0c42a158285023a7b7ddbc70ad132a1d22c273d9cffd678379d71f",
"T3B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0f8ced5883185434484730fd9e819db312b78084efaaddcb11fddfe811d8581f",
@@ -15776,13 +15777,14 @@
"T3B1_de_test_language.py::test_switch_from_english_not_silent": "a41921f85057f54634f431cf7df0d8db25e8c4c0c514d6d9899209217168e752",
"T3B1_de_test_language.py::test_switch_language": "422c124162f58f63356796c862633a209a0aa150c24fcc93445afa445732e653",
"T3B1_de_test_language.py::test_translations_renders_on_screen": "7a8049c831e68c997737f15dbab70a84ab6a0cf3e4769e48756f28c15988ac76",
-"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "a35ec01bf71d2269228c29630f465356183435371fd95d64f74c43834eb010ac",
-"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_single_message": "ad38685cb607e12cd10d53251d990febc18ee2f70b33ffe422d5f8a080c8da5d",
-"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "c7b59273f6051d17581f77bfc22de7442aee3d3f111567b35925524e64f77c03",
-"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "f8c4204b38f50461be0dd8b90ceac92e0e4e8da2c272e6b0dd94e725ee896379",
-"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "ceac00c95c8ff61b85ccc99cc9f2b4f9559a9e0276132e4bee6be049eacaa6b7",
-"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "ceac00c95c8ff61b85ccc99cc9f2b4f9559a9e0276132e4bee6be049eacaa6b7",
-"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "ceac00c95c8ff61b85ccc99cc9f2b4f9559a9e0276132e4bee6be049eacaa6b7",
+"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_good": "a35ec01bf71d2269228c29630f465356183435371fd95d64f74c43834eb010ac",
+"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_single_message": "ad38685cb607e12cd10d53251d990febc18ee2f70b33ffe422d5f8a080c8da5d",
+"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_long_label": "c7b59273f6051d17581f77bfc22de7442aee3d3f111567b35925524e64f77c03",
+"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_notification": "f8c4204b38f50461be0dd8b90ceac92e0e4e8da2c272e6b0dd94e725ee896379",
+"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_prefix": "1e2a74bcd8c250f5bc09a819b4603894ea9cdb2bdff9b09c57f574b25829d920",
+"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_size": "ceac00c95c8ff61b85ccc99cc9f2b4f9559a9e0276132e4bee6be049eacaa6b7",
+"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_jpeg_fail": "ceac00c95c8ff61b85ccc99cc9f2b4f9559a9e0276132e4bee6be049eacaa6b7",
+"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_t1_fail": "ceac00c95c8ff61b85ccc99cc9f2b4f9559a9e0276132e4bee6be049eacaa6b7",
"T3B1_de_test_msg_applysettings.py::test_apply_settings": "aadeab8d60b7a621ff65cb65a1fc465f2bd97f0a1494570f726ab1aebee6686d",
"T3B1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "eda2d27dfa2d19a220ba5db6d551fa61b6dec3ead6e6e5edf65d535cbf1953cb",
"T3B1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "d2280c74cad402d8d12e352da88020d1ae8da618da1826733aca956e41945319",
@@ -17529,13 +17531,14 @@
"T3B1_en_test_language.py::test_switch_from_english_not_silent": "7945fdf0623a34efada654fe62a57fa06c6ab0cf4383bc14c6b7acd594b10596",
"T3B1_en_test_language.py::test_switch_language": "38ddd640db27f222ca487d382a33823855a4dd414f04fc2214e9226d0a2f4b2b",
"T3B1_en_test_language.py::test_translations_renders_on_screen": "78e2a8b450813d1c087095622be34421a23543e04fb7fe8b0060d54445fd81b9",
-"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "0dea2a5b2ed5c21f5c25795f16d83220c753faeab388e2fc009d968aea9bc75a",
-"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_single_message": "7d05a1ad6b50801a569fe45fa906d5951aabd33659f37ac8fbaf1363ba2fa253",
-"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "81373ddb3b609bd56366bc016285f368707fe831fd593a9dc97e6acd784988ed",
-"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "f96d8a44bf4a5cfda14ed659dcb8a39fdb455432252e68c1ef4c3f618ed6a7e8",
-"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "98857cc5cbfcf816540fe8faeef043fdb26209482f8124b33db96a139ffd9840",
-"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "98857cc5cbfcf816540fe8faeef043fdb26209482f8124b33db96a139ffd9840",
-"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "98857cc5cbfcf816540fe8faeef043fdb26209482f8124b33db96a139ffd9840",
+"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_good": "0dea2a5b2ed5c21f5c25795f16d83220c753faeab388e2fc009d968aea9bc75a",
+"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_single_message": "7d05a1ad6b50801a569fe45fa906d5951aabd33659f37ac8fbaf1363ba2fa253",
+"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_long_label": "81373ddb3b609bd56366bc016285f368707fe831fd593a9dc97e6acd784988ed",
+"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_notification": "f96d8a44bf4a5cfda14ed659dcb8a39fdb455432252e68c1ef4c3f618ed6a7e8",
+"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_prefix": "d32c8deaaf9e83edd8f67d40f44c1104674d7c06b15dc5f2097d5063de990b64",
+"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_size": "98857cc5cbfcf816540fe8faeef043fdb26209482f8124b33db96a139ffd9840",
+"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_jpeg_fail": "98857cc5cbfcf816540fe8faeef043fdb26209482f8124b33db96a139ffd9840",
+"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_t1_fail": "98857cc5cbfcf816540fe8faeef043fdb26209482f8124b33db96a139ffd9840",
"T3B1_en_test_msg_applysettings.py::test_apply_settings": "9dea41067ab68898783fdcef07b89c2631569d8cf707b8e75b291d5ac9e4dbca",
"T3B1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "1f80c7c4ed9d8fa741bf01b0b0258c37cfc025cfed7f0f5ef86d3f63177c19c0",
"T3B1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0e27181906594dbdfd81e61c88e77741be732338245d3f96814a867e69ed929a",
@@ -19282,13 +19285,14 @@
"T3B1_es_test_language.py::test_switch_from_english_not_silent": "fc0f4fc1b2704b84826066c684f566c97842bf7a11b0889be0e3e87d5dc37c36",
"T3B1_es_test_language.py::test_switch_language": "da9a63b7ea64691cfe2d12c6008e6a2f3e7406ab3abab9ef6b36e0362b5eee4b",
"T3B1_es_test_language.py::test_translations_renders_on_screen": "b57516b6bb8ec261fe960e42a9b462baf9559186fe0bc919a9c98fe2327dd2dc",
-"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "eae6f72dcf2d59521eeddd70d95a9666208f0c2350b34b347299a1772f171626",
-"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_single_message": "dfc1eb0e160eacfe3362c323236c5a298616be82cf296c5e7d3d4a01975b78d3",
-"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "8c25ca559a26f0e96797d8eabf961e433aa50e04721ab365c29bb4c414a96ca5",
-"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "8a53e3a515bc9f95132bb6ce857577fdd5a4ed71e6eadad2a20d08789faa23a3",
-"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "3ced9b069365655bd298b0a2e89f80bffee5d977f6196a13d9a5263ce82bfb97",
-"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "3ced9b069365655bd298b0a2e89f80bffee5d977f6196a13d9a5263ce82bfb97",
-"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "3ced9b069365655bd298b0a2e89f80bffee5d977f6196a13d9a5263ce82bfb97",
+"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_good": "eae6f72dcf2d59521eeddd70d95a9666208f0c2350b34b347299a1772f171626",
+"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_single_message": "dfc1eb0e160eacfe3362c323236c5a298616be82cf296c5e7d3d4a01975b78d3",
+"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_long_label": "8c25ca559a26f0e96797d8eabf961e433aa50e04721ab365c29bb4c414a96ca5",
+"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_notification": "8a53e3a515bc9f95132bb6ce857577fdd5a4ed71e6eadad2a20d08789faa23a3",
+"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_prefix": "ba2c063c5a64c3e626ee8c91ccf8de6dead073a8004c83194eed266b32cdba9c",
+"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_size": "3ced9b069365655bd298b0a2e89f80bffee5d977f6196a13d9a5263ce82bfb97",
+"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_jpeg_fail": "3ced9b069365655bd298b0a2e89f80bffee5d977f6196a13d9a5263ce82bfb97",
+"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_t1_fail": "3ced9b069365655bd298b0a2e89f80bffee5d977f6196a13d9a5263ce82bfb97",
"T3B1_es_test_msg_applysettings.py::test_apply_settings": "204a60a0407715a39f9dfb8e36d2b62af2ae2cbbcf87e613d83218ad6e6e32d0",
"T3B1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "0b513648180afddf4ec04b5e5736e59fa5764ea9e394e86dc8164df35caf3fcf",
"T3B1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "12f3e9488f4073f9b5a0205fc57f72f028064e64071a3d29065466ff24002cb7",
@@ -21035,13 +21039,14 @@
"T3B1_fr_test_language.py::test_switch_from_english_not_silent": "91ac5ee55ed7eb7e98c199a4b311ff2cb4f0fcfd55bb20f47aa225fae5e49133",
"T3B1_fr_test_language.py::test_switch_language": "605d5d11f606553513a478533841ea1a1f3b705fb093d4265b6e7d0341052cc0",
"T3B1_fr_test_language.py::test_translations_renders_on_screen": "5058161aa7763b7ae9cba7b691f46e1c313c0e0b46cad95908c61636c7d2bf5c",
-"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "43d509c648c722f10ee319fece2644e83af445c3c1bfb8350bba96d5f80b8080",
-"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_single_message": "0811a01551523bf1841fa77da0732d05440c68a8970ae496366a25901edffd13",
-"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "1b66a7b5e48c785b6642d2565181efac136579b69028840fd7dc018c93cf6f9e",
-"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "8bf8fd734bedda0089760336cdbd18391cac9e3e034d832235d3ad83b116cec0",
-"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "980e7ed190110c3798a341756b539d1da13c0e2665b2e10ef277794282a4cb0b",
-"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "980e7ed190110c3798a341756b539d1da13c0e2665b2e10ef277794282a4cb0b",
-"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "980e7ed190110c3798a341756b539d1da13c0e2665b2e10ef277794282a4cb0b",
+"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_good": "43d509c648c722f10ee319fece2644e83af445c3c1bfb8350bba96d5f80b8080",
+"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_single_message": "0811a01551523bf1841fa77da0732d05440c68a8970ae496366a25901edffd13",
+"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_long_label": "1b66a7b5e48c785b6642d2565181efac136579b69028840fd7dc018c93cf6f9e",
+"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_notification": "8bf8fd734bedda0089760336cdbd18391cac9e3e034d832235d3ad83b116cec0",
+"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_prefix": "27d90be8983d2fc61adfd9bf78427dc7e437f56632fb8395697c55dafed6e1a8",
+"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_size": "980e7ed190110c3798a341756b539d1da13c0e2665b2e10ef277794282a4cb0b",
+"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_jpeg_fail": "980e7ed190110c3798a341756b539d1da13c0e2665b2e10ef277794282a4cb0b",
+"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_t1_fail": "980e7ed190110c3798a341756b539d1da13c0e2665b2e10ef277794282a4cb0b",
"T3B1_fr_test_msg_applysettings.py::test_apply_settings": "21a28cc22e786812520babb38a79bfe6fc9e0ae04800fae824b3205bfe0a9651",
"T3B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "3f70e3bb5159603b96f080d7021903f325a9de9d5eb460b7ff053108e3e00690",
"T3B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a5bcf35a3a6b55b3a276f2f3af44af1bd53442cb621e845f1f51445a348131d9",
@@ -22788,13 +22793,14 @@
"T3B1_pt_test_language.py::test_switch_from_english_not_silent": "bd18c1ab9a7051783c29f0940e62db6927e0484b67e790bd5fd0d076082e7026",
"T3B1_pt_test_language.py::test_switch_language": "d27dfe86e27b2e448eb51c86ff590e33c30ba30b76ad55d5ee93f8b55a6ec8d2",
"T3B1_pt_test_language.py::test_translations_renders_on_screen": "e709c445166cf7c7ad27b2d27f84ee4bad4329c83628df10c7ba21a4e75c35cf",
-"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "5d16bbf784eaa8a6bd874b1adaedee76eca2eb24ccb0b2268bbf018fc16a6db5",
-"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_single_message": "8af2aa4e761a1329bd1ba2aaadd0e86615aa95f49aace96eddd54a6703340093",
-"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "31d2c723c0cde446b17af70d5ca4405949d813226552549ce3b6a6bf109b65fe",
-"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "038e8ceb2d1abe0f830c2dd8599df0953469a9aafbeba6c21270f8663968715f",
-"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "1fcd3d3dc558101db51b71ef58aac1e847d0a2173be80d2b8d625d2ab4f482c5",
-"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "1fcd3d3dc558101db51b71ef58aac1e847d0a2173be80d2b8d625d2ab4f482c5",
-"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "1fcd3d3dc558101db51b71ef58aac1e847d0a2173be80d2b8d625d2ab4f482c5",
+"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_good": "5d16bbf784eaa8a6bd874b1adaedee76eca2eb24ccb0b2268bbf018fc16a6db5",
+"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_single_message": "8af2aa4e761a1329bd1ba2aaadd0e86615aa95f49aace96eddd54a6703340093",
+"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_long_label": "31d2c723c0cde446b17af70d5ca4405949d813226552549ce3b6a6bf109b65fe",
+"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_with_notification": "038e8ceb2d1abe0f830c2dd8599df0953469a9aafbeba6c21270f8663968715f",
+"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_prefix": "90562d7287dc2fbc48d11b4d0b8c6c9b116bdbd09bc2eeef1ed80e1beacca245",
+"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_caesar_toif_wrong_size": "1fcd3d3dc558101db51b71ef58aac1e847d0a2173be80d2b8d625d2ab4f482c5",
+"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_jpeg_fail": "1fcd3d3dc558101db51b71ef58aac1e847d0a2173be80d2b8d625d2ab4f482c5",
+"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_caesar_upload_t1_fail": "1fcd3d3dc558101db51b71ef58aac1e847d0a2173be80d2b8d625d2ab4f482c5",
"T3B1_pt_test_msg_applysettings.py::test_apply_settings": "c6d7dc431015de4c369b8a637e8dd716e4658c99f0675ba5b42ab1b0fc844013",
"T3B1_pt_test_msg_applysettings.py::test_apply_settings_passphrase": "faa2a2bac2e1da81a5f95dad0e163b5b2eb16d60a7d59f1dc7e687f437809db6",
"T3B1_pt_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "2e57d6b6491c7f23f2bee66347357fc18e9ba16183e12f3c6d28414ab8a5b16b",
Why this scored 44/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.