Skip to content

Commit 09caa2d

Browse files
authored
Merge pull request #32 from romanz/update
Update secp256k1 dependency
2 parents b433e7b + 5442e71 commit 09caa2d

Some content is hidden

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

91 files changed

+6164
-1898
lines changed

build.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ fn main() {
3939
.define("USE_ENDOMORPHISM", Some("1"))
4040
// These all are OK.
4141
.define("ENABLE_MODULE_ECDH", Some("1"))
42-
.define("ENABLE_MODULE_SCHNORR", Some("1"))
4342
.define("ENABLE_MODULE_RECOVERY", Some("1"));
4443

4544
// secp256k1

depend/secp256k1/.gitignore

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
bench_inv
22
bench_ecdh
3+
bench_ecmult
34
bench_sign
45
bench_verify
56
bench_schnorr_verify
67
bench_recover
78
bench_internal
89
tests
10+
exhaustive_tests
911
gen_context
1012
*.exe
1113
*.so
@@ -25,17 +27,24 @@ config.status
2527
libtool
2628
.deps/
2729
.dirstamp
28-
build-aux/
2930
*.lo
3031
*.o
3132
*~
3233
src/libsecp256k1-config.h
3334
src/libsecp256k1-config.h.in
3435
src/ecmult_static_context.h
35-
m4/libtool.m4
36-
m4/ltoptions.m4
37-
m4/ltsugar.m4
38-
m4/ltversion.m4
39-
m4/lt~obsolete.m4
36+
build-aux/config.guess
37+
build-aux/config.sub
38+
build-aux/depcomp
39+
build-aux/install-sh
40+
build-aux/ltmain.sh
41+
build-aux/m4/libtool.m4
42+
build-aux/m4/lt~obsolete.m4
43+
build-aux/m4/ltoptions.m4
44+
build-aux/m4/ltsugar.m4
45+
build-aux/m4/ltversion.m4
46+
build-aux/missing
47+
build-aux/compile
48+
build-aux/test-driver
4049
src/stamp-h1
4150
libsecp256k1.pc

depend/secp256k1/.travis.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@ addons:
66
compiler:
77
- clang
88
- gcc
9+
cache:
10+
directories:
11+
- src/java/guava/
912
env:
1013
global:
11-
- FIELD=auto BIGNUM=auto SCALAR=auto ENDOMORPHISM=no STATICPRECOMPUTATION=yes ASM=no BUILD=check EXTRAFLAGS= HOST= ECDH=no schnorr=no RECOVERY=no EXPERIMENTAL=no
14+
- FIELD=auto BIGNUM=auto SCALAR=auto ENDOMORPHISM=no STATICPRECOMPUTATION=yes ASM=no BUILD=check EXTRAFLAGS= HOST= ECDH=no RECOVERY=no EXPERIMENTAL=no JNI=no
15+
- GUAVA_URL=https://search.maven.org/remotecontent?filepath=com/google/guava/guava/18.0/guava-18.0.jar GUAVA_JAR=src/java/guava/guava-18.0.jar
1216
matrix:
1317
- SCALAR=32bit RECOVERY=yes
1418
- SCALAR=32bit FIELD=32bit ECDH=yes EXPERIMENTAL=yes
@@ -18,14 +22,14 @@ env:
1822
- FIELD=64bit ENDOMORPHISM=yes ECDH=yes EXPERIMENTAL=yes
1923
- FIELD=64bit ASM=x86_64
2024
- FIELD=64bit ENDOMORPHISM=yes ASM=x86_64
21-
- FIELD=32bit SCHNORR=yes EXPERIMENTAL=yes
2225
- FIELD=32bit ENDOMORPHISM=yes
2326
- BIGNUM=no
24-
- BIGNUM=no ENDOMORPHISM=yes SCHNORR=yes RECOVERY=yes EXPERIMENTAL=yes
27+
- BIGNUM=no ENDOMORPHISM=yes RECOVERY=yes EXPERIMENTAL=yes
2528
- BIGNUM=no STATICPRECOMPUTATION=no
2629
- BUILD=distcheck
2730
- EXTRAFLAGS=CPPFLAGS=-DDETERMINISTIC
2831
- EXTRAFLAGS=CFLAGS=-O0
32+
- BUILD=check-java JNI=yes ECDH=yes EXPERIMENTAL=yes
2933
matrix:
3034
fast_finish: true
3135
include:
@@ -55,9 +59,11 @@ matrix:
5559
packages:
5660
- gcc-multilib
5761
- libgmp-dev:i386
62+
before_install: mkdir -p `dirname $GUAVA_JAR`
63+
install: if [ ! -f $GUAVA_JAR ]; then wget $GUAVA_URL -O $GUAVA_JAR; fi
5864
before_script: ./autogen.sh
5965
script:
6066
- if [ -n "$HOST" ]; then export USE_HOST="--host=$HOST"; fi
6167
- if [ "x$HOST" = "xi686-linux-gnu" ]; then export CC="$CC -m32"; fi
62-
- ./configure --enable-experimental=$EXPERIMENTAL --enable-endomorphism=$ENDOMORPHISM --with-field=$FIELD --with-bignum=$BIGNUM --with-scalar=$SCALAR --enable-ecmult-static-precomputation=$STATICPRECOMPUTATION --enable-module-ecdh=$ECDH --enable-module-schnorr=$SCHNORR --enable-module-recovery=$RECOVERY $EXTRAFLAGS $USE_HOST && make -j2 $BUILD
68+
- ./configure --enable-experimental=$EXPERIMENTAL --enable-endomorphism=$ENDOMORPHISM --with-field=$FIELD --with-bignum=$BIGNUM --with-scalar=$SCALAR --enable-ecmult-static-precomputation=$STATICPRECOMPUTATION --enable-module-ecdh=$ECDH --enable-module-recovery=$RECOVERY --enable-jni=$JNI $EXTRAFLAGS $USE_HOST && make -j2 $BUILD
6369
os: linux

depend/secp256k1/Makefile.am

Lines changed: 88 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
ACLOCAL_AMFLAGS = -I build-aux/m4
22

33
lib_LTLIBRARIES = libsecp256k1.la
4+
if USE_JNI
5+
JNI_LIB = libsecp256k1_jni.la
6+
noinst_LTLIBRARIES = $(JNI_LIB)
7+
else
8+
JNI_LIB =
9+
endif
410
include_HEADERS = include/secp256k1.h
511
noinst_HEADERS =
612
noinst_HEADERS += src/scalar.h
713
noinst_HEADERS += src/scalar_4x64.h
814
noinst_HEADERS += src/scalar_8x32.h
15+
noinst_HEADERS += src/scalar_low.h
916
noinst_HEADERS += src/scalar_impl.h
1017
noinst_HEADERS += src/scalar_4x64_impl.h
1118
noinst_HEADERS += src/scalar_8x32_impl.h
19+
noinst_HEADERS += src/scalar_low_impl.h
1220
noinst_HEADERS += src/group.h
1321
noinst_HEADERS += src/group_impl.h
1422
noinst_HEADERS += src/num_gmp.h
@@ -32,7 +40,10 @@ noinst_HEADERS += src/field_5x52_impl.h
3240
noinst_HEADERS += src/field_5x52_int128_impl.h
3341
noinst_HEADERS += src/field_5x52_asm_impl.h
3442
noinst_HEADERS += src/java/org_bitcoin_NativeSecp256k1.h
43+
noinst_HEADERS += src/java/org_bitcoin_Secp256k1Context.h
3544
noinst_HEADERS += src/util.h
45+
noinst_HEADERS += src/scratch.h
46+
noinst_HEADERS += src/scratch_impl.h
3647
noinst_HEADERS += src/testrand.h
3748
noinst_HEADERS += src/testrand_impl.h
3849
noinst_HEADERS += src/hash.h
@@ -45,33 +56,97 @@ noinst_HEADERS += contrib/lax_der_parsing.c
4556
noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
4657
noinst_HEADERS += contrib/lax_der_privatekey_parsing.c
4758

59+
if USE_EXTERNAL_ASM
60+
COMMON_LIB = libsecp256k1_common.la
61+
noinst_LTLIBRARIES = $(COMMON_LIB)
62+
else
63+
COMMON_LIB =
64+
endif
65+
4866
pkgconfigdir = $(libdir)/pkgconfig
4967
pkgconfig_DATA = libsecp256k1.pc
5068

69+
if USE_EXTERNAL_ASM
70+
if USE_ASM_ARM
71+
libsecp256k1_common_la_SOURCES = src/asm/field_10x26_arm.s
72+
endif
73+
endif
74+
5175
libsecp256k1_la_SOURCES = src/secp256k1.c
52-
libsecp256k1_la_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
53-
libsecp256k1_la_LIBADD = $(SECP_LIBS)
76+
libsecp256k1_la_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
77+
libsecp256k1_la_LIBADD = $(JNI_LIB) $(SECP_LIBS) $(COMMON_LIB)
5478

79+
libsecp256k1_jni_la_SOURCES = src/java/org_bitcoin_NativeSecp256k1.c src/java/org_bitcoin_Secp256k1Context.c
80+
libsecp256k1_jni_la_CPPFLAGS = -DSECP256K1_BUILD $(JNI_INCLUDES)
5581

5682
noinst_PROGRAMS =
5783
if USE_BENCHMARK
58-
noinst_PROGRAMS += bench_verify bench_sign bench_internal
84+
noinst_PROGRAMS += bench_verify bench_sign bench_internal bench_ecmult
5985
bench_verify_SOURCES = src/bench_verify.c
60-
bench_verify_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS)
86+
bench_verify_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
6187
bench_sign_SOURCES = src/bench_sign.c
62-
bench_sign_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS)
88+
bench_sign_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
6389
bench_internal_SOURCES = src/bench_internal.c
64-
bench_internal_LDADD = $(SECP_LIBS)
65-
bench_internal_CPPFLAGS = $(SECP_INCLUDES)
90+
bench_internal_LDADD = $(SECP_LIBS) $(COMMON_LIB)
91+
bench_internal_CPPFLAGS = -DSECP256K1_BUILD $(SECP_INCLUDES)
92+
bench_ecmult_SOURCES = src/bench_ecmult.c
93+
bench_ecmult_LDADD = $(SECP_LIBS) $(COMMON_LIB)
94+
bench_ecmult_CPPFLAGS = -DSECP256K1_BUILD $(SECP_INCLUDES)
6695
endif
6796

