Skip to content

Commit 78b5ddf

Browse files
committed
Squashed 'src/secp256k1/' changes from 44c2452fd3..19262492ef
19262492ef Add doc/ellswift.md with ElligatorSwift explanation f3b0b08a19 Add ellswift testing to CI 7d852dd6a5 Add ElligatorSwift ctime tests f3a25cd7bc Add tests for ElligatorSwift 30b99876a4 Add ElligatorSwift benchmarks d2d47485a5 Add ellswift module implementing ElligatorSwift 4116a67dea Add functions to test if X coordinate is valid a5eb1a0fe9 Add benchmark for key generation 2e5a8dffed Add x-only ecmult_const version for x=n/d e65551e389 doc: Describe Jacobi calculation in safegcd_implementation.md bb146e5096 Native jacobi symbol algorithm 62eb12379c Make secp256k1_modinv64_det_check_pow2 support abs val 3a58861f0e Make secp256k1_i128_check_pow2 support -(2^n) 01b819a8c7 Merge bitcoin-core/secp256k1#1158: Add a secp256k1_i128_to_u64 function. eacad90f69 Merge bitcoin-core/secp256k1#1171: Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void) 3f57b9f774 Merge bitcoin-core/secp256k1#1177: Some improvements to the changelog c30b889f17 Clarify that the ABI-incompatible versions are earlier 881fc33d0c Consistency in naming of modules 665ba77e79 Merge bitcoin-core/secp256k1#1178: Drop `src/libsecp256k1-config.h` 75d7b7f5ba Merge bitcoin-core/secp256k1#1154: ci: set -u in cirrus.sh to treat unset variables as an error 7a74688201 ci: add missing CFLAGS & CPPFLAGS variable to print_environment c2e0fdadeb ci: set -u in cirrus.sh to treat unset variables as an error 9c5a4d21bb Do not define unused `HAVE_VALGRIND` macro ad8647f548 Drop no longer relevant files from `.gitignore` b627ba7050 Remove dependency on `src/libsecp256k1-config.h` 9ecf8149a1 Reduce font size in changelog 2dc133a67f Add more changelog entries ac233e181a Add links to diffs to changelog cee8223ef6 Mention semantic versioning in changelog 9a8d65f07f Merge bitcoin-core/secp256k1#1174: release cleanup: bump version after 0.2.0 02ebc290f7 release cleanup: bump version after 0.2.0 b6b360efaf doc: improve message of cleanup commit 21ffe4b22a Merge bitcoin-core/secp256k1#1055: Prepare initial release e025ccdf74 release: prepare for initial release 0.2.0 6d1784a2e2 build: add missing files to EXTRA_DIST 8c949f56da Merge bitcoin-core/secp256k1#1173: Don't use compute credits for now 13bf1b6b32 changelog: make order of change types match keepachangelog.com b1f992a552 doc: improve release process 7e5b22684f Don't use compute credits for now a49e0940ad docs: Fix typo 2551cdac90 tests: Fix code formatting c635c1bfd5 Change ARG_CHECK_NO_RETURN to ARG_CHECK_VOID which returns (void) cf66f2357c refactor: Add helper function secp256k1_context_is_proper() ad39e2dc41 build: change package version to 0.1.0-dev 5c789dcd73 Merge bitcoin-core/secp256k1#1168: Replace deprecated context flags with NONE in benchmarks and tests d6dc0f4ae3 tests: Switch to NONE contexts in module tests 0c8a5caddd tests: Switch to NONE contexts in tests.c 86540e9e1f tests: add test for deprecated flags and rm them from run_context caa0ad631e group: add gej_eq_var 37ba744f5b tests: Switch to NONE contexts in exhaustive and ctime tests 8d7a9a8eda benchmarks: Switch to NONE contexts 90618e9263 doc: move CHANGELOG from doc/ to root directory e3f84777eb Merge bitcoin-core/secp256k1#1126: API cleanup with respect to contexts 4386a2306c examples: Switch to NONE contexts 7289b51d31 docs: Use doxygen style if and only if comment is user-facing e7d0185c90 docs: Get rid of "initialized for signing" terminology 06126364ad docs: Tidy and improve docs about contexts and randomization e02d6862bd selftest: Expose in public API e383fbfa66 selftest: Rename internal function to make name available for API d2c6d48de3 tests: Use new name of static context 53796d2b24 contexts: Rename static context 72fedf8a6c docs: Improve docs for static context 316ac7625a contexts: Deprecate all context flags except SECP256K1_CONTEXT_NONE 477f02c4de Merge bitcoin-core/secp256k1#1165: gitignore: Add *.sage.py files autogenerated by sage [skip ci] 092be61c5e gitignore: Add *.sage.py files autogenerated by sage 1a553ee8be docs: Change signature "validation" to "verification" ee7341fbac docs: Never require a verification context 751c4354d5 Merge bitcoin-core/secp256k1#1152: Update macOS image for CI 2286f80902 Merge bitcoin-core/secp256k1#993: Enable non-experimental modules by default d216475205 test secp256k1_i128_to_i64 4bc429019d Add a secp256k1_i128_to_u64 function. e40fd277b7 Merge bitcoin-core/secp256k1#1156: Followups to int128_struct arithmetic 99bd335599 Make int128 overflow test use secp256k1_[ui]128_mul a8494b02bf Use compute credits for macOS jobs 3afce0af7c Avoid signed overflow in MSVC AMR64 secp256k1_mul128 c0ae48c995 Update macOS image for CI 9b5f589d30 Heuristically decide whether to use int128_struct 63ff064d2f int128: Add test override for testing __(u)mulh on MSVC X64 f2b7e88768 Add int128 randomized tests 6138d73be4 Merge bitcoin-core/secp256k1#1155: Add MSan CI jobs ddf2b2910e Merge bitcoin-core/secp256k1#1000: Synthetic int128 type. 86e3b38a4a Merge bitcoin-core/secp256k1#1149: Remove usage of CHECK from non-test file 00a42b91b3 Add MSan CI job 44916ae915 Merge bitcoin-core/secp256k1#1147: ci: print env to allow reproducing the job outside of CI c2ee9175e9 Merge bitcoin-core/secp256k1#1146: ci: prevent "-v/--version: not found" irrelevant error e13fae487e Merge bitcoin-core/secp256k1#1150: ci: always cat test_env.log a340d9500a ci: add int128_struct tests dceaa1f579 int128: Tidy #includes of int128.h and int128_impl.h 2914bccbc0 Simulated int128 type. 6a965b6b98 Remove usage of CHECK from non-test file 5c9f1a5c37 ci: always cat all logs_snippets 49ae843592 ci: mostly prevent "-v/--version: not found" irrelevant error 4e54c03153 ci: print env to allow reproducing the job outside of CI a43e982bca Merge bitcoin-core/secp256k1#1144: Cleanup `.gitignore` file f5039cb66c Cleanup `.gitignore` file 798727ae1e Revert "Add test logs to gitignore" 41e8704b48 build: Enable some modules by default 694ce8fb2d Merge bitcoin-core/secp256k1#1131: readme: Misc improvements 88b00897e7 readme: Fix line break 78f5296da4 readme: Sell "no runtime dependencies" ef48f088ad readme: Add IRC channel 9f8a13dc8e Merge bitcoin-core/secp256k1#1128: configure: Remove pkgconfig macros again (reintroduced by mismerge) cabe085bb4 configure: Remove pkgconfig macros again (reintroduced by mismerge) 3efeb9da21 Merge bitcoin-core/secp256k1#1121: config: Set preprocessor defaults for ECMULT_* config values 6a873cc4a9 Merge bitcoin-core/secp256k1#1122: tests: Randomize the context with probability 15/16 instead of 1/4 17065f48ae tests: Randomize the context with probability 15/16 instead of 1/4 c27ae45144 config: Remove basic-config.h da6514a04a config: Introduce DEBUG_CONFIG macro for debug output of config 63a3565e97 Merge bitcoin-core/secp256k1#1120: ecmult_gen: Skip RNG when creating blinding if no seed is available d0cf55e13a config: Set preprocessor defaults for ECMULT_* config values 55f8bc99dc ecmult_gen: Improve comments about projective blinding 7a86955800 ecmult_gen: Simplify code (no observable change) 4cc0b1b669 ecmult_gen: Skip RNG when creating blinding if no seed is available af65d30cc8 Merge bitcoin-core/secp256k1#1116: build: Fix #include "..." paths to get rid of further -I arguments 40a3473a9d build: Fix #include "..." paths to get rid of further -I arguments 43756da819 Merge bitcoin-core/secp256k1#1115: Fix sepc256k1 -> secp256k1 typo in group.h 069aba8125 Fix sepc256k1 -> secp256k1 typo in group.h accadc94df Merge bitcoin-core/secp256k1#1114: `_scratch_destroy`: move `VERIFY_CHECK` after invalid scrach space check cd47033335 Merge bitcoin-core/secp256k1#1084: ci: Add MSVC builds 1827c9bf2b scratch_destroy: move VERIFY_CHECK after invalid scrach space check 49e2acd927 configure: Improve rationale for WERROR_CFLAGS 8dc4b03341 ci: Add a C++ job that compiles the public headers without -fpermissive 51f296a46c ci: Run persistent wineserver to speed up wine 3fb3269c22 ci: Add 32-bit MinGW64 build 9efc2e5221 ci: Add MSVC builds 2be6ba0fed configure: Convince autotools to work with MSVC's archiver lib.exe bd81f4140a schnorrsig bench: Suppress a stupid warning in MSVC 09f3d71c51 configure: Add a few CFLAGS for MSVC 3b4f3d0d46 build: Reject C++ compilers in the preprocessor 1cc0941414 configure: Don't abort if the compiler does not define __STDC__ cca8cbbac8 configure: Output message when checking for valgrind 1a6be5745f bench: Make benchmarks compile on MSVC git-subtree-dir: src/secp256k1 git-subtree-split: 19262492ef5268ff1d76ba45cd1b8b2eaf6d40cd
1 parent c41bfd1 commit 78b5ddf

