Skip to content

Commit 51ca155

Browse files
authored
Merge pull request #229 from rust-bitcoin/2020-secp-sys-0.2.0
update secp-sys to 0.2.0
2 parents 5c451f7 + 1605bde commit 51ca155

File tree

95 files changed

+7533
-6247
lines changed

Some content is hidden

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

95 files changed

+7533
-6247
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ external-symbols = ["secp256k1-sys/external-symbols"]
3939
fuzztarget = ["secp256k1-sys/fuzztarget"]
4040

4141
[dependencies]
42-
secp256k1-sys = { version = "0.1.1", default-features = false, path = "./secp256k1-sys" }
42+
secp256k1-sys = { version = "0.2.0", default-features = false, path = "./secp256k1-sys" }
4343

4444
[dev-dependencies]
4545
rand = "0.6"

secp256k1-sys/CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
# 0.2.0 - 2020-08-26
3+
4+
* Update upstream to `670cdd3f8be25f81472b2d16dcd228b0d24a5c45`
5+
* [Add missing return](https://github.com/rust-bitcoin/rust-secp256k1/pull/195) `c_int` to `NonceFn`
6+
* [Got wasm support working again](https://github.com/rust-bitcoin/rust-secp256k1/pull/208)
7+
* Removed `cc` restriction, rustc 1.22 support [now requires some downstream effort](https://github.com/rust-bitcoin/rust-secp256k1/pull/204)
8+
* [Exposed a reference to the underlying byte array](https://github.com/rust-bitcoin/rust-secp256k1/pull/219) for all byte-array-wrapping types
9+
* Allow all-zeroes `Message` [to be constructed](https://github.com/rust-bitcoin/rust-secp256k1/pull/207)
10+
* Expose `secp256k1_ec_pubkey_negate` [from upstream](https://github.com/rust-bitcoin/rust-secp256k1/pull/222)
11+

secp256k1-sys/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "secp256k1-sys"
3-
version = "0.1.2"
3+
version = "0.2.0"
44
authors = [ "Dawid Ciężarkiewicz <dpc@ucore.info>",
55
"Andrew Poelstra <apoelstra@wpsoftware.net>",
66
"Steven Roose <steven@stevenroose.org>" ]
@@ -12,7 +12,7 @@ description = "FFI for Pieter Wuille's `libsecp256k1` library."
1212
keywords = [ "secp256k1", "libsecp256k1", "ffi" ]
1313
readme = "README.md"
1414
build = "build.rs"
15-
links = "rustsecp256k1_v0_1_1"
15+
links = "rustsecp256k1_v0_2_0"
1616

1717
# Should make docs.rs show all functions, even those behind non-default features
1818
[package.metadata.docs.rs]

secp256k1-sys/build.rs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,6 @@ fn main() {
3131
return;
3232
}
3333

34-
// Check whether we can use 64-bit compilation
35-
let use_64bit_compilation = if env::var("CARGO_CFG_TARGET_POINTER_WIDTH").unwrap() == "64" {
36-
let check = cc::Build::new().file("depend/check_uint128_t.c")
37-
.cargo_metadata(false)
38-
.try_compile("check_uint128_t")
39-
.is_ok();
40-
if !check {
41-
println!("cargo:warning=Compiling in 32-bit mode on a 64-bit architecture due to lack of uint128_t support.");
42-
}
43-
check
44-
} else {
45-
false
46-
};
47-
4834
// Actual build
4935
let mut base_config = cc::Build::new();
5036
base_config.include("depend/secp256k1/")
@@ -76,15 +62,6 @@ fn main() {
7662
}
7763
}
7864

79-
if use_64bit_compilation {
80-
base_config.define("USE_FIELD_5X52", Some("1"))
81-
.define("USE_SCALAR_4X64", Some("1"))
82-
.define("HAVE___INT128", Some("1"));
83-
} else {
84-
base_config.define("USE_FIELD_10X26", Some("1"))
85-
.define("USE_SCALAR_8X32", Some("1"));
86-
}
87-
8865
if env::var("TARGET").unwrap() == "wasm32-unknown-unknown" {
8966
base_config.include("wasm-sysroot");
9067
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# This file was automatically created by ./vendor-libsecp.sh
2-
143dc6e9ee31852a60321b23eea407d2006171da
2+
670cdd3f8be25f81472b2d16dcd228b0d24a5c45

secp256k1-sys/depend/secp256k1/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ bench_internal
99
tests
1010
exhaustive_tests
1111
gen_context
12+
valgrind_ctime_test
1213
*.exe
1314
*.so
1415
*.a
Lines changed: 69 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,112 @@
11
language: c
2-
os: linux
2+
os:
3+
- linux
4+
- osx
5+
6+
dist: bionic
7+
# Valgrind currently supports upto macOS 10.13, the latest xcode of that version is 10.1
8+
osx_image: xcode10.1
39
addons:
410
apt:
5-
packages: libgmp-dev
11+
packages:
12+
- libgmp-dev
13+
- valgrind
14+
- libtool-bin
615
compiler:
716
- clang
817
- gcc
9-
cache:
10-
directories:
11-
- src/java/guava/
1218
env:
1319
global:
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
20+
- WIDEMUL=auto BIGNUM=auto ENDOMORPHISM=no STATICPRECOMPUTATION=yes ECMULTGENPRECISION=auto ASM=no BUILD=check EXTRAFLAGS= HOST= ECDH=no RECOVERY=no EXPERIMENTAL=no CTIMETEST=yes BENCH=yes ITERS=2
1621
matrix:
17-
- SCALAR=32bit RECOVERY=yes
18-
- SCALAR=32bit FIELD=32bit ECDH=yes EXPERIMENTAL=yes
19-
- SCALAR=64bit
20-
- FIELD=64bit RECOVERY=yes
21-
- FIELD=64bit ENDOMORPHISM=yes
22-
- FIELD=64bit ENDOMORPHISM=yes ECDH=yes EXPERIMENTAL=yes
23-
- FIELD=64bit ASM=x86_64
24-
- FIELD=64bit ENDOMORPHISM=yes ASM=x86_64
25-
- FIELD=32bit ENDOMORPHISM=yes
22+
- WIDEMUL=int64 RECOVERY=yes
23+
- WIDEMUL=int64 ECDH=yes EXPERIMENTAL=yes
24+
- WIDEMUL=int64 ENDOMORPHISM=yes
25+
- WIDEMUL=int128
26+
- WIDEMUL=int128 RECOVERY=yes
27+
- WIDEMUL=int128 ENDOMORPHISM=yes
28+
- WIDEMUL=int128 ENDOMORPHISM=yes ECDH=yes EXPERIMENTAL=yes
29+
- WIDEMUL=int128 ASM=x86_64
30+
- WIDEMUL=int128 ENDOMORPHISM=yes ASM=x86_64
2631
- BIGNUM=no
2732
- BIGNUM=no ENDOMORPHISM=yes RECOVERY=yes EXPERIMENTAL=yes
2833
- BIGNUM=no STATICPRECOMPUTATION=no
29-
- BUILD=distcheck
30-
- EXTRAFLAGS=CPPFLAGS=-DDETERMINISTIC
31-
- EXTRAFLAGS=CFLAGS=-O0
32-
- BUILD=check-java JNI=yes ECDH=yes EXPERIMENTAL=yes
34+
- BUILD=distcheck CTIMETEST= BENCH=
35+
- CPPFLAGS=-DDETERMINISTIC
36+
- CFLAGS=-O0 CTIMETEST=
37+
- ECMULTGENPRECISION=2
38+
- ECMULTGENPRECISION=8
39+
- VALGRIND=yes ENDOMORPHISM=yes BIGNUM=no ASM=x86_64 EXPERIMENTAL=yes ECDH=yes RECOVERY=yes EXTRAFLAGS="--disable-openssl-tests" CPPFLAGS=-DVALGRIND BUILD=
40+
- VALGRIND=yes BIGNUM=no ASM=x86_64 EXPERIMENTAL=yes ECDH=yes RECOVERY=yes EXTRAFLAGS="--disable-openssl-tests" CPPFLAGS=-DVALGRIND BUILD=
3341
matrix:
3442
fast_finish: true
3543
include:
3644
- compiler: clang
45+
os: linux
3746
env: HOST=i686-linux-gnu ENDOMORPHISM=yes
3847
addons:
3948
apt:
4049
packages:
4150
- gcc-multilib
4251
- libgmp-dev:i386
52+
- valgrind
53+
- libtool-bin
54+
- libc6-dbg:i386
4355
- compiler: clang
4456
env: HOST=i686-linux-gnu
57+
os: linux
4558
addons:
4659
apt:
4760
packages:
4861
- gcc-multilib
62+
- valgrind
63+
- libtool-bin
64+
- libc6-dbg:i386
4965
- compiler: gcc
5066
env: HOST=i686-linux-gnu ENDOMORPHISM=yes
67+
os: linux
5168
addons:
5269
apt:
5370
packages:
5471
- gcc-multilib
72+
- valgrind
73+
- libtool-bin
74+
- libc6-dbg:i386
5575
- compiler: gcc
76+
os: linux
5677
env: HOST=i686-linux-gnu
5778
addons:
5879
apt:
5980
packages:
6081
- gcc-multilib
6182
- 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
83+
- valgrind
84+
- libtool-bin
85+
- libc6-dbg:i386
86+
# S390x build (big endian system)
87+
- compiler: gcc
88+
env: HOST=s390x-unknown-linux-gnu ECDH=yes RECOVERY=yes EXPERIMENTAL=yes CTIMETEST=
89+
arch: s390x
90+
91+
# We use this to install macOS dependencies instead of the built in `homebrew` plugin,
92+
# because in xcode earlier than 11 they have a bug requiring updating the system which overall takes ~8 minutes.
93+
# https://travis-ci.community/t/macos-build-fails-because-of-homebrew-bundle-unknown-command/7296
94+
before_install:
95+
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install gmp valgrind gcc@9; fi
96+
6497
before_script: ./autogen.sh
98+
99+
# travis auto terminates jobs that go for 10 minutes without printing to stdout, but travis_wait doesn't work well with forking programs like valgrind (https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received https://github.com/bitcoin-core/secp256k1/pull/750#issuecomment-623476860)
65100
script:
66-
- if [ -n "$HOST" ]; then export USE_HOST="--host=$HOST"; fi
67-
- if [ "x$HOST" = "xi686-linux-gnu" ]; then export CC="$CC -m32"; fi
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
101+
- function keep_alive() { while true; do echo -en "\a"; sleep 60; done }
102+
- keep_alive &
103+
- ./contrib/travis.sh
104+
- kill %keep_alive
105+
106+
after_script:
107+
- cat ./tests.log
108+
- cat ./exhaustive_tests.log
109+
- cat ./valgrind_ctime_test.log
110+
- cat ./bench.log
111+
- $CC --version
112+
- valgrind --version

secp256k1-sys/depend/secp256k1/Makefile.am

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

33
lib_LTLIBRARIES = libsecp256k1.la
4-
if USE_JNI
5-
JNI_LIB = librustsecp256k1_v0_1_1_jni.la
6-
noinst_LTLIBRARIES = $(JNI_LIB)
7-
else
8-
JNI_LIB =
9-
endif
104
include_HEADERS = include/secp256k1.h
11-
include_HEADERS += include/rustsecp256k1_v0_1_1_preallocated.h
5+
include_HEADERS += include/rustsecp256k1_v0_2_0_preallocated.h
126
noinst_HEADERS =
137
noinst_HEADERS += src/scalar.h
148
noinst_HEADERS += src/scalar_4x64.h
@@ -40,8 +34,7 @@ noinst_HEADERS += src/field_5x52.h
4034
noinst_HEADERS += src/field_5x52_impl.h
4135
noinst_HEADERS += src/field_5x52_int128_impl.h
4236
noinst_HEADERS += src/field_5x52_asm_impl.h
43-
noinst_HEADERS += src/java/org_bitcoin_NativeSecp256k1.h
44-
noinst_HEADERS += src/java/org_bitcoin_Secp256k1Context.h
37+
noinst_HEADERS += src/assumptions.h
4538
noinst_HEADERS += src/util.h
4639
noinst_HEADERS += src/scratch.h
4740
noinst_HEADERS += src/scratch_impl.h
@@ -58,7 +51,7 @@ noinst_HEADERS += contrib/lax_der_privatekey_parsing.h
5851
noinst_HEADERS += contrib/lax_der_privatekey_parsing.c
5952

6053
if USE_EXTERNAL_ASM
61-
COMMON_LIB = librustsecp256k1_v0_1_1_common.la
54+
COMMON_LIB = librustsecp256k1_v0_2_0_common.la
6255
noinst_LTLIBRARIES = $(COMMON_LIB)
6356
else
6457
COMMON_LIB =
@@ -69,22 +62,25 @@ pkgconfig_DATA = libsecp256k1.pc
6962

7063
if USE_EXTERNAL_ASM
7164
if USE_ASM_ARM
72-
librustsecp256k1_v0_1_1_common_la_SOURCES = src/asm/field_10x26_arm.s
65+
librustsecp256k1_v0_2_0_common_la_SOURCES = src/asm/field_10x26_arm.s
7366
endif
7467
endif
7568

76-
librustsecp256k1_v0_1_1_la_SOURCES = src/secp256k1.c
77-
librustsecp256k1_v0_1_1_la_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
78-
librustsecp256k1_v0_1_1_la_LIBADD = $(JNI_LIB) $(SECP_LIBS) $(COMMON_LIB)
69+
librustsecp256k1_v0_2_0_la_SOURCES = src/secp256k1.c
70+
librustsecp256k1_v0_2_0_la_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
71+
librustsecp256k1_v0_2_0_la_LIBADD = $(SECP_LIBS) $(COMMON_LIB)
7972

80-
librustsecp256k1_v0_1_1_jni_la_SOURCES = src/java/org_bitcoin_NativeSecp256k1.c src/java/org_bitcoin_Secp256k1Context.c
81-
librustsecp256k1_v0_1_1_jni_la_CPPFLAGS = -DSECP256K1_BUILD $(JNI_INCLUDES)
73+
if VALGRIND_ENABLED
74+
librustsecp256k1_v0_2_0_la_CPPFLAGS += -DVALGRIND
75+
endif
8276

8377
noinst_PROGRAMS =
8478
if USE_BENCHMARK
8579
noinst_PROGRAMS += bench_verify bench_sign bench_internal bench_ecmult
8680
bench_verify_SOURCES = src/bench_verify.c
8781
bench_verify_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
82+
# SECP_TEST_INCLUDES are only used here for CRYPTO_CPPFLAGS
83+
bench_verify_CPPFLAGS = -DSECP256K1_BUILD $(SECP_TEST_INCLUDES)
8884
bench_sign_SOURCES = src/bench_sign.c
8985
bench_sign_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_TEST_LIBS) $(COMMON_LIB)
9086
bench_internal_SOURCES = src/bench_internal.c
@@ -100,6 +96,12 @@ if USE_TESTS
10096
noinst_PROGRAMS += tests
10197
tests_SOURCES = src/tests.c
10298
tests_CPPFLAGS = -DSECP256K1_BUILD -I$(top_srcdir)/src -I$(top_srcdir)/include $(SECP_INCLUDES) $(SECP_TEST_INCLUDES)
99+
if VALGRIND_ENABLED
100+
tests_CPPFLAGS += -DVALGRIND
101+
noinst_PROGRAMS += valgrind_ctime_test
102+
valgrind_ctime_test_SOURCES = src/valgrind_ctime_test.c
103+
valgrind_ctime_test_LDADD = libsecp256k1.la $(SECP_LIBS) $(SECP_LIBS) $(COMMON_LIB)
104+
endif
103105
if !ENABLE_COVERAGE
104106
tests_CPPFLAGS += -DVERIFY
105107
endif
@@ -120,59 +122,29 @@ exhaustive_tests_LDFLAGS = -static
120122
TESTS += exhaustive_tests
121123
endif
122124

123-
JAVAROOT=src/java
124-
JAVAORG=org/bitcoin
125-
JAVA_GUAVA=$(srcdir)/$(JAVAROOT)/guava/guava-18.0.jar
126-
CLASSPATH_ENV=CLASSPATH=$(JAVA_GUAVA)
127-
JAVA_FILES= \
128-
$(JAVAROOT)/$(JAVAORG)/NativeSecp256k1.java \
129-
$(JAVAROOT)/$(JAVAORG)/NativeSecp256k1Test.java \
130-
$(JAVAROOT)/$(JAVAORG)/NativeSecp256k1Util.java \
131-
$(JAVAROOT)/$(JAVAORG)/Secp256k1Context.java
132-
133-
if USE_JNI
134-
135-
$(JAVA_GUAVA):
136-
@echo Guava is missing. Fetch it via: \
137-
wget https://search.maven.org/remotecontent?filepath=com/google/guava/guava/18.0/guava-18.0.jar -O $(@)
138-
@false
139-
140-
.stamp-java: $(JAVA_FILES)
141-
@echo Compiling $^
142-
$(AM_V_at)$(CLASSPATH_ENV) javac $^
143-
@touch $@
144-
145-
if USE_TESTS
146-
147-
check-java: libsecp256k1.la $(JAVA_GUAVA) .stamp-java
148-
$(AM_V_at)java -Djava.library.path="./:./src:./src/.libs:.libs/" -cp "$(JAVA_GUAVA):$(JAVAROOT)" $(JAVAORG)/NativeSecp256k1Test
149-
150-
endif
151-
endif
152-
153125
if USE_ECMULT_STATIC_PRECOMPUTATION
154-
CPPFLAGS_FOR_BUILD +=-I$(top_srcdir)
126+
CPPFLAGS_FOR_BUILD +=-I$(top_srcdir) -I$(builddir)/src
155127

156128
gen_context_OBJECTS = gen_context.o
157129
gen_context_BIN = gen_context$(BUILD_EXEEXT)
158-
gen_%.o: src/gen_%.c
130+
gen_%.o: src/gen_%.c src/libsecp256k1-config.h
159131
$(CC_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -c $< -o $@
160132

161133
$(gen_context_BIN): $(gen_context_OBJECTS)
162134
$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $^ -o $@
163135

164-
$(librustsecp256k1_v0_1_1_la_OBJECTS): src/ecmult_static_context.h
136+
$(librustsecp256k1_v0_2_0_la_OBJECTS): src/ecmult_static_context.h
165137
$(tests_OBJECTS): src/ecmult_static_context.h
166138
$(bench_internal_OBJECTS): src/ecmult_static_context.h
167139
$(bench_ecmult_OBJECTS): src/ecmult_static_context.h
168140

169141
src/ecmult_static_context.h: $(gen_context_BIN)
170142
./$(gen_context_BIN)
171143

172-
CLEANFILES = $(gen_context_BIN) src/ecmult_static_context.h $(JAVAROOT)/$(JAVAORG)/*.class .stamp-java
144+
CLEANFILES = $(gen_context_BIN) src/ecmult_static_context.h
173145
endif
174146

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

177149
if ENABLE_MODULE_ECDH
178150
include src/modules/ecdh/Makefile.am.include

0 commit comments

Comments
 (0)