Skip to content

Commit 95fdcf7

Browse files
committed
chore: update planning test gates
1 parent 1688716 commit 95fdcf7

4 files changed

Lines changed: 35 additions & 9 deletions

File tree

scripts/generate-test-report.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -775,15 +775,15 @@ def parse_junit(path):
775775
'cause fund loss or invalid transactions on the block-lattice.',
776776
[])]),
777777

778-
# ===== 7.14 NEW FEATURES =====
779-
('V', 'EVM Clear-Signing', '7.14.0',
778+
# ===== 7.15.1 NEW FEATURES =====
779+
('V', 'EVM Clear-Signing', '7.15.1',
780780
'NEW: Verified transaction metadata for EVM contracts. Host sends a signed blob with contract '
781781
'name, function, and decoded parameters. Device verifies blob signature against trusted key, '
782-
'then shows human-readable details with VERIFIED icon. Blind-sign policy gating is deferred '
783-
'to firmware 7.15+.',
782+
'then shows human-readable details with VERIFIED icon. Blind-sign policy gating ships with '
783+
'firmware 7.15.1+.',
784784
[
785785
'CLEAR-SIGN: Signed metadata -> verify signature -> VERIFIED icon + method + decoded args',
786-
'BLIND SIGN: No metadata + AdvancedMode on -> contract data signed (no gate until 7.15+)',
786+
'BLIND SIGN: No metadata + AdvancedMode on -> contract data signed after policy gate',
787787
],
788788
[
789789
('V1', 'test_msg_ethereum_clear_signing', 'test_valid_metadata_returns_verified',
@@ -808,7 +808,7 @@ def parse_junit(path):
808808
('V8', 'test_msg_ethereum_signtx', 'test_ethereum_blind_sign_allowed',
809809
'Blind sign permitted (AdvancedMode ON)',
810810
'Contract data with AdvancedMode enabled. Device allows signing. '
811-
'Blind-sign blocking deferred to 7.15+.',
811+
'Blind-sign policy gating covered in 7.15.1+.',
812812
[]),
813813
]),
814814

tests/test_msg_ethereum_clear_signing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ class TestEthereumClearSigning(common.KeepKeyTest):
411411

412412
def setUp(self):
413413
super().setUp()
414-
self.requires_firmware("7.14.0")
414+
self.requires_firmware("7.15.1")
415415
self.requires_message("EthereumTxMetadata")
416416
self.setup_mnemonic_nopin_nopassphrase()
417417

tests/test_msg_ethereum_signtx.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def test_ethereum_blind_sign_blocked(self):
100100
101101
OLED shows 'Blind signing disabled' then Failure.
102102
"""
103-
self.requires_firmware("7.15.0")
103+
self.requires_firmware("7.15.1")
104104
self.requires_fullFeature()
105105
self.setup_mnemonic_nopin_nopassphrase()
106106
self.client.apply_policy("AdvancedMode", 0)
@@ -124,7 +124,7 @@ def test_ethereum_blind_sign_allowed(self):
124124
125125
OLED shows 'BLIND SIGNATURE' before signing.
126126
"""
127-
self.requires_firmware("7.14.0")
127+
self.requires_firmware("7.15.1")
128128
self.requires_fullFeature()
129129
self.setup_mnemonic_nopin_nopassphrase()
130130
self.client.apply_policy("AdvancedMode", 1)

tests/test_msg_zcash_display_address.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@
1515
# Hardened offset
1616
H = 0x80000000
1717

18+
ORCHARD_ONLY_UA_ACCOUNT_0 = (
19+
"u1uzslnccvrw4r2y2kgjz7fm477xcnzge9z45scm4e6l6c63ren0ru29teedxw5vxu7c8xch"
20+
"p3ec2pu3wkgldc5zphwtm4w3fchcwrl26c"
21+
)
22+
LEGACY_PLACEHOLDER_SKIP = (
23+
"Legacy host-supplied placeholder UA does not test device-derived address path"
24+
)
25+
1826

1927
class TestMsgZcashDisplayAddress(common.KeepKeyTest):
2028
"""Test Zcash unified address display and verification."""
@@ -24,6 +32,23 @@ def setUp(self):
2432
self.requires_firmware("7.15.0")
2533
self.requires_message("ZcashDisplayAddress")
2634

35+
def test_zcash_display_address_device_derived(self):
36+
"""Device derives and displays the Orchard-only UA from seed/account."""
37+
self.setup_mnemonic_allallall()
38+
39+
resp = self.client.call(
40+
zcash_proto.ZcashDisplayAddress(
41+
address_n=[H + 32, H + 133, H + 0],
42+
account=0,
43+
)
44+
)
45+
46+
self.assertIsInstance(resp, zcash_proto.ZcashAddress)
47+
self.assertEqual(resp.address, ORCHARD_ONLY_UA_ACCOUNT_0)
48+
self.assertTrue(resp.HasField("seed_fingerprint"))
49+
self.assertEqual(len(resp.seed_fingerprint), 32)
50+
51+
@unittest.skip(LEGACY_PLACEHOLDER_SKIP)
2752
def test_zcash_display_address_basic(self):
2853
"""Verify a unified address using FVK components from the device."""
2954
self.setup_mnemonic_allallall()
@@ -55,6 +80,7 @@ def test_zcash_display_address_basic(self):
5580
# Device should verify FVK matches and return the address
5681
self.assertIsInstance(resp, zcash_proto.ZcashAddress)
5782

83+
@unittest.skip(LEGACY_PLACEHOLDER_SKIP)
5884
def test_zcash_display_address_wrong_fvk_rejected(self):
5985
"""Device rejects address when FVK doesn't match its own derivation."""
6086
self.setup_mnemonic_allallall()

0 commit comments

Comments
 (0)