File tree Expand file tree Collapse file tree
crates/node/src/providers/verify_foreign_tx Expand file tree Collapse file tree Original file line number Diff line number Diff line change 6565 ) -> anyhow:: Result < ( ( dtos:: ForeignTxSignPayload , Signature ) , VerifyingKey ) > {
6666 let foreign_tx_request = self . verify_foreign_tx_request_store . get ( id) . await ?;
6767
68+ let response_payload = self
69+ . execute_foreign_chain_request (
70+ & foreign_tx_request. request ,
71+ foreign_tx_request. payload_version ,
72+ )
73+ . await ?;
74+
75+ // Build and validate the request before the presignature is popped, so invalid/malicious
76+ // requests don't cost a presignature.
77+ let sign_request = build_signature_request ( & foreign_tx_request, & response_payload) ?;
78+
6879 let keyshare = self
6980 . ecdsa_signature_provider
7081 . keyshare ( foreign_tx_request. domain_id ) ?;
7889 participants,
7990 ) ?;
8091
81- let response_payload = self
82- . execute_foreign_chain_request (
83- & foreign_tx_request. request ,
84- foreign_tx_request. payload_version ,
85- )
86- . await ?;
87-
88- let sign_request = build_signature_request ( & foreign_tx_request, & response_payload) ?;
89-
9092 let response = self
9193 . ecdsa_signature_provider
9294 . make_signature_leader_given_parameters ( sign_request, presignature, channel)
You can’t perform that action at this time.
0 commit comments