@@ -834,6 +834,11 @@ def parse_junit(path):
834834 'Different account indices' , 'Verifies different accounts produce different addresses.' , []),
835835 ('S3' , 'test_msg_solana_getaddress' , 'test_solana_deterministic' ,
836836 'Deterministic derivation' , 'Same path always produces same address.' , []),
837+ ('S3b' , 'test_msg_solana_getaddress' , 'test_solana_show_address' ,
838+ 'Show Solana address on OLED' ,
839+ 'Full 44-character base58 address with QR code and derivation path displayed on OLED. '
840+ 'User compares against wallet app — primary defense against address substitution.' ,
841+ ['Solana QR + address' ]),
837842 ('S4' , 'test_msg_solana_signtx' , 'test_solana_sign_system_transfer' ,
838843 'Sign SOL transfer' , 'System::Transfer with full address + amount display.' , ['SOL amount + address' ]),
839844 ('S5' , 'test_msg_solana_signtx' , 'test_solana_sign_message' ,
@@ -876,12 +881,21 @@ def parse_junit(path):
876881 'Different accounts' , 'Different indices produce different addresses.' , []),
877882 ('T3' , 'test_msg_tron_getaddress' , 'test_tron_deterministic' ,
878883 'Deterministic derivation' , 'Same path always produces same address.' , []),
884+ ('T3b' , 'test_msg_tron_getaddress' , 'test_tron_show_address' ,
885+ 'Show TRON address on OLED' ,
886+ 'Full 34-character base58 address with QR code and derivation path m/44\' /195\' /0\' /0/0 '
887+ 'displayed on OLED. User compares against wallet app to detect address substitution.' ,
888+ ['TRON QR + address' ]),
879889 ('T4' , 'test_msg_tron_signtx' , 'test_tron_sign_transfer_structured' ,
880890 'Sign TRX transfer' , 'Structured clear-sign with full address display.' , ['TRX send' ]),
881891 ('T5' , 'test_msg_tron_signtx' , 'test_tron_sign_transfer_legacy_raw_data' ,
882892 'Sign TRX legacy raw' , 'Raw protobuf data triggers blind sign path.' , ['Blind sign' ]),
883893 ('T6' , 'test_msg_tron_signtx' , 'test_tron_sign_trc20_transfer' ,
884- 'Sign TRC-20 token' , 'Known token decoded from ABI data.' , ['Token + amount' ]),
894+ 'Sign TRC-20 USDT transfer' ,
895+ 'Device decodes the ABI transfer(address,uint256) call, matches the contract address '
896+ '(TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t) against its hardcoded USDT entry, and shows '
897+ '"Send 1.00 USDT to [address]" with the decoded token name and amount.' ,
898+ ['Token name + amount' ]),
885899 ('T7' , 'test_msg_tron_signtx' , 'test_tron_sign_missing_fields_rejected' ,
886900 'Missing fields rejected' , 'Incomplete transaction data is refused.' , []),
887901 ]),
@@ -899,6 +913,11 @@ def parse_junit(path):
899913 'Derive TON address' , 'Full 48-character base64url address.' , ['Full 48-char address' ]),
900914 ('N2' , 'test_msg_ton_getaddress' , 'test_ton_different_accounts' ,
901915 'Different accounts' , 'Different indices produce different addresses.' , []),
916+ ('N2b' , 'test_msg_ton_getaddress' , 'test_ton_show_address' ,
917+ 'Show TON address on OLED' ,
918+ 'Full 48-character base64url address with QR code and derivation path displayed on OLED. '
919+ 'User verifies against wallet app.' ,
920+ ['TON QR + address' ]),
902921 ('N3' , 'test_msg_ton_getaddress' , 'test_ton_address_format' ,
903922 'Address format validation' , 'Bounceable/non-bounceable format check.' , []),
904923 ('N4' , 'test_msg_ton_signtx' , 'test_ton_sign_structured' ,
0 commit comments