1 /**********************************************************************
2 * Copyright (c) 2013, 2014, 2015 Thomas Daede, Cory Fields *
3 * Distributed under the MIT software license, see the accompanying *
4 * file COPYING or http://www.opensource.org/licenses/mit-license.php.*
5 **********************************************************************/
7 #define USE_BASIC_CONFIG 1
9 #include "basic-config.h"
10 #include "include/secp256k1.h"
11 #include "field_impl.h"
12 #include "scalar_impl.h"
13 #include "group_impl.h"
14 #include "ecmult_gen_impl.h"
16 static void default_error_callback_fn(const char* str
, void* data
) {
18 fprintf(stderr
, "[libsecp256k1] internal consistency check failed: %s\n", str
);
22 static const secp256k1_callback default_error_callback
= {
23 default_error_callback_fn
,
27 int main(int argc
, char **argv
) {
28 secp256k1_ecmult_gen_context ctx
;
36 fp
= fopen("src/ecmult_static_context.h","w");
38 fprintf(stderr
, "Could not open src/ecmult_static_context.h for writing!\n");
42 fprintf(fp
, "#ifndef _SECP256K1_ECMULT_STATIC_CONTEXT_\n");
43 fprintf(fp
, "#define _SECP256K1_ECMULT_STATIC_CONTEXT_\n");
44 fprintf(fp
, "#include \"group.h\"\n");
45 fprintf(fp
, "#define SC SECP256K1_GE_STORAGE_CONST\n");
46 fprintf(fp
, "static const secp256k1_ge_storage secp256k1_ecmult_static_context[64][16] = {\n");
48 secp256k1_ecmult_gen_context_init(&ctx
);
49 secp256k1_ecmult_gen_context_build(&ctx
, &default_error_callback
);
50 for(outer
= 0; outer
!= 64; outer
++) {
52 for(inner
= 0; inner
!= 16; inner
++) {
53 fprintf(fp
," SC(%uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu)", SECP256K1_GE_STORAGE_CONST_GET((*ctx
.prec
)[outer
][inner
]));
67 secp256k1_ecmult_gen_context_clear(&ctx
);
69 fprintf(fp
, "#undef SC\n");
70 fprintf(fp
, "#endif\n");