Skip to content

Commit 522190d

Browse files
committed
Squashed 'src/secp256k1/' changes from 0559fc6e41..8746600eec
8746600eec Merge bitcoin-core/secp256k1#1093: hash: Make code agnostic of endianness 37d36927df tests: Add tests for _read_be32 and _write_be32 912b7ccc44 Merge bitcoin-core/secp256k1#1094: doc: Clarify configure flags for optional modules 55512d30b7 doc: clean up module help text in configure.ac d9d94a9969 doc: mention optional modules in README 616b43dd3b util: Remove endianness detection 8d89b9e6e5 hash: Make code agnostic of endianness d0ad5814a5 Merge bitcoin-core/secp256k1#995: build: stop treating schnorrsig, extrakeys modules as experimental 1ac7e31c5b Merge bitcoin-core/secp256k1#1089: Schnorrsig API improvements 587239dbe3 Merge bitcoin-core/secp256k1#731: Change SHA256 byte counter from size_t to uint64_t f8d9174357 Add SHA256 bit counter tests 7f09d0f311 README: mention that ARM assembly is experimental b8f8b99f0f docs: Fix return value for functions that don't have invalid inputs f813bb0df3 schnorrsig: Adapt example to new API 99e6568fc6 schnorrsig: Rename schnorrsig_sign to schnorsig_sign32 and deprecate fc94a2da44 Use SECP256K1_DEPRECATED for existing deprecated API functions 3db0560606 Add SECP256K1_DEPRECATED attribute for marking API parts as deprecated 80cf4eea5f build: stop treating schnorrsig, extrakeys modules as experimental e0508ee9db Merge bitcoin-core/secp256k1#1090: configure: Remove redundant pkg-config code 21b2ebaf74 configure: Remove redundant pkg-config code 0e5cbd01b3 Merge bitcoin-core/secp256k1#1088: configure: Use modern way to set AR 0d253d52e8 configure: Use modern way to set AR 9b514ce1d2 Add test vector for very long SHA256 messages 8e3dde1137 Simplify struct initializer for SHA256 padding eb28464a8b Change SHA256 byte counter from size_t to uint64_t ac83be33d0 Merge bitcoin-core/secp256k1#1079: configure: Add hidden --enable-dev-mode to enable all the stuff e0838d663d configure: Add hidden --enable-dev-mode to enable all the stuff fabd579dfa configure: Remove redundant code that sets _enable variables 0d4226c051 configure: Use canonical variable prefix _enable consistently 64b34979ed Merge bitcoin-core/secp256k1#748: Add usage examples 7c9502cece Add a copy of the CC0 license to the examples 42e03432e6 Add usage examples to the readme 517644eab1 Optionally compile the examples in autotools, compile+run in travis 422a7cc86a Add a ecdh shared secret example b0cfbcc143 Add a Schnorr signing and verifying example fee7d4bf9e Add an ECDSA signing and verifying example 1253a27756 Merge bitcoin-core/secp256k1#1033: Add _fe_half and use in _gej_add_ge and _gej_double 3ef94aa5ba Merge bitcoin-core/secp256k1#1026: ecdh: Add test computing shared_secret=basepoint with random inputs 3531a43b5b ecdh: Make generator_basepoint test depend on global iteration count c881dd49bd ecdh: Add test computing shared_secret=basepoint with random inputs 077528317d Merge bitcoin-core/secp256k1#1074: ci: Retry brew update a few times to avoid random failures e51ad3b737 ci: Retry `brew update` a few times to avoid random failures b1cb969e8a ci: Revert "Attempt to make macOS builds more reliable" 5dcc6f8dbd Merge bitcoin-core/secp256k1#1069: build: Replace use of deprecated autoconf macro AC_PROG_CC_C89 59547943d6 Merge bitcoin-core/secp256k1#1072: ci: Attempt to make macOS builds more reliable 85b00a1c65 Merge bitcoin-core/secp256k1#1068: sage: Fix incompatibility with sage 9.4 ebb1beea78 sage: Ensure that constraints are always fastfracs d8d54859ed ci: Run sage prover on CI 77cfa98dbc sage: Normalize sign of polynomial factors in prover eae75869cf sage: Exit with non-zero status in case of failures d9396a56da ci: Attempt to make macOS builds more reliable e0db3f8a25 build: Replace use of deprecated autoconf macro AC_PROG_CC_C89 e848c3799c Update sage files for new formulae d64bb5d4f3 Add fe_half tests for worst-case inputs b54d843eac sage: Fix printing of errors 4eb8b932ff Further improve doubling formula using fe_half 557b31fac3 Doubling formula using fe_half 2cbb4b1a42 Run more iterations of run_field_misc 9cc5c257ed Add test for secp256k1_fe_half 925f78d55e Add _fe_half and use in _gej_add_ge e108d0039c sage: Fix incompatibility with sage 9.4 d8a2463246 Merge bitcoin-core/secp256k1#899: Reduce stratch space needed by ecmult_strauss_wnaf. 0a40a4861a Merge bitcoin-core/secp256k1#1049: Faster fixed-input ecmult tests 070e772211 Faster fixed-input ecmult tests c8aa516b57 Merge bitcoin-core/secp256k1#1064: Modulo-reduce msg32 inside RFC6979 nonce fn to match spec. Fixes zcash#1063 b797a500ec Create a SECP256K1_ECMULT_TABLE_VERIFY macro. a731200cc3 Replace ECMULT_TABLE_GET_GE_STORAGE macro with a function. fe34d9f341 Eliminate input_pos state field from ecmult_strauss_wnaf. 0397d00ba0 Eliminate na_1 and na_lam state fields from ecmult_strauss_wnaf. 7ba3ffcca0 Remove the unused pre_a_lam allocations. b3b57ad6ee Eliminate the pre_a_lam array from ecmult_strauss_wnaf. ae7ba0f922 Remove the unused prej allocations. e5c18892db Eliminate the prej array from ecmult_strauss_wnaf. c9da1baad1 Move secp256k1_fe_one to field.h 45f37b6506 Modulo-reduce msg32 inside RFC6979 nonce fn to match spec. Fixes zcash#1063. a1102b1219 Merge bitcoin-core/secp256k1#1029: Simpler and faster ecdh skew fixup e82144edfb Fixup skew before global Z fixup 40b624c90b Add tests for _gej_cmov 8c13a9bfe1 ECDH skews by 0 or 1 1515099433 Simpler and faster ecdh skew fixup 39a36db94a Merge bitcoin-core/secp256k1#1054: tests: Fix test whose result is implementation-defined a310e79ee5 Merge bitcoin-core/secp256k1#1052: Use xoshiro256++ instead of RFC6979 for tests 423b6d19d3 Merge bitcoin-core/secp256k1#964: Add release-process.md 9281c9f4e1 Merge bitcoin-core/secp256k1#1053: ecmult: move `_ecmult_odd_multiples_table_globalz_windowa` 77a19750b4 Use xoshiro256++ PRNG instead of RFC6979 in tests 5f2efe684e secp256k1_testrand_int(2**N) -> secp256k1_testrand_bits(N) 05e049b73c ecmult: move `_ecmult_odd_multiples_table_globalz_windowa` 3d7cbafb5f tests: Fix test whose result is implementation-defined 3ed0d02bf7 doc: add CHANGELOG template 6f42dc16c8 doc: add release_process.md 0bd3e4243c build: set library version to 0.0.0 explicitly b4b02fd8c4 build: change libsecp version from 0.1 to 0.1.0-pre 09971a3ffd Merge bitcoin-core/secp256k1#1047: ci: Various improvements 0b83b203e1 Merge bitcoin-core/secp256k1#1030: doc: Fix upper bounds + cleanup in field_5x52_impl.h comment 1287786c7a doc: Add comment to top of field_10x26_impl.h 58da5bd589 doc: Fix upper bounds + cleanup in field_5x52_impl.h comment b39d431aed Merge bitcoin-core/secp256k1#1044: Add another ecmult_multi test b4ac1a1d5f ci: Run valgrind/memcheck tasks with 2 CPUs e70acab601 ci: Use Cirrus "greedy" flag to use idle CPU time when available d07e30176e ci: Update brew on macOS 22382f0ea0 ci: Test different ecmult window sizes a69df3ad24 Merge bitcoin-core/secp256k1#816: Improve checks at top of _fe_negate methods 22d25c8e0a Add another ecmult_multi test 515e7953ca Improve checks at top of _fe_negate methods 26a022a3a0 ci: Remove STATICPRECOMPUTATION 10461d8bd3 precompute_ecmult: Always compute all tables up to default WINDOW_G be6944ade9 Merge bitcoin-core/secp256k1#1042: Follow-ups to making all tables fully static e05da9e480 Fix c++ build c45386d994 Cleanup preprocessor indentation in precompute{,d}_ecmult{,_gen} 19d96e15f9 Split off .c file from precomputed_ecmult.h 1a6691adae Split off .c file from precomputed_ecmult_gen.h bb36331412 Simplify precompute_ecmult_print_* 38cd84a0cb Compute ecmult tables at runtime for tests_exhaustive e458ec26d6 Move ecmult table computation code to separate file fc1bf9f15f Split ecmult table computation and printing 31feab053b Rename function secp256k1_ecmult_gen_{create_prec -> compute}_table 725370c3f2 Rename ecmult_gen_prec -> ecmult_gen_compute_table 075252c1b7 Rename ecmult_static_pre_g -> precomputed_ecmult 7cf47f72bc Rename ecmult_gen_static_prec_table -> precomputed_ecmult_gen f95b8106d0 Rename gen_ecmult_static_pre_g -> precompute_ecmult bae77685eb Rename gen_ecmult_gen_static_prec_table -> precompute_ecmult_gen git-subtree-dir: src/secp256k1 git-subtree-split: 8746600eec5e7fcd35dabd480839a3a4bdfee87b
1 parent 6de4698 commit 522190d

