github.com/guiltylotus/go-ethereum@v1.9.7/crypto/secp256k1/libsecp256k1/src/gen_context.c (about)

     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 "field_impl.h"
    12  #include "scalar_impl.h"
    13  #include "group_impl.h"
    14  #include "ecmult_gen_impl.h"
    15  
    16  static void default_error_callback_fn(const char* str, void* data) {
    17      (void)data;
    18      fprintf(stderr, "[libsecp256k1] internal consistency check failed: %s\n", str);
    19      abort();
    20  }
    21  
    22  static const secp256k1_callback default_error_callback = {
    23      default_error_callback_fn,
    24      NULL
    25  };
    26  
    27  int main(int argc, char **argv) {
    28      secp256k1_ecmult_gen_context ctx;
    29      int inner;
    30      int outer;
    31      FILE* fp;
    32  
    33      (void)argc;
    34      (void)argv;
    35  
    36      fp = fopen("src/ecmult_static_context.h","w");
    37      if (fp == NULL) {
    38          fprintf(stderr, "Could not open src/ecmult_static_context.h for writing!\n");
    39          return -1;
    40      }
    41      
    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");
    47  
    48      secp256k1_ecmult_gen_context_init(&ctx);
    49      secp256k1_ecmult_gen_context_build(&ctx, &default_error_callback);
    50      for(outer = 0; outer != 64; outer++) {
    51          fprintf(fp,"{\n");
    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]));
    54              if (inner != 15) {
    55                  fprintf(fp,",\n");
    56              } else {
    57                  fprintf(fp,"\n");
    58              }
    59          }
    60          if (outer != 63) {
    61              fprintf(fp,"},\n");
    62          } else {
    63              fprintf(fp,"}\n");
    64          }
    65      }
    66      fprintf(fp,"};\n");
    67      secp256k1_ecmult_gen_context_clear(&ctx);
    68      
    69      fprintf(fp, "#undef SC\n");
    70      fprintf(fp, "#endif\n");
    71      fclose(fp);
    72      
    73      return 0;
    74  }