@@ -80,7 +80,12 @@ pub enum ComposedProverState<G: PrimeGroup + ConstantTimeEq> {
8080}
8181
8282struct ComposedOrProverState < G : PrimeGroup + ConstantTimeEq > {
83- prover_states : Vec < ( Choice , ComposedProverState < G > , ComposedChallenge < G > , ComposedResponse < G > ) > ,
83+ prover_states : Vec < (
84+ Choice ,
85+ ComposedProverState < G > ,
86+ ComposedChallenge < G > ,
87+ ComposedResponse < G > ,
88+ ) > ,
8489}
8590
8691// Structure representing the Response type of Protocol as SigmaProtocol
@@ -105,7 +110,6 @@ const fn composed_challenge_size<G: PrimeGroup>() -> usize {
105110 ( G :: Scalar :: NUM_BITS as usize + 7 ) / 8
106111}
107112
108-
109113impl < G : PrimeGroup + ConstantTimeEq > ComposedRelation < G > {
110114 fn is_witness_valid ( & self , witness : & ComposedWitness < G > ) -> Choice {
111115 let validity_bit = Choice :: from ( 0 ) ;
@@ -212,18 +216,24 @@ impl<G: PrimeGroup + ConstantTimeEq> ComposedRelation<G> {
212216 instances[ i] . simulate_transcript ( rng) ?;
213217
214218 let valid_witness = instances[ i] . is_witness_valid ( & w) ;
215- commitments. push ( if valid_witness. unwrap_u8 ( ) == 1 { commitment } else { simulated_commitment. clone ( ) } ) ;
216- prover_states. push ( ( valid_witness, prover_state, simulated_challenge, simulated_response) ) ;
219+ commitments. push ( if valid_witness. unwrap_u8 ( ) == 1 {
220+ commitment
221+ } else {
222+ simulated_commitment. clone ( )
223+ } ) ;
224+ prover_states. push ( (
225+ valid_witness,
226+ prover_state,
227+ simulated_challenge,
228+ simulated_response,
229+ ) ) ;
217230 }
218231 // check that we have only one witness set
219232 let witnesses_found = prover_states
220233 . iter ( )
221234 . map ( |x| x. 0 . unwrap_u8 ( ) as usize )
222235 . sum :: < usize > ( ) ;
223- let prover_state =
224- ComposedOrProverState {
225- prover_states,
226- } ;
236+ let prover_state = ComposedOrProverState { prover_states } ;
227237
228238 if witnesses_found > 1 {
229239 return Err ( Error :: InvalidInstanceWitnessPair ) ;
@@ -246,17 +256,33 @@ impl<G: PrimeGroup + ConstantTimeEq> ComposedRelation<G> {
246256 let ComposedOrProverState { prover_states } = prover_state;
247257
248258 let mut witness_challenge = challenge;
249- for ( valid_witness, _prover_state, simulated_challenge, _simulated_response) in & prover_states {
250- let c = G :: Scalar :: conditional_select ( & G :: Scalar :: ZERO , & simulated_challenge, * valid_witness) ;
259+ for ( valid_witness, _prover_state, simulated_challenge, _simulated_response) in
260+ & prover_states
261+ {
262+ let c = G :: Scalar :: conditional_select (
263+ & G :: Scalar :: ZERO ,
264+ & simulated_challenge,
265+ * valid_witness,
266+ ) ;
251267 witness_challenge -= c;
252268 }
253- for ( instance, ( valid_witness, prover_state, simulated_challenge, simulated_response) ) in instances. iter ( ) . zip ( prover_states) {
254- let challenge_i = G :: Scalar :: conditional_select ( & witness_challenge, & simulated_challenge, valid_witness) ;
269+ for ( instance, ( valid_witness, prover_state, simulated_challenge, simulated_response) ) in
270+ instances. iter ( ) . zip ( prover_states)
271+ {
272+ let challenge_i = G :: Scalar :: conditional_select (
273+ & witness_challenge,
274+ & simulated_challenge,
275+ valid_witness,
276+ ) ;
255277
256278 let real_response = instance. prover_response ( prover_state, & challenge_i) ?;
257279
258280 // let response_i = ComposedResponse::conditional_select(&real_response, &simulated_response, *witness_location);
259- let response_i = if valid_witness. unwrap_u8 ( ) == 1 { real_response } else { simulated_response } ;
281+ let response_i = if valid_witness. unwrap_u8 ( ) == 1 {
282+ real_response
283+ } else {
284+ simulated_response
285+ } ;
260286 result_challenges. push ( challenge_i) ;
261287 result_responses. push ( response_i) ;
262288 }
0 commit comments