Some content is hidden

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

55 files changed

+2451
-976
lines changed

.cirrus.yml

+42-56
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ env:
44
# Specific warnings can be disabled with -Wno-error=foo.
55
# -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual.
66
WERROR_CFLAGS: -Werror -pedantic-errors
7-
MAKEFLAGS: -j2
7+
MAKEFLAGS: -j4
88
BUILD: check
99
### secp256k1 config
10-
STATICPRECOMPUTATION: yes
10+
ECMULTWINDOW: auto
1111
ECMULTGENPRECISION: auto
1212
ASM: no
1313
WIDEMUL: auto
@@ -23,6 +23,8 @@ env:
2323
BENCH: yes
2424
SECP256K1_BENCH_ITERS: 2
2525
CTIMETEST: yes
26+
# Compile and run the tests
27+
EXAMPLES: yes
2628

2729
cat_logs_snippet: &CAT_LOGS
2830
always:
@@ -50,28 +52,32 @@ merge_base_script_snippet: &MERGE_BASE
5052
- git config --global user.name "ci"
5153
- git merge FETCH_HEAD # Merge base to detect silent merge conflicts
5254

53-
task:
54-
name: "x86_64: Linux (Debian stable)"
55+
linux_container_snippet: &LINUX_CONTAINER
5556
container:
5657
dockerfile: ci/linux-debian.Dockerfile
5758
# Reduce number of CPUs to be able to do more builds in parallel.
5859
cpu: 1
60+
# Gives us more CPUs for free if they're available.
61+
greedy: true
5962
# More than enough for our scripts.
6063
memory: 1G
64+
65+
task:
66+
name: "x86_64: Linux (Debian stable)"
67+
<< : *LINUX_CONTAINER
6168
matrix: &ENV_MATRIX
6269
- env: {WIDEMUL: int64, RECOVERY: yes}
63-
- env: {WIDEMUL: int64, ECDH: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
70+
- env: {WIDEMUL: int64, ECDH: yes, SCHNORRSIG: yes}
6471
- env: {WIDEMUL: int128}
65-
- env: {WIDEMUL: int128, RECOVERY: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
66-
- env: {WIDEMUL: int128, ECDH: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
72+
- env: {WIDEMUL: int128, RECOVERY: yes, SCHNORRSIG: yes}
73+
- env: {WIDEMUL: int128, ECDH: yes, SCHNORRSIG: yes}
6774
- env: {WIDEMUL: int128, ASM: x86_64}
68-
- env: { RECOVERY: yes, EXPERIMENTAL: yes, SCHNORRSIG: yes}
69-
- env: { STATICPRECOMPUTATION: no}
75+
- env: { RECOVERY: yes, SCHNORRSIG: yes}
7076
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETEST: no, BENCH: no}
7177
- env: {CPPFLAGS: -DDETERMINISTIC}
7278
- env: {CFLAGS: -O0, CTIMETEST: no}
73-
- env: { ECMULTGENPRECISION: 2 }
74-
- env: { ECMULTGENPRECISION: 8 }
79+
- env: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 }
80+
- env: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 }
7581
matrix:
7682
- env:
7783
CC: gcc
@@ -84,15 +90,11 @@ task:
8490

