@@ -919,6 +919,55 @@ def test_solana_sign_versioned_v0_static_verified(self):
919919 self .assertEqual (len (resp .signature ), 64 )
920920 self .assertFalse (all (b == 0 for b in resp .signature ))
921921
922+ def test_relay_certified_v0_no_lookup_proof_reaches_signer_check (self ):
923+ """The exact public Relay proof used by Vault must enter ClearSign.
924+
925+ The captured transaction belongs to the operator, not this test's
926+ mnemonic, so the final signer check must reject it. That later,
927+ specific rejection is intentional: it proves the certificate and
928+ schema survived protobuf decoding and passed the production FSM proof
929+ gate without requiring an operator secret or approving a transaction.
930+ """
931+ self .requires_firmware ("7.16.0" )
932+ self .requires_fullFeature ()
933+ self .setup_mnemonic_allallall ()
934+
935+ raw_tx = binascii .unhexlify (
936+ "8001000305ec3979a4dc6b401bd045171a189f26856fab9eab75560214f972b2"
937+ "edc164300f66963b37e581dc14a0f573eeede8e54a257d83d082c54ab208cbff"
938+ "d1dc2a70ca792689378ecd51d80406eb0caa3b62795beb10b6c5dc96bc2e0df0"
939+ "3cbfee1abfbe3e6d285d2ee963351b6deeb0a1e96c881435ccd450b2645f24cc"
940+ "27960bee47000000000000000000000000000000000000000000000000000000"
941+ "0000000000d96db9f622f840ffda97430208ddbc7950d2c1ea45ecc9c2933151"
942+ "c02963f3860102050300000104300d9e0ddf5fd51c06f075633b000000000370"
943+ "4dea2a5eb9cf98e2f625a96080df1f0c5c24ccec3a6d8827b3ab25c0b11800" )
944+ schema_payload = binascii .unhexlify (
945+ "4b4b534f4c53433101792689378ecd51d80406eb0caa3b62795beb10b6c5dc96"
946+ "bc2e0df03cbfee1abf080d9e0ddf5fd51c060c52656c6179204272696467650d"
947+ "6465706f7369744e6174697665020506416d6f756e7404054f72646572010305"
948+ "5661756c74" )
949+ schema_signature = binascii .unhexlify (
950+ "801b309d284ae89287a21a6acbd5c63f999515f3ff6bf71d72a256485321b892"
951+ "7b7ebc3a26ace3df5551b85a68df8e9f1ef8eac220d85f4bfaa33d43b5349061" )
952+ certificate = binascii .unhexlify (
953+ "0101000001f56c68c8804b6565704b6579205661756c74000000000000000000"
954+ "000000000000000000000342f5f9704494b3f9bd72295eecaf29d783d23ea02"
955+ "b2dc9f48abcd2e46d4850cfa2753fac6068a45747a32a4a39f249af72b55370f"
956+ "3491913b7fb9a80207d619b3b4fca6750fc1fdc790da5562b42a351e12cde3c"
957+ "0f084056a24ca8d1bf2c36b5" )
958+
959+ self .client .apply_policy ('AdvancedMode' , False )
960+ with pytest .raises (CallException ) as exc :
961+ self .client .call (messages .SolanaSignTx (
962+ address_n = parse_path ("m/44'/501'/0'/0'" ),
963+ raw_tx = raw_tx ,
964+ schema_payload = schema_payload ,
965+ schema_signature = schema_signature ,
966+ schema_signer_key_id = 128 ,
967+ clearsign_certificate = certificate ,
968+ ))
969+ self .assertIn ("Derived key is not a signer for this tx" , str (exc .value ))
970+
922971 def test_solana_sign_x402_zero_lut_usdc_payment (self ):
923972 """Official x402 SVM shape clear-signs without blind signing.
924973
0 commit comments