97+
TESTS =
6898
if USE_TESTS
6999
noinst_PROGRAMS += tests
70100
tests_SOURCES = src/tests.c
71-
tests_CPPFLAGS = -DVERIFY -I$(top_srcdir)/src -I$(top_srcdir)/include $(SECP_INCLUDES) $(SECP_TEST_INCLUDES)
72-
tests_LDADD = $(SECP_LIBS) $(SECP_TEST_LIBS)
101+
tests_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/src -I$(top_srcdir)/include $(SECP_INCLUDES) $(SECP_TEST_INCLUDES)
102+
if !ENABLE_COVERAGE
103+
tests_CPPFLAGS += -DVERIFY
104+
endif
105+
tests_LDADD = $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
73106
tests_LDFLAGS = -static
74-
TESTS = tests
107+
TESTS += tests
108+
endif
109+
110+
if USE_EXHAUSTIVE_TESTS
111+
noinst_PROGRAMS += exhaustive_tests
112+
exhaustive_tests_SOURCES = src/tests_exhaustive.c
113+
exhaustive_tests_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/src $(SECP_INCLUDES)
114+
if !ENABLE_COVERAGE
115+
exhaustive_tests_CPPFLAGS += -DVERIFY
116+
endif
117+
exhaustive_tests_LDADD = $(SECP_LIBS)
118+
exhaustive_tests_LDFLAGS = -static
119+
TESTS += exhaustive_tests
120+
endif
121+
122+
JAVAROOT=src/java
123+
JAVAORG=org/bitcoin
124+
JAVA_GUAVA=$(srcdir)/$(JAVAROOT)/guava/guava-18.0.jar
125+
CLASSPATH_ENV=CLASSPATH=$(JAVA_GUAVA)
126+
JAVA_FILES= \
127+
$(JAVAROOT)/$(JAVAORG)/NativeSecp256k1.java \
128+
$(JAVAROOT)/$(JAVAORG)/NativeSecp256k1Test.java \
129+
$(JAVAROOT)/$(JAVAORG)/NativeSecp256k1Util.java \
130+
$(JAVAROOT)/$(JAVAORG)/Secp256k1Context.java
131+
132+
if USE_JNI
133+
134+
$(JAVA_GUAVA):
135+
@echo Guava is missing. Fetch it via: \
136+
wget https://search.maven.org/remotecontent?filepath=com/google/guava/guava/18.0/guava-18.0.jar -O $(@)
137+
@false
138+
139+
.stamp-java: $(JAVA_FILES)
140+
@echo Compiling $^
141+
$(AM_V_at)$(CLASSPATH_ENV) javac $^
142+
@touch $@
143+
144+
if USE_TESTS
145+
146+
check-java: libsecp256k1.la $(JAVA_GUAVA) .stamp-java
147+
$(AM_V_at)java -Djava.library.path="./:./src:./src/.libs:.libs/" -cp "$(JAVA_GUAVA):$(JAVAROOT)" $(JAVAORG)/NativeSecp256k1Test
148+
149+
endif
75150
endif
76151