Some content is hidden

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

81 files changed

+4447
-1158
lines changed

.cirrus.yml

+117-57
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
env:
22
### compiler options
33
HOST:
4+
WRAPPER_CMD:
45
# Specific warnings can be disabled with -Wno-error=foo.
56
# -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual.
67
WERROR_CFLAGS: -Werror -pedantic-errors
@@ -18,6 +19,7 @@ env:
1819
ECDH: no
1920
RECOVERY: no
2021
SCHNORRSIG: no
22+
ELLSWIFT: no
2123
### test options
2224
SECP256K1_TEST_ITERS:
2325
BENCH: yes
@@ -26,6 +28,11 @@ env:
2628
# Compile and run the tests
2729
EXAMPLES: yes
2830

31+
# https://cirrus-ci.org/pricing/#compute-credits
32+
credits_snippet: &CREDITS
33+
# Don't use any credits for now.
34+
use_compute_credits: false
35+
2936
cat_logs_snippet: &CAT_LOGS
3037
always:
3138
cat_tests_log_script:
@@ -36,7 +43,6 @@ cat_logs_snippet: &CAT_LOGS
3643
- cat valgrind_ctime_test.log || true
3744
cat_bench_log_script:
3845
- cat bench.log || true
39-
on_failure:
4046
cat_config_log_script:
4147
- cat config.log || true
4248
cat_test_env_script:
@@ -67,11 +73,12 @@ task:
6773
<< : *LINUX_CONTAINER
6874
matrix: &ENV_MATRIX
6975
- env: {WIDEMUL: int64, RECOVERY: yes}
70-
- env: {WIDEMUL: int64, ECDH: yes, SCHNORRSIG: yes}
76+
- env: {WIDEMUL: int64, ECDH: yes, SCHNORRSIG: yes, ELLSWIFT: yes}
7177
- env: {WIDEMUL: int128}
72-
- env: {WIDEMUL: int128, RECOVERY: yes, SCHNORRSIG: yes}
78+
- env: {WIDEMUL: int128_struct, ELLSWIFT: yes}
79+
- env: {WIDEMUL: int128, RECOVERY: yes, SCHNORRSIG: yes, ELLSWIFT: yes}
7380
- env: {WIDEMUL: int128, ECDH: yes, SCHNORRSIG: yes}
74-
- env: {WIDEMUL: int128, ASM: x86_64}
81+
- env: {WIDEMUL: int128, ASM: x86_64 , ELLSWIFT: yes}
7582
- env: { RECOVERY: yes, SCHNORRSIG: yes}
7683
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETEST: no, BENCH: no}
7784
- env: {CPPFLAGS: -DDETERMINISTIC}
@@ -107,65 +114,32 @@ task:
107114
<< : *CAT_LOGS
108115

