Skip to content

Commit 5bc7b08

Browse files
authored
Merge pull request #1 from kaspanet/subtree
Implement go bindings to secp256k1
2 parents 3301c8a + cf2c103 commit 5bc7b08

File tree

102 files changed

+25643
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+25643
-0
lines changed

depend/secp256k1/.gitignore

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
bench_inv
2+
bench_ecdh
3+
bench_ecmult
4+
bench_sign
5+
bench_verify
6+
bench_schnorr_verify
7+
bench_recover
8+
bench_internal
9+
bench_multiset
10+
tests
11+
exhaustive_tests
12+
gen_context
13+
*.exe
14+
*.so
15+
*.a
16+
!.gitignore
17+
18+
Makefile
19+
configure
20+
.libs/
21+
Makefile.in
22+
aclocal.m4
23+
autom4te.cache/
24+
config.log
25+
config.status
26+
*.tar.gz
27+
*.la
28+
libtool
29+
.deps/
30+
.dirstamp
31+
*.lo
32+
*.o
33+
*~
34+
src/libsecp256k1-config.h
35+
src/libsecp256k1-config.h.in
36+
src/ecmult_static_context.h
37+
build-aux/config.guess
38+
build-aux/config.sub
39+
build-aux/depcomp
40+
build-aux/install-sh
41+
build-aux/ltmain.sh
42+
build-aux/m4/libtool.m4
43+
build-aux/m4/lt~obsolete.m4
44+
build-aux/m4/ltoptions.m4
45+
build-aux/m4/ltsugar.m4
46+
build-aux/m4/ltversion.m4
47+
build-aux/missing
48+
build-aux/compile
49+
build-aux/test-driver
50+
src/stamp-h1
51+
libsecp256k1.pc

depend/secp256k1/.travis.yml

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
language: c
2+
os: linux
3+
addons:
4+
apt:
5+
packages: libgmp-dev
6+
compiler:
7+
- clang
8+
- gcc
9+
env:
10+
global:
11+
- FIELD=auto BIGNUM=auto SCALAR=auto ENDOMORPHISM=no STATICPRECOMPUTATION=yes ECMULTGENPRECISION=auto ASM=no BUILD=check EXTRAFLAGS= HOST= ECDH=no RECOVERY=no OLDSCHNORR=no MULTISET=no EXPERIMENTAL=no
12+
matrix:
13+
- SCALAR=32bit RECOVERY=yes
14+
- SCALAR=32bit FIELD=32bit ECDH=yes EXPERIMENTAL=yes OLDSCHNORR=yes MULTISET=yes
15+
- SCALAR=64bit
16+
- FIELD=64bit RECOVERY=yes
17+
- FIELD=64bit ENDOMORPHISM=yes
18+
- FIELD=64bit ENDOMORPHISM=yes ECDH=yes EXPERIMENTAL=yes OLDSCHNORR=yes MULTISET=yes
19+
- FIELD=64bit ASM=x86_64
20+
- FIELD=64bit ENDOMORPHISM=yes ASM=x86_64
21+
- FIELD=32bit ENDOMORPHISM=yes
22+
- BIGNUM=no
23+
- BIGNUM=no ENDOMORPHISM=yes RECOVERY=yes EXPERIMENTAL=yes OLDSCHNORR=yes MULTISET=yes
24+
- BIGNUM=no STATICPRECOMPUTATION=no
25+
- BUILD=distcheck
26+
- EXTRAFLAGS=CPPFLAGS=-DDETERMINISTIC
27+
- EXTRAFLAGS=CFLAGS=-O0
28+
- ECMULTGENPRECISION=2
29+
- ECMULTGENPRECISION=8
30+
matrix:
31+
fast_finish: true
32+
include:
33+
- compiler: clang
34+
env: HOST=i686-linux-gnu ENDOMORPHISM=yes
35+
addons:
36+
apt:
37+
packages:
38+
- gcc-multilib
39+
- libgmp-dev:i386
40+
- compiler: clang
41+
env: HOST=i686-linux-gnu
42+
addons:
43+
apt:
44+
packages:
45+
- gcc-multilib
46+
- compiler: gcc
47+
env: HOST=i686-linux-gnu ENDOMORPHISM=yes
48+
addons:
49+
apt:
50+
packages:
51+
- gcc-multilib
52+
- compiler: gcc
53+
env: HOST=i686-linux-gnu
54+
addons:
55+
apt:
56+
packages:
57+
- gcc-multilib
58+
- libgmp-dev:i386
59+
- compiler: gcc
60+
env:
61+
- BIGNUM=no ENDOMORPHISM=yes ASM=x86_64 EXPERIMENTAL=yes ECDH=yes RECOVERY=yes OLDSCHNORR=yes MULTISET=yes
62+
- VALGRIND=yes EXTRAFLAGS="--disable-openssl-tests CPPFLAGS=-DVALGRIND" BUILD=
63+
addons:
64+
apt:
65+
packages:
66+
- valgrind
67+
- compiler: gcc
68+
env: # The same as above but without endomorphism.
69+
- BIGNUM=no ENDOMORPHISM=no ASM=x86_64 EXPERIMENTAL=yes ECDH=yes RECOVERY=yes OLDSCHNORR=yes MULTISET=yes
70+
- VALGRIND=yes EXTRAFLAGS="--disable-openssl-tests CPPFLAGS=-DVALGRIND" BUILD=
71+
addons:
72+
apt:
73+
packages:
74+
- valgrind
75+
76+
before_script: ./autogen.sh
77+
78+
script:
79+
- if [ -n "$HOST" ]; then export USE_HOST="--host=$HOST"; fi
80+
- if [ "x$HOST" = "xi686-linux-gnu" ]; then export CC="$CC -m32"; fi
81+
- ./configure --enable-experimental=$EXPERIMENTAL --enable-endomorphism=$ENDOMORPHISM --with-field=$FIELD --with-bignum=$BIGNUM --with-asm=$ASM --with-scalar=$SCALAR --enable-ecmult-static-precomputation=$STATICPRECOMPUTATION --with-ecmult-gen-precision=$ECMULTGENPRECISION --enable-module-ecdh=$ECDH --enable-module-oldschnorr=$OLDSCHNORR --enable-module-multiset=$MULTISET --enable-module-recovery=$RECOVERY $EXTRAFLAGS $USE_HOST
82+
- if [ -n "$BUILD" ]; then make -j2 $BUILD; fi
83+
- # travis_wait extends the 10 minutes without output allowed (https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received)
84+
- # the `--error-exitcode` is required to make the test fail if valgrind found errors, otherwise it'll return 0 (http://valgrind.org/docs/manual/manual-core.html)
85+
- if [ -n "$VALGRIND" ]; then
86+
make -j2 &&
87+
travis_wait 30 valgrind --error-exitcode=42 ./tests 16 &&
88+
travis_wait 30 valgrind --error-exitcode=42 ./exhaustive_tests;
89+
fi
90+
91+
after_script:
92+
- cat ./tests.log
93+
- cat ./exhaustive_tests.log