77152
if USE_ECMULT_STATIC_PRECOMPUTATION
@@ -89,23 +164,20 @@ $(gen_context_BIN): $(gen_context_OBJECTS)
89164
$(libsecp256k1_la_OBJECTS): src/ecmult_static_context.h
90165
$(tests_OBJECTS): src/ecmult_static_context.h
91166
$(bench_internal_OBJECTS): src/ecmult_static_context.h
167+
$(bench_ecmult_OBJECTS): src/ecmult_static_context.h
92168

93169
src/ecmult_static_context.h: $(gen_context_BIN)
94170
./$(gen_context_BIN)
95171

96-
CLEANFILES = $(gen_context_BIN) src/ecmult_static_context.h
172+
CLEANFILES = $(gen_context_BIN) src/ecmult_static_context.h $(JAVAROOT)/$(JAVAORG)/*.class .stamp-java
97173
endif
98174

99-
EXTRA_DIST = autogen.sh src/gen_context.c src/basic-config.h
175+
EXTRA_DIST = autogen.sh src/gen_context.c src/basic-config.h $(JAVA_FILES)
100176

101177
if ENABLE_MODULE_ECDH
102178
include src/modules/ecdh/Makefile.am.include
103179
endif
104180

105-
if ENABLE_MODULE_SCHNORR
106-
include src/modules/schnorr/Makefile.am.include
107-
endif
108-
109181
if ENABLE_MODULE_RECOVERY
110182
include src/modules/recovery/Makefile.am.include
111183
endif

depend/secp256k1/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
libsecp256k1
22
============
33

4-
[![Build Status](https://travis-ci.org/bitcoin/secp256k1.svg?branch=master)](https://travis-ci.org/bitcoin/secp256k1)
4+
[![Build Status](https://travis-ci.org/bitcoin-core/secp256k1.svg?branch=master)](https://travis-ci.org/bitcoin-core/secp256k1)
55

66
Optimized C library for EC operations on curve secp256k1.
77

0 commit comments

Comments
 (0)