109116
task:
110-
name: "x86_64: macOS Catalina"
117+
name: "arm64: macOS Ventura"
111118
macos_instance:
112-
image: catalina-base
119+
image: ghcr.io/cirruslabs/macos-ventura-base:latest
113120
env:
114121
HOMEBREW_NO_AUTO_UPDATE: 1
115122
HOMEBREW_NO_INSTALL_CLEANUP: 1
116-
# Cirrus gives us a fixed number of 12 virtual CPUs. Not that we even have that many jobs at the moment...
117-
MAKEFLAGS: -j13
123+
# Cirrus gives us a fixed number of 4 virtual CPUs. Not that we even have that many jobs at the moment...
124+
MAKEFLAGS: -j5
118125
matrix:
119126
<< : *ENV_MATRIX
127+
env:
128+
ASM: no
129+
WITH_VALGRIND: no
130+
CTIMETEST: no
120131
matrix:
121132
- env:
122-
CC: gcc-9
133+
CC: gcc
123134
- env:
124135
CC: clang
125-
# Update Command Line Tools
126-
# Uncomment this if the Command Line Tools on the CirrusCI macOS image are too old to brew valgrind.
127-
# See https://apple.stackexchange.com/a/195963 for the implementation.
128-
## update_clt_script:
129-
## - system_profiler SPSoftwareDataType
130-
## - touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
131-
## - |-
132-
## PROD=$(softwareupdate -l | grep "*.*Command Line" | tail -n 1 | awk -F"*" '{print $2}' | sed -e 's/^ *//' | sed 's/Label: //g' | tr -d '\n')
133-
## # For debugging
134-
## - softwareupdate -l && echo "PROD: $PROD"
135-
## - softwareupdate -i "$PROD" --verbose
136-
## - rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
137-
##
138-
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
141-
- brew config
142-
- brew tap LouisBrunner/valgrind
143-
# Fetch valgrind source but don't build it yet.
144-
- brew fetch --HEAD LouisBrunner/valgrind/valgrind
145-
brew_valgrind_cache:
146-
# This is $(brew --cellar valgrind) but command substition does not work here.
147-
folder: /usr/local/Cellar/valgrind
148-
# Rebuild cache if ...
149-
fingerprint_script:
150-
# ... macOS version changes:
151-
- sw_vers
152-
# ... brew changes:
153-
- brew config
154-
# ... valgrind changes:
155-
- git -C "$(brew --cache)/valgrind--git" rev-parse HEAD
156-
populate_script:
157-
# If there's no hit in the cache, build and install valgrind.
158-
- brew install --HEAD LouisBrunner/valgrind/valgrind
159-
brew_valgrind_post_script:
160-
# If we have restored valgrind from the cache, tell brew to create symlink to the PATH.
161-
# If we haven't restored from cached (and just run brew install), this is a no-op.
162-
- brew link valgrind
163136
brew_script:
164-
- brew install automake libtool gcc@9
137+
- brew install automake libtool gcc
165138
<< : *MERGE_BASE
166139
test_script:
167140
- ./ci/cirrus.sh
168141
<< : *CAT_LOGS
142+
<< : *CREDITS
169143