depend/secp256k1/COPYING

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Copyright (c) 2013 Pieter Wuille
2+
3+
Permission is hereby granted, free of charge, to any person obtaining a copy
4+
of this software and associated documentation files (the "Software"), to deal
5+
in the Software without restriction, including without limitation the rights
6+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
copies of the Software, and to permit persons to whom the Software is
8+
furnished to do so, subject to the following conditions:
9+
10+
The above copyright notice and this permission notice shall be included in
11+
all copies or substantial portions of the Software.
12+
13+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19+
THE SOFTWARE.

depend/secp256k1/Makefile.am

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
ACLOCAL_AMFLAGS = -I build-aux/m4
2+
3+
lib_LTLIBRARIES = libsecp256k1.la
4+
include_HEADERS = include/secp256k1.h
5+
include_HEADERS += include/secp256k1_preallocated.h
6+
noinst_HEADERS =
7+
noinst_HEADERS += src/scalar.h
8+
noinst_HEADERS += src/scalar_4x64.h
9+
noinst_HEADERS += src/scalar_8x32.h
10+
noinst_HEADERS += src/scalar_low.h
11+
noinst_HEADERS += src/scalar_impl.h
12+
noinst_HEADERS += src/scalar_4x64_impl.h
13+
noinst_HEADERS += src/scalar_8x32_impl.h
14+
noinst_HEADERS += src/scalar_low_impl.h
15+
noinst_HEADERS += src/group.h
16+
noinst_HEADERS += src/group_impl.h
17+
noinst_HEADERS += src/num_gmp.h
18+
noinst_HEADERS += src/num_gmp_impl.h
19+
noinst_HEADERS += src/ecdsa.h
20+
noinst_HEADERS += src/ecdsa_impl.h
21+
noinst_HEADERS += src/eckey.h
22+
noinst_HEADERS += src/eckey_impl.h
23+
noinst_HEADERS += src/ecmult.h
24+
noinst_HEADERS += src/ecmult_impl.h
25+
noinst_HEADERS += src/ecmult_const.h
26+
noinst_HEADERS += src/ecmult_const_impl.h
27+
noinst_HEADERS += src/ecmult_gen.h
28+
noinst_HEADERS += src/ecmult_gen_impl.h
29+
noinst_HEADERS += src/num.h
30+
noinst_HEADERS += src/num_impl.h
31+
noinst_HEADERS += src/field_10x26.h
32+
noinst_HEADERS += src/field_10x26_impl.h
33+
noinst_HEADERS += src/field_5x52.h
34+
noinst_HEADERS += src/field_5x52_impl.h
35+
noinst_HEADERS += src/field_5x52_int128_impl.h
36+
noinst_HEADERS += src/field_5x52_asm_impl.h
37+
noinst_HEADERS += src/util.h
38+
noinst_HEADERS += src/scratch.h
39+
noinst_HEADERS += src/scratch_impl.h
40+
noinst_HEADERS += src/testrand.h
41+
noinst_HEADERS += src/testrand_impl.h
42+
noinst_HEADERS += src/hash.h
43+
noinst_HEADERS += src/hash_impl.h
44+
noinst_HEADERS += src/field.h
45+
noinst_HEADERS += src/field_impl.h
46+
noinst_HEADERS += src/bench.h
47+
noinst_HEADERS += contrib/lax_der_parsing.h
48+
noinst_HEADERS += contrib/lax_der_parsing.c
49+
noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
50+
noinst_HEADERS += contrib/lax_der_privatekey_parsing.c
51+
52+
if USE_EXTERNAL_ASM
53+
COMMON_LIB = libsecp256k1_common.la
54+
noinst_LTLIBRARIES = $(COMMON_LIB)
55+
else
56+
COMMON_LIB =
57+
endif
58+
59+
pkgconfigdir = $(libdir)/pkgconfig
60+
pkgconfig_DATA = libsecp256k1.pc
61+
62+
if USE_EXTERNAL_ASM
63+
if USE_ASM_ARM
64+
libsecp256k1_common_la_SOURCES = src/asm/field_10x26_arm.s
65+
endif
66+
endif
67+
68+
libsecp256k1_la_SOURCES = src/secp256k1.c
69+
libsecp256k1_la_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
70+
libsecp256k1_la_LIBADD = $(SECP_LIBS) $(COMMON_LIB)
71+
72+
noinst_PROGRAMS =
73+
if USE_BENCHMARK
74+
noinst_PROGRAMS += bench_verify bench_sign bench_internal bench_ecmult
75+
bench_verify_SOURCES = src/bench_verify.c
76+
bench_verify_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
77+
bench_sign_SOURCES = src/bench_sign.c
78+
bench_sign_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
79+
bench_internal_SOURCES = src/bench_internal.c
80+
bench_internal_LDADD = $(SECP_LIBS) $(COMMON_LIB)
81+
bench_internal_CPPFLAGS = -DSECP256K1_BUILD $(SECP_INCLUDES)
82+
bench_ecmult_SOURCES = src/bench_ecmult.c
83+
bench_ecmult_LDADD = $(SECP_LIBS) $(COMMON_LIB)
84+
bench_ecmult_CPPFLAGS = -DSECP256K1_BUILD $(SECP_INCLUDES)
85+
endif
86+
87+
TESTS =
88+
if USE_TESTS
89+
noinst_PROGRAMS += tests
90+
tests_SOURCES = src/tests.c
91+
tests_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/src -I$(top_srcdir)/include $(SECP_INCLUDES) $(SECP_TEST_INCLUDES)
92+
if !ENABLE_COVERAGE
93+
tests_CPPFLAGS += -DVERIFY
94+
endif
95+
tests_LDADD = $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
96+
tests_LDFLAGS = -static
97+
TESTS += tests
98+
endif
99+
100+
if USE_EXHAUSTIVE_TESTS
101+
noinst_PROGRAMS += exhaustive_tests
102+
exhaustive_tests_SOURCES = src/tests_exhaustive.c
103+
exhaustive_tests_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/src $(SECP_INCLUDES)
104+
if !ENABLE_COVERAGE
105+
exhaustive_tests_CPPFLAGS += -DVERIFY
106+
endif
107+
exhaustive_tests_LDADD = $(SECP_LIBS) $(COMMON_LIB)
108+
exhaustive_tests_LDFLAGS = -static
109+
TESTS += exhaustive_tests
110+
endif
111+
112+
if USE_ECMULT_STATIC_PRECOMPUTATION
113+
CPPFLAGS_FOR_BUILD +=-I$(top_srcdir) -I$(builddir)/src
114+
115+
gen_context_OBJECTS = gen_context.o
116+
gen_context_BIN = gen_context$(BUILD_EXEEXT)
117+
gen_%.o: src/gen_%.c src/libsecp256k1-config.h
118+
$(CC_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -c $< -o $@
119+
120+
$(gen_context_BIN): $(gen_context_OBJECTS)
121+
$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $^ -o $@
122+
123+
$(libsecp256k1_la_OBJECTS): src/ecmult_static_context.h
124+
$(tests_OBJECTS): src/ecmult_static_context.h
125+
$(bench_internal_OBJECTS): src/ecmult_static_context.h
126+
$(bench_ecmult_OBJECTS): src/ecmult_static_context.h
127+
128+
src/ecmult_static_context.h: $(gen_context_BIN)
129+
./$(gen_context_BIN)
130+
131+
CLEANFILES = $(gen_context_BIN) src/ecmult_static_context.h
132+
endif
133+
134+
EXTRA_DIST = autogen.sh src/gen_context.c src/basic-config.h
135+
136+
if ENABLE_MODULE_ECDH
137+
include src/modules/ecdh/Makefile.am.include
138+
endif
139+
140+
if ENABLE_MODULE_MULTISET
141+
include src/modules/multiset/Makefile.am.include
142+
endif
143+
144+
if ENABLE_MODULE_OLDSCHNORR
145+
include src/modules/oldschnorr/Makefile.am.include
146+
endif
147+
148+
if ENABLE_MODULE_RECOVERY
149+
include src/modules/recovery/Makefile.am.include
150+
endif

0 commit comments

Comments
 (0)