What changed, and why it matters
This commit adds new regulatory certification screens for Brazil, Ghana, and Nigeria to the Trezor hardware wallet's user interface. It is purely a compliance/labeling change: new image files are included and a list of regulatory regions is updated. There is no indication of any security bug, vulnerability, or behavior change affecting funds or device security.
No security action required. Treat as routine compliance/content update. If desired, verify the new image assets are correctly rendered on device and that the Ghana text string fits the display.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change extends the Eckhart layout’s regulatory screen data structure by increasing SCREENS from 14 to 17 and adding RegulatoryZone entries for Brazil (with two icons), Ghana (text-only NCA approval ID), and Nigeria (with two icons). Corresponding .png/.toif assets are added and referenced via include_icon! macros in theme/mod.rs. A Python test fixture list is updated to expect the new regions. No code logic, cryptography, authentication, or memory handling is modified.
Changed components
core/embed/rust/src/ui/layout_eckhart/firmware/regulatory_screen.rscore/embed/rust/src/ui/layout_eckhart/theme/mod.rscore/embed/rust/src/ui/layout_eckhart/res/regulatory/*tests/click_tests/device_menu/common.pyInspect captured patch +35 / −1
diff --git a/core/embed/rust/src/ui/layout_eckhart/firmware/regulatory_screen.rs b/core/embed/rust/src/ui/layout_eckhart/firmware/regulatory_screen.rs
index b2e253d7..d5467163 100644
--- a/core/embed/rust/src/ui/layout_eckhart/firmware/regulatory_screen.rs
+++ b/core/embed/rust/src/ui/layout_eckhart/firmware/regulatory_screen.rs
@@ -157,7 +157,7 @@ struct RegulatoryContent {
}
impl RegulatoryContent {
- const SCREENS: usize = 14;
+ const SCREENS: usize = 17;
/// Regulatory zones data. EU, US, CA first, then alphabetical order.
const ZONES: [RegulatoryZone; Self::SCREENS] = [
RegulatoryZone {
@@ -202,6 +202,20 @@ impl RegulatoryContent {
icon2: None,
production_year: false,
},
+ RegulatoryZone {
+ name: Some("Brazil"),
+ content: "",
+ icon1: Some(theme::ICON_BRASIL_1),
+ icon2: Some(theme::ICON_BRASIL_2),
+ production_year: false,
+ },
+ RegulatoryZone {
+ name: Some("Ghana"),
+ content: "NCA APPROVED:\nSRH-7EA-X37-HRS",
+ icon1: None,
+ icon2: None,
+ production_year: false,
+ },
RegulatoryZone {
name: Some("Japan"),
content: "",
@@ -209,6 +223,13 @@ impl RegulatoryContent {
icon2: Some(theme::ICON_JAPAN_2),
production_year: false,
},
+ RegulatoryZone {
+ name: Some("Nigeria"),
+ content: "",
+ icon1: Some(theme::ICON_NIGERIA_1),
+ icon2: Some(theme::ICON_NIGERIA_2),
+ production_year: false,
+ },
RegulatoryZone {
name: Some("Singapore"),
content: "",
diff --git a/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_1.png b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_1.png
new file mode 100644
index 00000000..8542e7a1
Binary files /dev/null and b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_1.png differ
diff --git a/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_1.toif b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_1.toif
new file mode 100644
index 00000000..c458601a
Binary files /dev/null and b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_1.toif differ
diff --git a/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_2.png b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_2.png
new file mode 100644
index 00000000..d4094a66
Binary files /dev/null and b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_2.png differ
diff --git a/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_2.toif b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_2.toif
new file mode 100644
index 00000000..f30286aa
Binary files /dev/null and b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/brasil_2.toif differ
diff --git a/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_1.png b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_1.png
new file mode 100644
index 00000000..cd5f5d89
Binary files /dev/null and b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_1.png differ
diff --git a/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_1.toif b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_1.toif
new file mode 100644
index 00000000..ff27d9e4
Binary files /dev/null and b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_1.toif differ
diff --git a/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_2.png b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_2.png
new file mode 100644
index 00000000..29349155
Binary files /dev/null and b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_2.png differ
diff --git a/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_2.toif b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_2.toif
new file mode 100644
index 00000000..9b9bf9d3
Binary files /dev/null and b/core/embed/rust/src/ui/layout_eckhart/res/regulatory/nigeria_2.toif differ
diff --git a/core/embed/rust/src/ui/layout_eckhart/theme/mod.rs b/core/embed/rust/src/ui/layout_eckhart/theme/mod.rs
index 91c99b53..6041fded 100644
--- a/core/embed/rust/src/ui/layout_eckhart/theme/mod.rs
+++ b/core/embed/rust/src/ui/layout_eckhart/theme/mod.rs
@@ -193,6 +193,8 @@ include_icon!(
ICON_ARGENTINA,
"layout_eckhart/res/regulatory/argentina.toif"
);
+include_icon!(ICON_BRASIL_1, "layout_eckhart/res/regulatory/brasil_1.toif");
+include_icon!(ICON_BRASIL_2, "layout_eckhart/res/regulatory/brasil_2.toif");
include_icon!(ICON_EUROPE, "layout_eckhart/res/regulatory/europe.toif");
include_icon!(ICON_FCC, "layout_eckhart/res/regulatory/fcc.toif");
include_icon!(ICON_JAPAN_1, "layout_eckhart/res/regulatory/japan_1.toif");
@@ -200,6 +202,14 @@ include_icon!(ICON_JAPAN_2, "layout_eckhart/res/regulatory/japan_2.toif");
include_icon!(ICON_KOREA_1, "layout_eckhart/res/regulatory/korea_1.toif");
include_icon!(ICON_KOREA_2, "layout_eckhart/res/regulatory/korea_2.toif");
include_icon!(ICON_KOREA_3, "layout_eckhart/res/regulatory/korea_3.toif");
+include_icon!(
+ ICON_NIGERIA_1,
+ "layout_eckhart/res/regulatory/nigeria_1.toif"
+);
+include_icon!(
+ ICON_NIGERIA_2,
+ "layout_eckhart/res/regulatory/nigeria_2.toif"
+);
include_icon!(ICON_RCM, "layout_eckhart/res/regulatory/rcm.toif");
include_icon!(
ICON_SINGAPORE,
diff --git a/tests/click_tests/device_menu/common.py b/tests/click_tests/device_menu/common.py
index 42aaaa9d..d3b18b21 100644
--- a/tests/click_tests/device_menu/common.py
+++ b/tests/click_tests/device_menu/common.py
@@ -36,7 +36,10 @@ REGULATORY_AREAS = [
"Canada",
"Argentina",
"Australia",
+ "Brazil",
+ "Ghana",
"Japan",
+ "Nigeria",
"Singapore",
"South Africa",
"South Korea",
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.