@@ -25,7 +25,7 @@ static void print_table(FILE *fp, const char *name, int window_g, const secp256k
2525 int j ;
2626 int i ;
2727
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 );
2929 fprintf (fp , " S(%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32
3030 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ",%" PRIx32 ")\n" ,
3131 SECP256K1_GE_STORAGE_CONST_GET (table [0 ]));
@@ -57,11 +57,9 @@ static void print_two_tables(FILE *fp, int window_g) {
5757}
5858
5959int main (void ) {
60- const int window_g_13 = 4 ;
61- const int window_g_199 = 8 ;
6260 FILE * fp ;
6361
64- fp = fopen ("src/precomputed_ecmult.h " ,"w" );
62+ fp = fopen ("src/precomputed_ecmult.c " ,"w" );
6563 if (fp == NULL ) {
6664 fprintf (stderr , "Could not open src/precomputed_ecmult.h for writing!\n" );
6765 return -1 ;
@@ -71,36 +69,24 @@ int main(void) {
7169 fprintf (fp , "/* This file contains an array secp256k1_pre_g with odd multiples of the base point G and\n" );
7270 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" );
7371 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" );
7974 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" );
8379 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" );
9381 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" );
9785 fprintf (fp , "#define WINDOW_G ECMULT_WINDOW_SIZE\n" );
9886
9987 print_two_tables (fp , ECMULT_WINDOW_SIZE );
10088
101- fprintf (fp , "#endif /* defined(EXHAUSTIVE_TEST_ORDER) */\n" );
10289 fprintf (fp , "#undef S\n" );
103- fprintf (fp , "#endif /* SECP256K1_PRECOMPUTED_ECMULT_H */\n" );
10490 fclose (fp );
10591
10692 return 0 ;
0 commit comments