8591
task:
8692
name: "i686: Linux (Debian stable)"
87-
container:
88-
dockerfile: ci/linux-debian.Dockerfile
89-
cpu: 1
90-
memory: 1G
93+
<< : *LINUX_CONTAINER
9194
env:
9295
HOST: i686-linux-gnu
9396
ECDH: yes
9497
RECOVERY: yes
95-
EXPERIMENTAL: yes
9698
SCHNORRSIG: yes
9799
matrix:
98100
- env:
@@ -134,8 +136,10 @@ task:
134136
## - rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
135137
##
136138
brew_valgrind_pre_script:
139+
# Retry a few times because this tends to fail randomly.
140+
- for i in {1..5}; do brew update && break || sleep 15; done
137141
- brew config
138-
- brew tap --shallow LouisBrunner/valgrind
142+
- brew tap LouisBrunner/valgrind
139143
# Fetch valgrind source but don't build it yet.
140144
- brew fetch --HEAD LouisBrunner/valgrind/valgrind
141145
brew_valgrind_cache:
@@ -165,18 +169,14 @@ task:
165169

166170
task:
167171
name: "s390x (big-endian): Linux (Debian stable, QEMU)"
168-
container:
169-
dockerfile: ci/linux-debian.Dockerfile
170-
cpu: 1
171-
memory: 1G
172+
<< : *LINUX_CONTAINER
172173
env:
173174
WRAPPER_CMD: qemu-s390x
174175
SECP256K1_TEST_ITERS: 16
175176
HOST: s390x-linux-gnu
176177
WITH_VALGRIND: no
177178
ECDH: yes
178179
RECOVERY: yes
179-
EXPERIMENTAL: yes
180180
SCHNORRSIG: yes
181181
CTIMETEST: no
182182
<< : *MERGE_BASE
@@ -188,42 +188,34 @@ task:
188188

