4
4
* file COPYING or https://www.opensource.org/licenses/mit-license.php.*
5
5
***********************************************************************/
6
6
7
- /* Autotools creates libsecp256k1-config.h, of which ECMULT_GEN_PREC_BITS is needed.
8
- ifndef guard so downstream users can define their own if they do not use autotools. */
9
- #if !defined(ECMULT_GEN_PREC_BITS )
10
- #include "libsecp256k1-config.h"
11
- #endif
12
-
13
7
/* In principle we could use ASM, but this yields only a minor speedup in
14
8
build time and it's very complicated. In particular when cross-compiling, we'd
15
9
need to build the ASM for the build and the host machine. */
24
18
#include "ecmult_gen_prec_impl.h"
25
19
26
20
int main (int argc , char * * argv ) {
27
- secp256k1_ge_storage * table ;
28
- int inner ;
29
- int outer ;
30
21
const char outfile [] = "src/ecmult_gen_static_prec_table.h" ;
31
22
FILE * fp ;
32
-
33
- int bits = ECMULT_GEN_PREC_BITS ;
34
- int g = ECMULT_GEN_PREC_G (bits );
35
- int n = ECMULT_GEN_PREC_N (bits );
36
- table = checked_malloc (& default_error_callback , n * g * sizeof (secp256k1_ge_storage ));
23
+ int bits ;
37
24
38
25
(void )argc ;
39
26
(void )argv ;
@@ -51,36 +38,41 @@ int main(int argc, char **argv) {
51
38
52
39
fprintf (fp , "#define SC SECP256K1_GE_STORAGE_CONST\n" );
53
40
54
- fprintf (fp , "#if ECMULT_GEN_PREC_BITS != %d\n" , bits );
55
- fprintf (fp , " #error configuration mismatch, invalid ECMULT_GEN_PREC_BITS. Try deleting ecmult_static_context.h before the build.\n" );
56
- fprintf (fp , "#endif\n" );
57
-
58
41
fprintf (fp , "#ifdef EXHAUSTIVE_TEST_ORDER\n" );
59
42
fprintf (fp , "static secp256k1_ge_storage secp256k1_ecmult_gen_prec_table[ECMULT_GEN_PREC_N(ECMULT_GEN_PREC_BITS)][ECMULT_GEN_PREC_G(ECMULT_GEN_PREC_BITS)];\n" );
60
43
fprintf (fp , "#else\n" );
61
44
fprintf (fp , "static const secp256k1_ge_storage secp256k1_ecmult_gen_prec_table[ECMULT_GEN_PREC_N(ECMULT_GEN_PREC_BITS)][ECMULT_GEN_PREC_G(ECMULT_GEN_PREC_BITS)] = {\n" );
62
45
63
- secp256k1_ecmult_gen_create_prec_table (table , & secp256k1_ge_const_g , bits );
64
-
65
- for (outer = 0 ; outer != n ; outer ++ ) {
66
- fprintf (fp ,"{\n" );
67
- for (inner = 0 ; inner != g ; inner ++ ) {
68
- fprintf (fp ," SC(%uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu)" , SECP256K1_GE_STORAGE_CONST_GET (table [outer * g + inner ]));
69
- if (inner != g - 1 ) {
70
- fprintf (fp ,",\n" );
46
+ for (bits = 2 ; bits <= 8 ; bits *= 2 ) {
47
+ int g = ECMULT_GEN_PREC_G (bits );
48
+ int n = ECMULT_GEN_PREC_N (bits );
49
+ int inner , outer ;
50
+
51
+ secp256k1_ge_storage * table = checked_malloc (& default_error_callback , n * g * sizeof (secp256k1_ge_storage ));
52
+ secp256k1_ecmult_gen_create_prec_table (table , & secp256k1_ge_const_g , bits );
53
+
54
+ fprintf (fp , "#if ECMULT_GEN_PREC_BITS == %d\n" , bits );
55
+ for (outer = 0 ; outer != n ; outer ++ ) {
56
+ fprintf (fp ,"{\n" );
57
+ for (inner = 0 ; inner != g ; inner ++ ) {
58
+ fprintf (fp ," SC(%uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu)" , SECP256K1_GE_STORAGE_CONST_GET (table [outer * g + inner ]));
59
+ if (inner != g - 1 ) {
60
+ fprintf (fp ,",\n" );
61
+ } else {
62
+ fprintf (fp ,"\n" );
63
+ }
64
+ }
65
+ if (outer != n - 1 ) {
66
+ fprintf (fp ,"},\n" );
71
67
} else {
72
- fprintf (fp ,"\n" );
68
+ fprintf (fp ,"} \n" );
73
69
}
74
70
}
75
- if (outer != n - 1 ) {
76
- fprintf (fp ,"},\n" );
77
- } else {
78
- fprintf (fp ,"}\n" );
79
- }
71
+ fprintf (fp , "#endif\n" );
72
+ free (table );
80
73
}
81
- fprintf (fp ,"};\n" );
82
- free (table );
83
74
75
+ fprintf (fp , "};\n" );
84
76
fprintf (fp , "#endif /* EXHAUSTIVE_TEST_ORDER */\n" );
85
77
fprintf (fp , "#undef SC\n" );
86
78
fprintf (fp , "#endif /* SECP256K1_ECMULT_GEN_STATIC_PREC_TABLE_H */\n" );
0 commit comments