@@ -25,7 +25,7 @@ static void print_table(FILE *fp, const char *name, int window_g, const secp256k
25
25
int j ;
26
26
int i ;
27
27
28
- fprintf (fp , "static const secp256k1_ge_storage %s[ECMULT_TABLE_SIZE(WINDOW_G)] = {\n" , name );
28
+ fprintf (fp , "const secp256k1_ge_storage %s[ECMULT_TABLE_SIZE(WINDOW_G)] = {\n" , name );
29
29
fprintf (fp , " S(%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32
30
30
",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ")\n" ,
31
31
SECP256K1_GE_STORAGE_CONST_GET (table [0 ]));
@@ -57,11 +57,9 @@ static void print_two_tables(FILE *fp, int window_g) {
57
57
}
58
58
59
59
int main (void ) {
60
- const int window_g_13 = 4 ;
61
- const int window_g_199 = 8 ;
62
60
FILE * fp ;
63
61
64
- fp = fopen ("src/precomputed_ecmult.h " ,"w" );
62
+ fp = fopen ("src/precomputed_ecmult.c " ,"w" );
65
63
if (fp == NULL ) {
66
64
fprintf (stderr , "Could not open src/precomputed_ecmult.h for writing!\n" );
67
65
return -1 ;
@@ -71,36 +69,24 @@ int main(void) {
71
69
fprintf (fp , "/* This file contains an array secp256k1_pre_g with odd multiples of the base point G and\n" );
72
70
fprintf (fp , " * an array secp256k1_pre_g_128 with odd multiples of 2^128*G for accelerating the computation of a*P + b*G.\n" );
73
71
fprintf (fp , " */\n" );
74
- fprintf (fp , "#ifndef SECP256K1_PRECOMPUTED_ECMULT_H\n" );
75
- fprintf (fp , "#define SECP256K1_PRECOMPUTED_ECMULT_H\n" );
76
- fprintf (fp , "#include \"group.h\"\n" );
77
- fprintf (fp , "#ifdef S\n" );
78
- fprintf (fp , " #error macro identifier S already in use.\n" );
72
+ fprintf (fp , "#if defined HAVE_CONFIG_H\n" );
73
+ fprintf (fp , "#include \"libsecp256k1-config.h\"\n" );
79
74
fprintf (fp , "#endif\n" );
80
- fprintf (fp , "#define S(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) "
81
- "SECP256K1_GE_STORAGE_CONST(0x##a##u,0x##b##u,0x##c##u,0x##d##u,0x##e##u,0x##f##u,0x##g##u,"
82
- "0x##h##u,0x##i##u,0x##j##u,0x##k##u,0x##l##u,0x##m##u,0x##n##u,0x##o##u,0x##p##u)\n" );
75
+ fprintf (fp , "#include \"../include/secp256k1.h\"\n" );
76
+ fprintf (fp , "#include \"group.h\"\n" );
77
+ fprintf (fp , "#include \"ecmult.h\"\n" );
78
+ fprintf (fp , "#define S(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) SECP256K1_GE_STORAGE_CONST(0x##a##u,0x##b##u,0x##c##u,0x##d##u,0x##e##u,0x##f##u,0x##g##u,0x##h##u,0x##i##u,0x##j##u,0x##k##u,0x##l##u,0x##m##u,0x##n##u,0x##o##u,0x##p##u)\n" );
83
79
fprintf (fp , "#if ECMULT_TABLE_SIZE(ECMULT_WINDOW_SIZE) > %ld\n" , ECMULT_TABLE_SIZE (ECMULT_WINDOW_SIZE ));
84
- fprintf (fp , " #error configuration mismatch, invalid ECMULT_WINDOW_SIZE. Try deleting precomputed_ecmult.h before the build.\n" );
85
- fprintf (fp , "#endif\n" );
86
- fprintf (fp , "#if defined(EXHAUSTIVE_TEST_ORDER)\n" );
87
- fprintf (fp , "#if EXHAUSTIVE_TEST_ORDER == 13\n" );
88
- fprintf (fp , "#define WINDOW_G %d\n" , window_g_13 );
89
- fprintf (fp , "#elif EXHAUSTIVE_TEST_ORDER == 199\n" );
90
- fprintf (fp , "#define WINDOW_G %d\n" , window_g_199 );
91
- fprintf (fp , "#else\n" );
92
- fprintf (fp , " #error No known generator for the specified exhaustive test group order.\n" );
80
+ fprintf (fp , " #error configuration mismatch, invalid ECMULT_WINDOW_SIZE. Try deleting precomputed_ecmult.c before the build.\n" );
93
81
fprintf (fp , "#endif\n" );
94
- fprintf (fp , "static secp256k1_ge_storage secp256k1_pre_g[ECMULT_TABLE_SIZE(WINDOW_G)]; \n" );
95
- fprintf (fp , "static secp256k1_ge_storage secp256k1_pre_g_128[ECMULT_TABLE_SIZE(WINDOW_G)]; \n" );
96
- fprintf (fp , "#else /* !defined( EXHAUSTIVE_TEST_ORDER) */\n" );
82
+ fprintf (fp , "#ifdef EXHAUSTIVE_TEST_ORDER \n" );
83
+ fprintf (fp , "#error Cannot compile precomputed_ecmult.c in exhaustive test mode \n" );
84
+ fprintf (fp , "#endif /* EXHAUSTIVE_TEST_ORDER */\n" );
97
85
fprintf (fp , "#define WINDOW_G ECMULT_WINDOW_SIZE\n" );
98
86
99
87
print_two_tables (fp , ECMULT_WINDOW_SIZE );
100
88
101
- fprintf (fp , "#endif /* defined(EXHAUSTIVE_TEST_ORDER) */\n" );
102
89
fprintf (fp , "#undef S\n" );
103
- fprintf (fp , "#endif /* SECP256K1_PRECOMPUTED_ECMULT_H */\n" );
104
90
fclose (fp );
105
91
106
92
return 0 ;
0 commit comments