189189
task:
190190
name: "ARM32: Linux (Debian stable, QEMU)"
191-
container:
192-
dockerfile: ci/linux-debian.Dockerfile
193-
cpu: 1
194-
memory: 1G
191+
<< : *LINUX_CONTAINER
195192
env:
196193
WRAPPER_CMD: qemu-arm
197194
SECP256K1_TEST_ITERS: 16
198195
HOST: arm-linux-gnueabihf
199196
WITH_VALGRIND: no
200197
ECDH: yes
201198
RECOVERY: yes
202-
EXPERIMENTAL: yes
203199
SCHNORRSIG: yes
204200
CTIMETEST: no
205201
matrix:
206202
- env: {}
207-
- env: {ASM: arm}
203+
- env: {EXPERIMENTAL: yes, ASM: arm}
208204
<< : *MERGE_BASE
209205
test_script:
210206
- ./ci/cirrus.sh
211207
<< : *CAT_LOGS
212208

213209
task:
214210
name: "ARM64: Linux (Debian stable, QEMU)"
215-
container:
216-
dockerfile: ci/linux-debian.Dockerfile
217-
cpu: 1
218-
memory: 1G
211+
<< : *LINUX_CONTAINER
219212
env:
220213
WRAPPER_CMD: qemu-aarch64
221214
SECP256K1_TEST_ITERS: 16
222215
HOST: aarch64-linux-gnu
223216
WITH_VALGRIND: no
224217
ECDH: yes
225218
RECOVERY: yes
226-
EXPERIMENTAL: yes
227219
SCHNORRSIG: yes
228220
CTIMETEST: no
229221
<< : *MERGE_BASE
@@ -233,18 +225,14 @@ task:
233225

234226
task:
235227
name: "ppc64le: Linux (Debian stable, QEMU)"
236-
container:
237-
dockerfile: ci/linux-debian.Dockerfile
238-
cpu: 1
239-
memory: 1G
228+
<< : *LINUX_CONTAINER
240229
env:
241230
WRAPPER_CMD: qemu-ppc64le
242231
SECP256K1_TEST_ITERS: 16
243232
HOST: powerpc64le-linux-gnu
244233
WITH_VALGRIND: no
245234
ECDH: yes
246235
RECOVERY: yes
247-
EXPERIMENTAL: yes
248236
SCHNORRSIG: yes
249237
CTIMETEST: no
250238
<< : *MERGE_BASE
@@ -254,18 +242,14 @@ task:
254242

