@@ -38,7 +38,7 @@ impl<G: Group + GroupEncoding> SchnorrProtocol<G> {
3838 self . 0 . morphism . num_scalars
3939 }
4040
41- pub fn points_nb ( & self ) -> usize {
41+ pub fn statements_nb ( & self ) -> usize {
4242 self . 0 . morphism . num_statements ( )
4343 }
4444
@@ -58,6 +58,10 @@ impl<G: Group + GroupEncoding> SchnorrProtocol<G> {
5858 self . 0 . set_elements ( elements) ;
5959 }
6060
61+ pub fn evaluate ( & self , scalars : & [ <G as Group >:: Scalar ] ) -> Vec < G > {
62+ self . 0 . morphism . evaluate ( scalars)
63+ }
64+
6165 pub fn image ( & self ) -> Vec < G > {
6266 self . 0 . image ( )
6367 }
@@ -83,11 +87,11 @@ where
8387 return Err ( ProofError :: Other ) ;
8488 }
8589
86- let nonces: Vec < G :: Scalar > = ( 0 ..self . 0 . morphism . num_scalars )
90+ let nonces: Vec < G :: Scalar > = ( 0 ..self . scalars_nb ( ) )
8791 . map ( |_| G :: Scalar :: random ( & mut rng) )
8892 . collect ( ) ;
8993 let prover_state = ( nonces. clone ( ) , witness. clone ( ) ) ;
90- let commitment = self . 0 . morphism . evaluate ( & nonces) ;
94+ let commitment = self . evaluate ( & nonces) ;
9195 Ok ( ( commitment, prover_state) )
9296 }
9397
@@ -102,7 +106,7 @@ where
102106 }
103107
104108 let mut responses = Vec :: new ( ) ;
105- for i in 0 ..self . 0 . morphism . num_scalars {
109+ for i in 0 ..self . scalars_nb ( ) {
106110 responses. push ( state. 0 [ i] + state. 1 [ i] * challenge) ;
107111 }
108112 Ok ( responses)
@@ -115,14 +119,10 @@ where
115119 challenge : & Self :: Challenge ,
116120 response : & Self :: Response ,
117121 ) -> Result < ( ) , ProofError > {
118- let lhs = self . 0 . morphism . evaluate ( response) ;
122+ let lhs = self . evaluate ( response) ;
119123
120124 let mut rhs = Vec :: new ( ) ;
121- for ( i, g) in commitment
122- . iter ( )
123- . enumerate ( )
124- . take ( self . 0 . morphism . num_statements ( ) )
125- {
125+ for ( i, g) in commitment. iter ( ) . enumerate ( ) . take ( self . statements_nb ( ) ) {
126126 rhs. push ( self . 0 . morphism . group_elements [ self . 0 . image [ i] . index ( ) ] * challenge + g) ;
127127 }
128128
@@ -140,8 +140,8 @@ where
140140 response : & Self :: Response ,
141141 ) -> Result < Vec < u8 > , ProofError > {
142142 let mut bytes = Vec :: new ( ) ;
143- let commit_nb = self . 0 . morphism . num_statements ( ) ;
144- let response_nb = self . 0 . morphism . num_scalars ;
143+ let commit_nb = self . statements_nb ( ) ;
144+ let response_nb = self . scalars_nb ( ) ;
145145
146146 // Serialize commitments
147147 for commit in commitment. iter ( ) . take ( commit_nb) {
@@ -160,8 +160,8 @@ where
160160 & self ,
161161 data : & [ u8 ] ,
162162 ) -> Result < ( Self :: Commitment , Self :: Response ) , ProofError > {
163- let commit_nb = self . 0 . morphism . num_statements ( ) ;
164- let response_nb = self . 0 . morphism . num_scalars ;
163+ let commit_nb = self . statements_nb ( ) ;
164+ let response_nb = self . scalars_nb ( ) ;
165165
166166 let commit_size = G :: generator ( ) . to_bytes ( ) . as_ref ( ) . len ( ) ;
167167 let response_size = <<G as Group >:: Scalar as PrimeField >:: Repr :: default ( )
@@ -170,7 +170,7 @@ where
170170
171171 let expected_len = response_nb * response_size + commit_nb * commit_size;
172172 if data. len ( ) != expected_len {
173- return Err ( ProofError :: BatchSizeMismatch ) ;
173+ return Err ( ProofError :: ProofSizeMismatch ) ;
174174 }
175175
176176 let mut commitments: Self :: Commitment = Vec :: new ( ) ;
@@ -181,7 +181,7 @@ where
181181 let end = start + commit_size;
182182
183183 let slice = & data[ start..end] ;
184- let elem = deserialize_element ( slice) . ok_or ( ProofError :: GroupSerializationFailure ) ?;
184+ let elem = deserialize_element ( slice) ?;
185185 commitments. push ( elem) ;
186186 }
187187
@@ -190,8 +190,7 @@ where
190190 let end = start + response_size;
191191
192192 let slice = & data[ start..end] ;
193- let scalar =
194- deserialize_scalar :: < G > ( slice) . ok_or ( ProofError :: GroupSerializationFailure ) ?;
193+ let scalar = deserialize_scalar :: < G > ( slice) ?;
195194 responses. push ( scalar) ;
196195 }
197196
@@ -212,8 +211,8 @@ where
212211 return Err ( ProofError :: Other ) ;
213212 }
214213
215- let response_image = self . 0 . morphism . evaluate ( response) ;
216- let image = self . 0 . image ( ) ;
214+ let response_image = self . evaluate ( response) ;
215+ let image = self . image ( ) ;
217216
218217 let mut commitment = Vec :: new ( ) ;
219218 for i in 0 ..image. len ( ) {
@@ -230,7 +229,7 @@ where
230229 response : & Self :: Response ,
231230 ) -> Result < Vec < u8 > , ProofError > {
232231 let mut bytes = Vec :: new ( ) ;
233- let response_nb = self . 0 . morphism . num_scalars ;
232+ let response_nb = self . scalars_nb ( ) ;
234233
235234 // Serialize challenge
236235 bytes. extend_from_slice ( & serialize_scalar :: < G > ( challenge) ) ;
@@ -247,30 +246,28 @@ where
247246 & self ,
248247 data : & [ u8 ] ,
249248 ) -> Result < ( Self :: Challenge , Self :: Response ) , ProofError > {
250- let response_nb = self . 0 . morphism . num_scalars ;
249+ let response_nb = self . scalars_nb ( ) ;
251250 let response_size = <<G as Group >:: Scalar as PrimeField >:: Repr :: default ( )
252251 . as_ref ( )
253252 . len ( ) ;
254253
255254 let expected_len = ( response_nb + 1 ) * response_size;
256255
257256 if data. len ( ) != expected_len {
258- return Err ( ProofError :: BatchSizeMismatch ) ;
257+ return Err ( ProofError :: ProofSizeMismatch ) ;
259258 }
260259
261260 let mut responses: Self :: Response = Vec :: new ( ) ;
262261
263262 let slice = & data[ 0 ..response_size] ;
264- let challenge =
265- deserialize_scalar :: < G > ( slice) . ok_or ( ProofError :: GroupSerializationFailure ) ?;
263+ let challenge = deserialize_scalar :: < G > ( slice) ?;
266264
267265 for i in 0 ..response_nb {
268266 let start = ( i + 1 ) * response_size;
269267 let end = start + response_size;
270268
271269 let slice = & data[ start..end] ;
272- let scalar =
273- deserialize_scalar :: < G > ( slice) . ok_or ( ProofError :: GroupSerializationFailure ) ?;
270+ let scalar = deserialize_scalar :: < G > ( slice) ?;
274271 responses. push ( scalar) ;
275272 }
276273
@@ -288,7 +285,7 @@ where
288285 rng : & mut ( impl RngCore + CryptoRng ) ,
289286 ) -> ( Self :: Commitment , Self :: Response ) {
290287 let mut response = Vec :: new ( ) ;
291- response. extend ( iter:: repeat ( G :: Scalar :: random ( rng) ) . take ( self . 0 . morphism . num_scalars ) ) ;
288+ response. extend ( iter:: repeat ( G :: Scalar :: random ( rng) ) . take ( self . scalars_nb ( ) ) ) ;
292289 let commitment = self . get_commitment ( challenge, & response) . unwrap ( ) ;
293290 ( commitment, response)
294291 }
0 commit comments