forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
733c1e6 Add travis build to test the static context. (Thomas Daede) fbecc38 Add ability to use a statically generated ecmult context. (Thomas Daede)
- Loading branch information
Showing
10 changed files
with
272 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
# =========================================================================== | ||
# http://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html | ||
# =========================================================================== | ||
# | ||
# SYNOPSIS | ||
# | ||
# AX_PROG_CC_FOR_BUILD | ||
# | ||
# DESCRIPTION | ||
# | ||
# This macro searches for a C compiler that generates native executables, | ||
# that is a C compiler that surely is not a cross-compiler. This can be | ||
# useful if you have to generate source code at compile-time like for | ||
# example GCC does. | ||
# | ||
# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything | ||
# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD). | ||
# The value of these variables can be overridden by the user by specifying | ||
# a compiler with an environment variable (like you do for standard CC). | ||
# | ||
# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object | ||
# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if | ||
# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are | ||
# substituted in the Makefile. | ||
# | ||
# LICENSE | ||
# | ||
# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org> | ||
# | ||
# Copying and distribution of this file, with or without modification, are | ||
# permitted in any medium without royalty provided the copyright notice | ||
# and this notice are preserved. This file is offered as-is, without any | ||
# warranty. | ||
|
||
#serial 8 | ||
|
||
AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD]) | ||
AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl | ||
AC_REQUIRE([AC_PROG_CC])dnl | ||
AC_REQUIRE([AC_PROG_CPP])dnl | ||
AC_REQUIRE([AC_EXEEXT])dnl | ||
AC_REQUIRE([AC_CANONICAL_HOST])dnl | ||
dnl Use the standard macros, but make them use other variable names | ||
dnl | ||
pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl | ||
pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl | ||
pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl | ||
pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl | ||
pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl | ||
pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl | ||
pushdef([ac_cv_objext], ac_cv_build_objext)dnl | ||
pushdef([ac_exeext], ac_build_exeext)dnl | ||
pushdef([ac_objext], ac_build_objext)dnl | ||
pushdef([CC], CC_FOR_BUILD)dnl | ||
pushdef([CPP], CPP_FOR_BUILD)dnl | ||
pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl | ||
pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl | ||
pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl | ||
pushdef([host], build)dnl | ||
pushdef([host_alias], build_alias)dnl | ||
pushdef([host_cpu], build_cpu)dnl | ||
pushdef([host_vendor], build_vendor)dnl | ||
pushdef([host_os], build_os)dnl | ||
pushdef([ac_cv_host], ac_cv_build)dnl | ||
pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl | ||
pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl | ||
pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl | ||
pushdef([ac_cv_host_os], ac_cv_build_os)dnl | ||
pushdef([ac_cpp], ac_build_cpp)dnl | ||
pushdef([ac_compile], ac_build_compile)dnl | ||
pushdef([ac_link], ac_build_link)dnl | ||
save_cross_compiling=$cross_compiling | ||
save_ac_tool_prefix=$ac_tool_prefix | ||
cross_compiling=no | ||
ac_tool_prefix= | ||
AC_PROG_CC | ||
AC_PROG_CPP | ||
AC_EXEEXT | ||
ac_tool_prefix=$save_ac_tool_prefix | ||
cross_compiling=$save_cross_compiling | ||
dnl Restore the old definitions | ||
dnl | ||
popdef([ac_link])dnl | ||
popdef([ac_compile])dnl | ||
popdef([ac_cpp])dnl | ||
popdef([ac_cv_host_os])dnl | ||
popdef([ac_cv_host_vendor])dnl | ||
popdef([ac_cv_host_cpu])dnl | ||
popdef([ac_cv_host_alias])dnl | ||
popdef([ac_cv_host])dnl | ||
popdef([host_os])dnl | ||
popdef([host_vendor])dnl | ||
popdef([host_cpu])dnl | ||
popdef([host_alias])dnl | ||
popdef([host])dnl | ||
popdef([LDFLAGS])dnl | ||
popdef([CPPFLAGS])dnl | ||
popdef([CFLAGS])dnl | ||
popdef([CPP])dnl | ||
popdef([CC])dnl | ||
popdef([ac_objext])dnl | ||
popdef([ac_exeext])dnl | ||
popdef([ac_cv_objext])dnl | ||
popdef([ac_cv_exeext])dnl | ||
popdef([ac_cv_prog_cc_g])dnl | ||
popdef([ac_cv_prog_cc_cross])dnl | ||
popdef([ac_cv_prog_cc_works])dnl | ||
popdef([ac_cv_prog_gcc])dnl | ||
popdef([ac_cv_prog_CPP])dnl | ||
dnl Finally, set Makefile variables | ||
dnl | ||
BUILD_EXEEXT=$ac_build_exeext | ||
BUILD_OBJEXT=$ac_build_objext | ||
AC_SUBST(BUILD_EXEEXT)dnl | ||
AC_SUBST(BUILD_OBJEXT)dnl | ||
AC_SUBST([CFLAGS_FOR_BUILD])dnl | ||
AC_SUBST([CPPFLAGS_FOR_BUILD])dnl | ||
AC_SUBST([LDFLAGS_FOR_BUILD])dnl | ||
]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/********************************************************************** | ||
* Copyright (c) 2013, 2014 Pieter Wuille * | ||
* Distributed under the MIT software license, see the accompanying * | ||
* file COPYING or http://www.opensource.org/licenses/mit-license.php.* | ||
**********************************************************************/ | ||
|
||
#ifndef _SECP256K1_BASIC_CONFIG_ | ||
#define _SECP256K1_BASIC_CONFIG_ | ||
|
||
#ifdef USE_BASIC_CONFIG | ||
|
||
#undef USE_ASM_X86_64 | ||
#undef USE_ENDOMORPHISM | ||
#undef USE_FIELD_10X26 | ||
#undef USE_FIELD_5X52 | ||
#undef USE_FIELD_INV_BUILTIN | ||
#undef USE_FIELD_INV_NUM | ||
#undef USE_NUM_GMP | ||
#undef USE_NUM_NONE | ||
#undef USE_SCALAR_4X64 | ||
#undef USE_SCALAR_8X32 | ||
#undef USE_SCALAR_INV_BUILTIN | ||
#undef USE_SCALAR_INV_NUM | ||
|
||
#define USE_NUM_NONE 1 | ||
#define USE_FIELD_INV_BUILTIN 1 | ||
#define USE_SCALAR_INV_BUILTIN 1 | ||
#define USE_FIELD_10X26 1 | ||
#define USE_SCALAR_8X32 1 | ||
|
||
#endif // USE_BASIC_CONFIG | ||
#endif // _SECP256K1_BASIC_CONFIG_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/********************************************************************** | ||
* Copyright (c) 2013, 2014, 2015 Thomas Daede, Cory Fields * | ||
* Distributed under the MIT software license, see the accompanying * | ||
* file COPYING or http://www.opensource.org/licenses/mit-license.php.* | ||
**********************************************************************/ | ||
|
||
#define USE_BASIC_CONFIG 1 | ||
|
||
#include "basic-config.h" | ||
#include "include/secp256k1.h" | ||
#include "field_impl.h" | ||
#include "scalar_impl.h" | ||
#include "group_impl.h" | ||
#include "ecmult_gen_impl.h" | ||
|
||
int main(int argc, char **argv) { | ||
secp256k1_ecmult_gen_context_t ctx; | ||
int inner; | ||
int outer; | ||
FILE* fp; | ||
|
||
(void)argc; | ||
(void)argv; | ||
|
||
fp = fopen("src/ecmult_static_context.h","w"); | ||
if (fp == NULL) { | ||
fprintf(stderr, "Could not open src/ecmult_static_context.h for writing!\n"); | ||
return -1; | ||
} | ||
|
||
fprintf(fp, "#ifndef _SECP256K1_ECMULT_STATIC_CONTEXT_\n"); | ||
fprintf(fp, "#define _SECP256K1_ECMULT_STATIC_CONTEXT_\n"); | ||
fprintf(fp, "#include \"group.h\"\n"); | ||
fprintf(fp, "#define SC SECP256K1_GE_STORAGE_CONST\n"); | ||
fprintf(fp, "static const secp256k1_ge_storage_t secp256k1_ecmult_static_context[64][16] = {\n"); | ||
|
||
secp256k1_ecmult_gen_context_init(&ctx); | ||
secp256k1_ecmult_gen_context_build(&ctx); | ||
for(outer = 0; outer != 64; outer++) { | ||
fprintf(fp,"{\n"); | ||
for(inner = 0; inner != 16; inner++) { | ||
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])); | ||
if (inner != 15) { | ||
fprintf(fp,",\n"); | ||
} else { | ||
fprintf(fp,"\n"); | ||
} | ||
} | ||
if (outer != 63) { | ||
fprintf(fp,"},\n"); | ||
} else { | ||
fprintf(fp,"}\n"); | ||
} | ||
} | ||
fprintf(fp,"};\n"); | ||
secp256k1_ecmult_gen_context_clear(&ctx); | ||
|
||
fprintf(fp, "#undef SC\n"); | ||
fprintf(fp, "#endif\n"); | ||
fclose(fp); | ||
|
||
return 0; | ||
} |
Oops, something went wrong.