170144
task:
171145
name: "s390x (big-endian): Linux (Debian stable, QEMU)"
@@ -178,6 +152,7 @@ task:
178152
ECDH: yes
179153
RECOVERY: yes
180154
SCHNORRSIG: yes
155+
ELLSWIFT: yes
181156
CTIMETEST: no
182157
<< : *MERGE_BASE
183158
test_script:
@@ -197,6 +172,7 @@ task:
197172
ECDH: yes
198173
RECOVERY: yes
199174
SCHNORRSIG: yes
175+
ELLSWIFT: yes
200176
CTIMETEST: no
201177
matrix:
202178
- env: {}
@@ -217,6 +193,7 @@ task:
217193
ECDH: yes
218194
RECOVERY: yes
219195
SCHNORRSIG: yes
196+
ELLSWIFT: yes
220197
CTIMETEST: no
221198
<< : *MERGE_BASE
222199
test_script:
@@ -234,24 +211,72 @@ task:
234211
ECDH: yes
235212
RECOVERY: yes
236213
SCHNORRSIG: yes
214+
ELLSWIFT: yes
237215
CTIMETEST: no
238216
<< : *MERGE_BASE
239217
test_script:
240218
- ./ci/cirrus.sh
241219
<< : *CAT_LOGS
242220

243221
task:
244-
name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)"
245222
<< : *LINUX_CONTAINER
246223
env:
247-
WRAPPER_CMD: wine64-stable
248-
SECP256K1_TEST_ITERS: 16
249-
HOST: x86_64-w64-mingw32
224+
WRAPPER_CMD: wine
250225
WITH_VALGRIND: no
251226
ECDH: yes
252227
RECOVERY: yes
253228
SCHNORRSIG: yes
254229
CTIMETEST: no
230+
matrix:
231+
- name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)"
232+
env:
233+
HOST: x86_64-w64-mingw32
234+
- name: "i686 (mingw32-w64): Windows (Debian stable, Wine)"
235+
env:
236+
HOST: i686-w64-mingw32
237+
<< : *MERGE_BASE
238+
test_script:
239+
- ./ci/cirrus.sh
240+
<< : *CAT_LOGS
241+
242+
task:
243+
<< : *LINUX_CONTAINER
244+
env:
245+
WRAPPER_CMD: wine
246+
WERROR_CFLAGS: -WX
247+
WITH_VALGRIND: no
248+
ECDH: yes
249+
RECOVERY: yes
250+
EXPERIMENTAL: yes
251+
SCHNORRSIG: yes
252+
ELLSWIFT: yes
253+
CTIMETEST: no
254+
# Use a MinGW-w64 host to tell ./configure we're building for Windows.
255+
# This will detect some MinGW-w64 tools but then make will need only
256+
# the MSVC tools CC, AR and NM as specified below.
257+
HOST: x86_64-w64-mingw32
258+
CC: /opt/msvc/bin/x64/cl
259+
AR: /opt/msvc/bin/x64/lib
260+
NM: /opt/msvc/bin/x64/dumpbin -symbols -headers
261+
# Set non-essential options that affect the CLI messages here.
262+
# (They depend on the user's taste, so we don't want to set them automatically in configure.ac.)
263+
CFLAGS: -nologo -diagnostics:caret
264+
LDFLAGS: -XCClinker -nologo -XCClinker -diagnostics:caret
265+
matrix:
266+
- name: "x86_64 (MSVC): Windows (Debian stable, Wine)"
267+
- name: "x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct)"
268+
env:
269+
WIDEMUL: int128_struct
270+
- name: "x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct with __(u)mulh)"
271+
env:
272+
WIDEMUL: int128_struct
273+
CPPFLAGS: -DSECP256K1_MSVC_MULH_TEST_OVERRIDE
274+
- name: "i686 (MSVC): Windows (Debian stable, Wine)"
275+
env:
276+
HOST: i686-w64-mingw32
277+
CC: /opt/msvc/bin/x86/cl
278+
AR: /opt/msvc/bin/x86/lib
279+
NM: /opt/msvc/bin/x86/dumpbin -symbols -headers
255280
<< : *MERGE_BASE
256281
test_script:
257282
- ./ci/cirrus.sh
@@ -264,6 +289,7 @@ task:
264289
ECDH: yes
265290
RECOVERY: yes
266291
SCHNORRSIG: yes
292+
ELLSWIFT: yes
267293
CTIMETEST: no
268294
matrix:
269295
- name: "Valgrind (memcheck)"
@@ -301,23 +327,57 @@ task:
301327
- ./ci/cirrus.sh
302328
<< : *CAT_LOGS
303329

