feat(python): add root production key for T3B1
What changed, and why it matters
This commit updates the list of trusted public keys used by Trezor's Python library to authenticate genuine Trezor hardware. It adds the official production key for a new device model (T3B1, sold as Trezor Safe 3) and renames an older internal model name (T3W1) to its marketed name (Trezor Safe 7). There is no indication of a security vulnerability; it is routine key inventory maintenance for a new product variant.
No security action required. Reviewers may verify the new P-256 public key matches Trezor's published T3B1 root production key out-of-band, and confirm the product-name rename is consistent with Trezor's public product naming.
Security signals we found
Hard-coded public key addition for device authentication
No private key or secret material in diff
No cryptographic logic changes
No removal or weakening of existing root-of-trust entries
Comment-only clarifications and product-name alignment
Evidence from the diff
The change extends ROOT_PUBLIC_KEYS in python/src/trezorlib/authentication.py with a new P-256 root certificate for the T3B1 hardware revision, alongside existing T2B1 and T3W1/Trezor Safe 7 keys. It also corrects the human-readable product string from ‘Trezor T3W1’ to ‘Trezor Safe 7’ for three existing entries and adds clarifying comments. The added key is a hard-coded, well-known manufacturer root key used during device authenticity verification; no private key material, no logic change, and no removal of existing trust anchors are present.
Changed components
python/src/trezorlib/authentication.pyTrezor Python client library device authenticity verificationInspect captured patch +16 / −4
diff --git a/python/src/trezorlib/authentication.py b/python/src/trezorlib/authentication.py
index f3f33b27..3c780c59 100644
--- a/python/src/trezorlib/authentication.py
+++ b/python/src/trezorlib/authentication.py
@@ -234,6 +234,7 @@ class RootCertificate(t.NamedTuple):
ROOT_PUBLIC_KEYS = [
RootCertificate(
+ # Root production key for T2B1.
"Trezor Company",
"Trezor Safe 3",
False,
@@ -242,6 +243,16 @@ ROOT_PUBLIC_KEYS = [
"380bff20acc75cde03cffcb50ab6f8ce70c878e37ebc58ff7cca0a83b16b15fa5"
),
),
+ RootCertificate(
+ # Root production key for T3B1.
+ "Trezor Company",
+ "Trezor Safe 3",
+ False,
+ _pk_p256(
+ "045b5c3fdd01f3602092834209b86df0ca86a9faf25cac35c73bf6237d66eb21e"
+ "afcec3706f1ccd5eb4cc7f2fa1751213eccb1c78389afba89a5788ff31ee46a5d"
+ ),
+ ),
RootCertificate(
"Trezor Company",
"Trezor Safe 5",
@@ -254,7 +265,7 @@ ROOT_PUBLIC_KEYS = [
RootCertificate(
# Root production keys for T3W1.
"Trezor Company",
- "Trezor T3W1",
+ "Trezor Safe 7",
False,
_pk_p256(
"040dde0d3e0d4da593fac6fd02a461d0e7eef238aca55c7c50b4e9ec37f387330"
@@ -265,7 +276,7 @@ ROOT_PUBLIC_KEYS = [
RootCertificate(
# Root backup production keys for T3W1.
"Trezor Company",
- "Trezor T3W1",
+ "Trezor Safe 7",
False,
_pk_p256(
"04c6a673af4ec44b10441b1d78676e15173ad0e36df9f7f2fa1cd819955f20fe3"
@@ -274,6 +285,7 @@ ROOT_PUBLIC_KEYS = [
_pk_ed25519("5612606584ee7e0bc313b13f7ac94156bb4cb75bd77585ddbe579301306e85f1"),
),
RootCertificate(
+ # Root debug key for T2B1 and T3B1.
"TESTING ENVIRONMENT. DO NOT USE THIS DEVICE",
"Trezor Safe 3",
True,
@@ -294,7 +306,7 @@ ROOT_PUBLIC_KEYS = [
RootCertificate(
# Root debug keys for T3W1.
"TESTING ENVIRONMENT. DO NOT USE THIS DEVICE",
- "Trezor T3W1",
+ "Trezor Safe 7",
True,
_pk_p256(
"04521192e173a9da4e3023f747d836563725372681eba3079c56ff11b2fc137ab"
@@ -304,7 +316,7 @@ ROOT_PUBLIC_KEYS = [
RootCertificate(
# Root staging keys for T3W1.
"TESTING ENVIRONMENT. DO NOT USE THIS DEVICE",
- "Trezor T3W1",
+ "Trezor Safe 7",
False,
_pk_p256(
"0465e88f9b2cea67e8364f0cfcfacd500af24e9040b357beee629ccc4fce1704d"
Why this scored 18/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.