@@ -48,6 +48,31 @@ func HealthCheck() ([]byte, error) {
4848}
4949
5050func SubmitBlockSignatures (header []byte , commit []byte , txs []byte , encRandom []byte /* valSet []byte, nextValSet []byte */ ) ([]byte , []byte , error ) {
51+ recorder := GetRecorder ()
52+
53+ // Create combined input for recording/replay
54+ input := make ([]byte , 0 , len (header )+ len (commit )+ len (txs )+ len (encRandom ))
55+ input = append (input , header ... )
56+ input = append (input , commit ... )
57+ input = append (input , txs ... )
58+ input = append (input , encRandom ... )
59+
60+ // In replay mode, return recorded data
61+ if recorder .IsReplayMode () {
62+ if output , err , found := recorder .Replay ("SubmitBlockSignatures" , input ); found {
63+ if err != nil {
64+ return nil , nil , err
65+ }
66+ // Output is 64 bytes: [32 bytes random][32 bytes validator_set_evidence]
67+ if len (output ) == 64 {
68+ return output [:32 ], output [32 :], nil
69+ }
70+ return nil , nil , fmt .Errorf ("SubmitBlockSignatures: invalid recorded data (expected 64 bytes, got %d)" , len (output ))
71+ }
72+ return nil , nil , fmt .Errorf ("SubmitBlockSignatures: no recorded data found (replay mode)" )
73+ }
74+
75+ // SGX mode: call the actual enclave
5176 errmsg := C.Buffer {}
5277 spidSlice := sendSlice (header )
5378 defer freeAfterSend (spidSlice )
@@ -62,7 +87,19 @@ func SubmitBlockSignatures(header []byte, commit []byte, txs []byte, encRandom [
6287 if err != nil {
6388 return nil , nil , errorWithMessage (err , errmsg )
6489 }
65- return receiveVector (res .buf1 ), receiveVector (res .buf2 ), nil
90+
91+ buf1 := receiveVector (res .buf1 )
92+ buf2 := receiveVector (res .buf2 )
93+
94+ // Record the result - 64 bytes: [32 bytes buf1][32 bytes buf2]
95+ output := make ([]byte , 64 )
96+ copy (output [:32 ], buf1 )
97+ copy (output [32 :], buf2 )
98+ if recordErr := recorder .Record ("SubmitBlockSignatures" , input , output , nil ); recordErr != nil {
99+ fmt .Printf ("[SubmitBlockSignatures] Warning: failed to record: %v\n " , recordErr )
100+ }
101+
102+ return buf1 , buf2 , nil
66103}
67104
68105func SubmitValidatorSetEvidence (evidence []byte ) error {
0 commit comments