330+
# Memory sanitizers
304331
task:
305-
name: "C++ -fpermissive"
306332
<< : *LINUX_CONTAINER
333+
name: "MSan"
307334
env:
308-
# ./configure correctly errors out when given CC=g++.
309-
# We hack around this by passing CC=g++ only to make.
310-
CC: gcc
311-
MAKEFLAGS: -j4 CC=g++ CFLAGS=-fpermissive\ -g
335+
ECDH: yes
336+
RECOVERY: yes
337+
SCHNORRSIG: yes
338+
CTIMETEST: no
339+
CC: clang
340+
SECP256K1_TEST_ITERS: 32
341+
ASM: no
342+
container:
343+
memory: 2G
344+
matrix:
345+
- env:
346+
CFLAGS: "-fsanitize=memory -g"
347+
- env:
348+
ECMULTGENPRECISION: 2
349+
ECMULTWINDOW: 2
350+
CFLAGS: "-fsanitize=memory -g -O3"
351+
<< : *MERGE_BASE
352+
test_script:
353+
- ./ci/cirrus.sh
354+
<< : *CAT_LOGS
355+
356+
task:
357+
name: "C++ -fpermissive (entire project)"
358+
<< : *LINUX_CONTAINER
359+
env:
360+
CC: g++
361+
CFLAGS: -fpermissive -g
362+
CPPFLAGS: -DSECP256K1_CPLUSPLUS_TEST_OVERRIDE
312363
WERROR_CFLAGS:
313364
ECDH: yes
314365
RECOVERY: yes
315366
SCHNORRSIG: yes
367+
ELLSWIFT: yes
316368
<< : *MERGE_BASE
317369
test_script:
318370
- ./ci/cirrus.sh
319371
<< : *CAT_LOGS
320372

