]> Git Repo - secp256k1.git/blob - src/gen_context.c
82c605c5d4f77245329ff3fbcc0a35e06ae1cf2c
[secp256k1.git] / src / gen_context.c
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  **********************************************************************/
6
7 #define USE_BASIC_CONFIG 1
8
9 #include "basic-config.h"
10 #include "include/secp256k1.h"
11 #include "util.h"
12 #include "field_impl.h"
13 #include "scalar_impl.h"
14 #include "group_impl.h"
15 #include "ecmult_gen_impl.h"
16
17 static void default_error_callback_fn(const char* str, void* data) {
18     (void)data;
19     fprintf(stderr, "[libsecp256k1] internal consistency check failed: %s\n", str);
20     abort();
21 }
22
23 static const secp256k1_callback default_error_callback = {
24     default_error_callback_fn,
25     NULL
26 };
27
28 int main(int argc, char **argv) {
29     secp256k1_ecmult_gen_context ctx;
30     void *prealloc, *base;
31     int inner;
32     int outer;
33     FILE* fp;
34
35     (void)argc;
36     (void)argv;
37
38     fp = fopen("src/ecmult_static_context.h","w");
39     if (fp == NULL) {
40         fprintf(stderr, "Could not open src/ecmult_static_context.h for writing!\n");
41         return -1;
42     }
43
44     fprintf(fp, "#ifndef _SECP256K1_ECMULT_STATIC_CONTEXT_\n");
45     fprintf(fp, "#define _SECP256K1_ECMULT_STATIC_CONTEXT_\n");
46     fprintf(fp, "#include \"src/group.h\"\n");
47     fprintf(fp, "#define SC SECP256K1_GE_STORAGE_CONST\n");
48     fprintf(fp, "static const secp256k1_ge_storage secp256k1_ecmult_static_context[64][16] = {\n");
49
50     base = checked_malloc(&default_error_callback, SECP256K1_ECMULT_GEN_CONTEXT_PREALLOCATED_SIZE);
51     prealloc = base;
52     secp256k1_ecmult_gen_context_init(&ctx);
53     secp256k1_ecmult_gen_context_build(&ctx, &prealloc);
54     for(outer = 0; outer != 64; outer++) {
55         fprintf(fp,"{\n");
56         for(inner = 0; inner != 16; inner++) {
57             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]));
58             if (inner != 15) {
59                 fprintf(fp,",\n");
60             } else {
61                 fprintf(fp,"\n");
62             }
63         }
64         if (outer != 63) {
65             fprintf(fp,"},\n");
66         } else {
67             fprintf(fp,"}\n");
68         }
69     }
70     fprintf(fp,"};\n");
71     secp256k1_ecmult_gen_context_clear(&ctx);
72     free(base);
73
74     fprintf(fp, "#undef SC\n");
75     fprintf(fp, "#endif\n");
76     fclose(fp);
77
78     return 0;
79 }
This page took 0.018652 seconds and 2 git commands to generate.