255243
task:
256244
name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)"
257-
container:
258-
dockerfile: ci/linux-debian.Dockerfile
259-
cpu: 1
260-
memory: 1G
245+
<< : *LINUX_CONTAINER
261246
env:
262247
WRAPPER_CMD: wine64-stable
263248
SECP256K1_TEST_ITERS: 16
264249
HOST: x86_64-w64-mingw32
265250
WITH_VALGRIND: no
266251
ECDH: yes
267252
RECOVERY: yes
268-
EXPERIMENTAL: yes
269253
SCHNORRSIG: yes
270254
CTIMETEST: no
271255
<< : *MERGE_BASE
@@ -275,23 +259,23 @@ task:
275259

276260
# Sanitizers
277261
task:
278-
container:
279-
dockerfile: ci/linux-debian.Dockerfile
280-
cpu: 1
281-
memory: 2G
262+
<< : *LINUX_CONTAINER
282263
env:
283264
ECDH: yes
284265
RECOVERY: yes
285-
EXPERIMENTAL: yes
286266
SCHNORRSIG: yes
287267
CTIMETEST: no
288268
matrix:
289269
- name: "Valgrind (memcheck)"
270+
container:
271+
cpu: 2
290272
env:
291273
# The `--error-exitcode` is required to make the test fail if valgrind found errors, otherwise it'll return 0 (https://www.valgrind.org/docs/manual/manual-core.html)
292274
WRAPPER_CMD: "valgrind --error-exitcode=42"
293275
SECP256K1_TEST_ITERS: 2
294276
- name: "UBSan, ASan, LSan"
277+
container:
278+
memory: 2G
295279
env:
296280
CFLAGS: "-fsanitize=undefined,address -g"
297281
UBSAN_OPTIONS: "print_stacktrace=1:halt_on_error=1"
@@ -302,11 +286,10 @@ task:
302286
matrix:
303287
- env:
304288
ASM: auto
305-
STATICPRECOMPUTATION: yes
306289
- env:
307290
ASM: no
308-
STATICPRECOMPUTATION: no
309291
ECMULTGENPRECISION: 2
292+
ECMULTWINDOW: 2
310293
matrix:
311294
- env:
312295
CC: clang
@@ -320,21 +303,24 @@ task:
320303

321304
task:
322305
name: "C++ -fpermissive"
323-
container:
324-
dockerfile: ci/linux-debian.Dockerfile
325-
cpu: 1
326-
memory: 1G
306+
<< : *LINUX_CONTAINER
327307
env:
328308
# ./configure correctly errors out when given CC=g++.
329309
# We hack around this by passing CC=g++ only to make.
330310
CC: gcc
331-
MAKEFLAGS: -j2 CC=g++ CFLAGS=-fpermissive\ -g
311+
MAKEFLAGS: -j4 CC=g++ CFLAGS=-fpermissive\ -g
332312
WERROR_CFLAGS:
333-
EXPERIMENTAL: yes
334313
ECDH: yes
335314
RECOVERY: yes
336315
SCHNORRSIG: yes
337316
<< : *MERGE_BASE
338317
test_script:
339318
- ./ci/cirrus.sh
340319
<< : *CAT_LOGS
320+
321+
task:
322+
name: "sage prover"
323+
<< : *LINUX_CONTAINER
324+
test_script:
325+
- cd sage
326+
- sage prove_group_implementations.sage

.gitattributes

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
src/ecmult_static_pre_g.h linguist-generated
2-
src/ecmult_gen_static_prec_table.h linguist-generated
1+
src/precomputed_ecmult.c linguist-generated
2+
src/precomputed_ecmult_gen.c linguist-generated

.gitignore

+8-2
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,19 @@ bench_ecmult
33
bench_internal
44
tests
55
exhaustive_tests
6-
gen_ecmult_gen_static_prec_table
7-
gen_ecmult_static_pre_g
6+
precompute_ecmult_gen
7+
precompute_ecmult
88
valgrind_ctime_test
9+
ecdh_example
10+
ecdsa_example
11+
schnorr_example
912
*.exe
1013
*.so
1114
*.a
1215
*.csv
1316
!.gitignore
17+
*.log
18+
*.trs
1419

1520
Makefile
1621
configure
@@ -41,6 +46,7 @@ coverage.*.html
4146

4247
src/libsecp256k1-config.h
4348
src/libsecp256k1-config.h.in
49+
build-aux/ar-lib
4450
build-aux/config.guess
4551
build-aux/config.sub
4652
build-aux/depcomp

0 commit comments

Comments
 (0)