373+
task:
374+
name: "C++ (public headers)"
375+
<< : *LINUX_CONTAINER
376+
test_script:
377+
- g++ -Werror include/*.h
378+
- clang -Werror -x c++-header include/*.h
379+
- /opt/msvc/bin/x64/cl.exe -c -WX -TP include/*.h
380+
321381
task:
322382
name: "sage prover"
323383
<< : *LINUX_CONTAINER

.gitignore

+1-6
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ schnorr_example
1313
*.so
1414
*.a
1515
*.csv
16-
!.gitignore
1716
*.log
1817
*.trs
18+
*.sage.py
1919

2020
Makefile
2121
configure
@@ -34,8 +34,6 @@ libtool
3434
*.lo
3535
*.o
3636
*~
37-
*.log
38-
*.trs
3937

4038
coverage/
4139
coverage.html
@@ -44,8 +42,6 @@ coverage.*.html
4442
*.gcno
4543
*.gcov
4644

47-
src/libsecp256k1-config.h
48-
src/libsecp256k1-config.h.in
4945
build-aux/ar-lib
5046
build-aux/config.guess
5147
build-aux/config.sub
@@ -60,5 +56,4 @@ build-aux/m4/ltversion.m4
6056
build-aux/missing
6157
build-aux/compile
6258
build-aux/test-driver
63-
src/stamp-h1
6459
libsecp256k1.pc

CHANGELOG.md

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
## [0.2.0] - 2022-12-12
11+
12+
#### Added
13+
- Added usage examples for common use cases in a new `examples/` directory.
14+
- Added `secp256k1_selftest`, to be used in conjunction with `secp256k1_context_static`.
15+
- Added support for 128-bit wide multiplication on MSVC for x86_64 and arm64, giving roughly a 20% speedup on those platforms.
16+
17+
#### Changed
18+
- Enabled modules `schnorrsig`, `extrakeys` and `ecdh` by default in `./configure`.
19+
- The `secp256k1_nonce_function_rfc6979` nonce function, used by default by `secp256k1_ecdsa_sign`, now reduces the message hash modulo the group order to match the specification. This only affects improper use of ECDSA signing API.
20+
21+
#### Deprecated
22+
- Deprecated context flags `SECP256K1_CONTEXT_VERIFY` and `SECP256K1_CONTEXT_SIGN`. Use `SECP256K1_CONTEXT_NONE` instead.
23+
- Renamed `secp256k1_context_no_precomp` to `secp256k1_context_static`.
24+
- Module `schnorrsig`: renamed `secp256k1_schnorrsig_sign` to `secp256k1_schnorrsig_sign32`.
25+
26+
#### ABI Compatibility
27+
28+
Since this is the first release, we do not compare application binary interfaces.
29+
However, there are earlier unreleased versions of libsecp256k1 that are *not* ABI compatible with this version.
30+
31+
## [0.1.0] - 2013-03-05 to 2021-12-25
32+
33+
This version was in fact never released.
34+
The number was given by the build system since the introduction of autotools in Jan 2014 (ea0fe5a5bf0c04f9cc955b2966b614f5f378c6f6).
35+
Therefore, this version number does not uniquely identify a set of source files.
36+
37+
[unreleased]: https://github.com/bitcoin-core/secp256k1/compare/v0.2.0...HEAD
38+
[0.2.0]: https://github.com/bitcoin-core/secp256k1/compare/423b6d19d373f1224fd671a982584d7e7900bc93..v0.2.0
39+
[0.1.0]: https://github.com/bitcoin-core/secp256k1/commit/423b6d19d373f1224fd671a982584d7e7900bc93

0 commit comments

Comments
 (0)