@@ -139,25 +139,31 @@ int main(int argc, char **argv) {
139
139
secp256k1_gej * pubkeys_gej ;
140
140
size_t scratch_size ;
141
141
142
+ data .ctx = secp256k1_context_create (SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY );
143
+ scratch_size = secp256k1_strauss_scratch_size (POINTS ) + STRAUSS_SCRATCH_OBJECTS * 16 ;
144
+ data .scratch = secp256k1_scratch_space_create (data .ctx , scratch_size );
142
145
data .ecmult_multi = secp256k1_ecmult_multi_var ;
146
+
143
147
if (argc > 1 ) {
144
148
if (have_flag (argc , argv , "pippenger_wnaf" )) {
145
149
printf ("Using pippenger_wnaf:\n" );
146
150
data .ecmult_multi = secp256k1_ecmult_pippenger_batch_single ;
147
151
} else if (have_flag (argc , argv , "strauss_wnaf" )) {
148
152
printf ("Using strauss_wnaf:\n" );
149
153
data .ecmult_multi = secp256k1_ecmult_strauss_batch_single ;
154
+ } else if (have_flag (argc , argv , "simple" )) {
155
+ printf ("Using simple algorithm:\n" );
156
+ data .ecmult_multi = secp256k1_ecmult_multi_var ;
157
+ secp256k1_scratch_space_destroy (data .scratch );
158
+ data .scratch = NULL ;
150
159
} else {
151
160
fprintf (stderr , "%s: unrecognized argument '%s'.\n" , argv [0 ], argv [1 ]);
152
- fprintf (stderr , "Use 'pippenger_wnaf', 'strauss_wnaf' or no argument to benchmark a combined algorithm.\n" );
161
+ fprintf (stderr , "Use 'pippenger_wnaf', 'strauss_wnaf', 'simple' or no argument to benchmark a combined algorithm.\n" );
153
162
return 1 ;
154
163
}
155
164
}
156
165
157
166
/* Allocate stuff */
158
- data .ctx = secp256k1_context_create (SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY );
159
- scratch_size = secp256k1_strauss_scratch_size (POINTS ) + STRAUSS_SCRATCH_OBJECTS * 16 ;
160
- data .scratch = secp256k1_scratch_space_create (data .ctx , scratch_size );
161
167
data .scalars = malloc (sizeof (secp256k1_scalar ) * POINTS );
162
168
data .seckeys = malloc (sizeof (secp256k1_scalar ) * POINTS );
163
169
data .pubkeys = malloc (sizeof (secp256k1_ge ) * POINTS );
@@ -188,7 +194,9 @@ int main(int argc, char **argv) {
188
194
}
189
195
}
190
196
secp256k1_context_destroy (data .ctx );
191
- secp256k1_scratch_space_destroy (data .scratch );
197
+ if (data .scratch != NULL ) {
198
+ secp256k1_scratch_space_destroy (data .scratch );
199
+ }
192
200
free (data .scalars );
193
201
free (data .pubkeys );
194
202
free (data .seckeys );
0 commit comments