Skip to content

Commit b350ac5

Browse files
committed
Squashed 'src/secp256k1/' changes from 21ffe4b22a..bdf39000b9
bdf39000b9 Merge bitcoin-core/secp256k1#1223: release: prepare for 0.3.0 b40adf2360 release: prepare for 0.3.0 90b513aada Merge bitcoin-core/secp256k1#1229: cmake: Rename project to "libsecp256k1" 8be82d4362 cmake: Rename project to "libsecp256k1" ef4f8bd025 Merge bitcoin-core/secp256k1#1227: readme: Use correct build type in CMake/Windows build instructions 756b61d451 readme: Use correct build type in CMake/Windows build instructions 3295aa149b Merge bitcoin-core/secp256k1#1225: changelog: Add entry for CMake 92098d84cf changelog: Add entry for CMake df323b5c14 Merge bitcoin-core/secp256k1#1113: build: Add CMake-based build system e1eb33724c ci: Add "x86_64: Windows (VS 2022)" task 10602b0030 cmake: Export config files 5468d70964 build: Add CMake-based build system 6048e6c03e Merge bitcoin-core/secp256k1#1222: Remove redundant checks. eb8749fcd0 Merge bitcoin-core/secp256k1#1221: Update Changelog 5d8f53e312 Remove redudent checks. 9d1b458d5f Merge bitcoin-core/secp256k1#1217: Add secp256k1_fe_add_int function d232112fa7 Update Changelog 8962fc95bb Merge bitcoin-core/secp256k1#1218: Update overflow check 2ef1c9b387 Update overflow check 5757318782 Merge bitcoin-core/secp256k1#1212: Prevent dead-store elimination when clearing secrets in examples b081f7e4cb Add secp256k1_fe_add_int function 5660c13755 prevent optimization in algorithms 09b1d466db Merge bitcoin-core/secp256k1#979: Native jacobi symbol algorithm ce3cfc78a6 doc: Describe Jacobi calculation in safegcd_implementation.md 6be01036c8 Add secp256k1_fe_is_square_var function 1de2a01c2b Native jacobi symbol algorithm 04c6c1b181 Make secp256k1_modinv64_det_check_pow2 support abs val 5fffb2c7af Make secp256k1_i128_check_pow2 support -(2^n) cbd2555934 Merge bitcoin-core/secp256k1#1209: build: Add SECP256K1_API_VAR to fix importing variables from DLLs 1b21aa5175 Merge bitcoin-core/secp256k1#1078: group: Save a normalize_to_zero in gej_add_ge e4330341bd ci: Shutdown wineserver whenever CI script exits 9a5a611a21 build: Suppress stupid MSVC linker warning 739c53b19a examples: Extend sig examples by call that uses static context 914276e4d2 build: Add SECP256K1_API_VAR to fix importing variables from DLLs 1cca7c1744 Merge bitcoin-core/secp256k1#1206: build: Add -Wreserved-identifier supported by clang 8c7e0fc1de build: Add -Wreserved-identifier supported by clang 8ebe5c5205 Merge bitcoin-core/secp256k1#1201: ci: Do not set git's `user.{email,name}` config options 5596ec5c2c Merge bitcoin-core/secp256k1#1203: Do not link `bench` and `ctime_tests` to `COMMON_LIB` ef39721ccc Do not link `bench` and `ctime_tests` to `COMMON_LIB` 9b60e3148d ci: Do not set git's `user.{email,name}` config options e1817a6f54 Merge bitcoin-core/secp256k1#1199: ci: Minor improvements inspired by Bitcoin Core 1bff200588 Merge bitcoin-core/secp256k1#1200: Drop no longer used Autoheader macros 9b7d18669d Drop no longer used Autoheader macros c2415866c7 ci: Don't fetch git history 0ecf318851 ci: Use remote pull/merge ref instead of local git merge 2b77240b3b Merge bitcoin-core/secp256k1#1172: benchmarks: fix bench_scalar_split eb6bebaee3 scalar: restrict split_lambda args, improve doc and VERIFY_CHECKs 7f49aa7f2d ci: add test job with -DVERIFY 620ba3d74b benchmarks: fix bench_scalar_split 5fbff5d348 Merge bitcoin-core/secp256k1#1170: contexts: Forbid destroying, cloning and randomizing the static context 233822d849 Merge bitcoin-core/secp256k1#1195: ctime_tests: improve output when CHECKMEM_RUNNING is not defined ad7433b140 Merge bitcoin-core/secp256k1#1196: Drop no longer used variables from the build system e39d954f11 tests: Add CHECK_ILLEGAL(_VOID) macros and use in static ctx tests 2cd4e3c0a9 Drop no longer used `SECP_{LIBS,INCLUDE}` variables 613626f94c Drop no longer used `SECP_TEST_{LIBS,INCLUDE}` variables 61841fc9ee contexts: Forbid randomizing secp256k1_context_static 4b6df5e33e contexts: Forbid cloning/destroying secp256k1_context_static b1579cf5fb Merge bitcoin-core/secp256k1#1194: Ensure safety of ctz_debruijn implementation. 8f51229e03 ctime_tests: improve output when CHECKMEM_RUNNING is not defined d6ff738d5b Ensure safety of ctz_debruijn implementation. a01a7d86dc Merge bitcoin-core/secp256k1#1192: Switch to exhaustive groups with small B coefficient a7a7bfaf3d Merge bitcoin-core/secp256k1#1190: Make all non-API functions (except main) static f29a327092 Merge bitcoin-core/secp256k1#1169: Add support for msan instead of valgrind (for memcheck and ctime test) ff8edf89e2 Merge bitcoin-core/secp256k1#1193: Add `noverify_tests` to `.gitignore` ce60785b26 Introduce SECP256K1_B macro for curve b coefficient 4934aa7995 Switch to exhaustive groups with small B coefficient d4a6b58df7 Add `noverify_tests` to `.gitignore` 88e80722d2 Merge bitcoin-core/secp256k1#1160: Makefile: add `-I$(top_srcdir)/{include,src}` to `CPPFLAGS` for precomputed 0f088ec112 Rename CTIMETEST -> CTIMETESTS 74b026f05d Add runtime checking for DECLASSIFY flag 5e2e6fcfc0 Run ctime test in Linux MSan CI job 18974061a3 Make ctime tests building configurable 5048be17e9 Rename valgrind_ctime_test -> ctime_tests 6eed6c18de Update error messages to suggest msan as well 8e11f89a68 Add support for msan integration to checkmem.h 8dc64079eb Add compile-time error to valgrind_ctime_test 0db05a770e Abstract interactions with valgrind behind new checkmem.h 4f1a54e41d Move valgrind CPPFLAGS into SECP_CONFIG_DEFINES cc3b8a4f40 Merge bitcoin-core/secp256k1#1187: refactor: Rename global variables in tests 9a93f48f50 refactor: Rename STTC to STATIC_CTX in tests 3385a2648d refactor: Rename global variables to uppercase in tests e03ef86559 Make all non-API functions (except main) static cbe41ac138 Merge bitcoin-core/secp256k1#1188: tests: Add noverify_tests which is like tests but without VERIFY 203760023c tests: Add noverify_tests which is like tests but without VERIFY e862c4af0c Makefile: add -I$(top_srcdir)/src to CPPFLAGS for precomputed 0eb3000417 Merge bitcoin-core/secp256k1#1186: tests: Tidy context tests 39e8f0e3d7 refactor: Separate run_context_tests into static vs proper contexts a4a09379b1 tests: Clean up and improve run_context_tests() further fc90bb5695 refactor: Tidy up main() f32a36f620 tests: Don't use global context for context tests ce4f936c4f tests: Tidy run_context_tests() by extracting functions 18e0db30cb tests: Don't recreate global context in scratch space test b19806122e tests: Use global copy of secp256k1_context_static instead of clone 2a39ac162e Merge bitcoin-core/secp256k1#1185: Drop `SECP_CONFIG_DEFINES` from examples 2f9ca284e2 Drop `SECP_CONFIG_DEFINES` from examples 31ed5386e8 Merge bitcoin-core/secp256k1#1183: Bugfix: pass SECP_CONFIG_DEFINES to bench compilation c0a555b2ae Bugfix: pass SECP_CONFIG_DEFINES to bench compilation 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 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() d216475205 test secp256k1_i128_to_i64 4bc429019d Add a secp256k1_i128_to_u64 function. e089eecc1e group: Further simply gej_add_ge ac71020ebe group: Save a normalize_to_zero in gej_add_ge git-subtree-dir: src/secp256k1 git-subtree-split: bdf39000b9c6a0818e7149ccb500873d079e6e85
1 parent 0df7b45 commit b350ac5

Some content is hidden

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

72 files changed

+3239
-1685
lines changed

.cirrus.yml

Lines changed: 51 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
env:
2+
### cirrus config
3+
CIRRUS_CLONE_DEPTH: 1
24
### compiler options
35
HOST:
6+
WRAPPER_CMD:
47
# Specific warnings can be disabled with -Wno-error=foo.
58
# -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual.
69
WERROR_CFLAGS: -Werror -pedantic-errors
@@ -22,7 +25,7 @@ env:
2225
SECP256K1_TEST_ITERS:
2326
BENCH: yes
2427
SECP256K1_BENCH_ITERS: 2
25-
CTIMETEST: yes
28+
CTIMETESTS: yes
2629
# Compile and run the tests
2730
EXAMPLES: yes
2831

@@ -35,10 +38,12 @@ cat_logs_snippet: &CAT_LOGS
3538
always:
3639
cat_tests_log_script:
3740
- cat tests.log || true
41+
cat_noverify_tests_log_script:
42+
- cat noverify_tests.log || true
3843
cat_exhaustive_tests_log_script:
3944
- cat exhaustive_tests.log || true
40-
cat_valgrind_ctime_test_log_script:
41-
- cat valgrind_ctime_test.log || true
45+
cat_ctime_tests_log_script:
46+
- cat ctime_tests.log || true
4247
cat_bench_log_script:
4348
- cat bench.log || true
4449
cat_config_log_script:
@@ -51,10 +56,8 @@ cat_logs_snippet: &CAT_LOGS
5156
merge_base_script_snippet: &MERGE_BASE
5257
merge_base_script:
5358
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi
54-
- git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH
55-
- git config --global user.email "ci@ci.ci"
56-
- git config --global user.name "ci"
57-
- git merge FETCH_HEAD # Merge base to detect silent merge conflicts
59+
- git fetch --depth=1 $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge"
60+
- git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts
5861

5962
linux_container_snippet: &LINUX_CONTAINER
6063
container:
@@ -78,9 +81,10 @@ task:
7881
- env: {WIDEMUL: int128, ECDH: yes, SCHNORRSIG: yes}
7982
- env: {WIDEMUL: int128, ASM: x86_64}
8083
- env: { RECOVERY: yes, SCHNORRSIG: yes}
81-
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETEST: no, BENCH: no}
84+
- env: {CTIMETESTS: no, RECOVERY: yes, ECDH: yes, SCHNORRSIG: yes, CPPFLAGS: -DVERIFY}
85+
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETESTS: no, BENCH: no}
8286
- env: {CPPFLAGS: -DDETERMINISTIC}
83-
- env: {CFLAGS: -O0, CTIMETEST: no}
87+
- env: {CFLAGS: -O0, CTIMETESTS: no}
8488
- env: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 }
8589
- env: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 }
8690
matrix:
@@ -125,7 +129,7 @@ task:
125129
env:
126130
ASM: no
127131
WITH_VALGRIND: no
128-
CTIMETEST: no
132+
CTIMETESTS: no
129133
matrix:
130134
- env:
131135
CC: gcc
@@ -150,7 +154,7 @@ task:
150154
ECDH: yes
151155
RECOVERY: yes
152156
SCHNORRSIG: yes
153-
CTIMETEST: no
157+
CTIMETESTS: no
154158
<< : *MERGE_BASE
155159
test_script:
156160
# https://sourceware.org/bugzilla/show_bug.cgi?id=27008
@@ -169,7 +173,7 @@ task:
169173
ECDH: yes
170174
RECOVERY: yes
171175
SCHNORRSIG: yes
172-
CTIMETEST: no
176+
CTIMETESTS: no
173177
matrix:
174178
- env: {}
175179
- env: {EXPERIMENTAL: yes, ASM: arm}
@@ -189,7 +193,7 @@ task:
189193
ECDH: yes
190194
RECOVERY: yes
191195
SCHNORRSIG: yes
192-
CTIMETEST: no
196+
CTIMETESTS: no
193197
<< : *MERGE_BASE
194198
test_script:
195199
- ./ci/cirrus.sh
@@ -206,7 +210,7 @@ task:
206210
ECDH: yes
207211
RECOVERY: yes
208212
SCHNORRSIG: yes
209-
CTIMETEST: no
213+
CTIMETESTS: no
210214
<< : *MERGE_BASE
211215
test_script:
212216
- ./ci/cirrus.sh
@@ -220,7 +224,7 @@ task:
220224
ECDH: yes
221225
RECOVERY: yes
222226
SCHNORRSIG: yes
223-
CTIMETEST: no
227+
CTIMETESTS: no
224228
matrix:
225229
- name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)"
226230
env:
@@ -243,7 +247,7 @@ task:
243247
RECOVERY: yes
244248
EXPERIMENTAL: yes
245249
SCHNORRSIG: yes
246-
CTIMETEST: no
250+
CTIMETESTS: no
247251
# Use a MinGW-w64 host to tell ./configure we're building for Windows.
248252
# This will detect some MinGW-w64 tools but then make will need only
249253
# the MSVC tools CC, AR and NM as specified below.
@@ -254,7 +258,7 @@ task:
254258
# Set non-essential options that affect the CLI messages here.
255259
# (They depend on the user's taste, so we don't want to set them automatically in configure.ac.)
256260
CFLAGS: -nologo -diagnostics:caret
257-
LDFLAGS: -XCClinker -nologo -XCClinker -diagnostics:caret
261+
LDFLAGS: -Xlinker -Xlinker -Xlinker -nologo
258262
matrix:
259263
- name: "x86_64 (MSVC): Windows (Debian stable, Wine)"
260264
- name: "x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct)"
@@ -282,7 +286,7 @@ task:
282286
ECDH: yes
283287
RECOVERY: yes
284288
SCHNORRSIG: yes
285-
CTIMETEST: no
289+
CTIMETESTS: no
286290
matrix:
287291
- name: "Valgrind (memcheck)"
288292
container:
@@ -327,10 +331,11 @@ task:
327331
ECDH: yes
328332
RECOVERY: yes
329333
SCHNORRSIG: yes
330-
CTIMETEST: no
334+
CTIMETESTS: yes
331335
CC: clang
332336
SECP256K1_TEST_ITERS: 32
333337
ASM: no
338+
WITH_VALGRIND: no
334339
container:
335340
memory: 2G
336341
matrix:
@@ -375,3 +380,30 @@ task:
375380
test_script:
376381
- cd sage
377382
- sage prove_group_implementations.sage
383+
384+
task:
385+
name: "x86_64: Windows (VS 2022)"
386+
windows_container:
387+
image: cirrusci/windowsservercore:visualstudio2022
388+
cpu: 4
389+
memory: 3840MB
390+
env:
391+
PATH: '%CIRRUS_WORKING_DIR%\build\src\RelWithDebInfo;%PATH%'
392+
x64_NATIVE_TOOLS: '"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"'
393+
# Ignore MSBuild warning MSB8029.
394+
# See: https://learn.microsoft.com/en-us/visualstudio/msbuild/errors/msb8029?view=vs-2022
395+
IgnoreWarnIntDirInTempDetected: 'true'
396+
merge_script:
397+
- PowerShell -NoLogo -Command if ($env:CIRRUS_PR -ne $null) { git fetch $env:CIRRUS_REPO_CLONE_URL pull/$env:CIRRUS_PR/merge; git reset --hard FETCH_HEAD; }
398+
configure_script:
399+
- '%x64_NATIVE_TOOLS%'
400+
- cmake -G "Visual Studio 17 2022" -A x64 -S . -B build -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON
401+
build_script:
402+
- '%x64_NATIVE_TOOLS%'
403+
- cmake --build build --config RelWithDebInfo -- -property:UseMultiToolTask=true;CL_MPcount=5
404+
check_script:
405+
- '%x64_NATIVE_TOOLS%'
406+
- ctest --test-dir build -j 5
407+
- build\src\RelWithDebInfo\bench_ecmult.exe
408+
- build\src\RelWithDebInfo\bench_internal.exe
409+
- build\src\RelWithDebInfo\bench.exe

.gitignore

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
bench
22
bench_ecmult
33
bench_internal
4+
noverify_tests
45
tests
56
exhaustive_tests
67
precompute_ecmult_gen
78
precompute_ecmult
8-
valgrind_ctime_test
9+
ctime_tests
910
ecdh_example
1011
ecdsa_example
1112
schnorr_example
@@ -42,8 +43,6 @@ coverage.*.html
4243
*.gcno
4344
*.gcov
4445

45-
src/libsecp256k1-config.h
46-
src/libsecp256k1-config.h.in
4746
build-aux/ar-lib
4847
build-aux/config.guess
4948
build-aux/config.sub
@@ -58,5 +57,7 @@ build-aux/m4/ltversion.m4
5857
build-aux/missing
5958
build-aux/compile
6059
build-aux/test-driver
61-
src/stamp-h1
6260
libsecp256k1.pc
61+
62+
# Default CMake build directory.
63+
/build

CHANGELOG.md

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,61 @@
11
# Changelog
22

3-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
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).
47

58
## [Unreleased]
69

10+
## [0.3.0] - 2023-03-08
11+
12+
#### Added
13+
- Added experimental support for CMake builds. Traditional GNU Autotools builds (`./configure` and `make`) remain fully supported.
14+
- Usage examples: Added a recommended method for securely clearing sensitive data, e.g., secret keys, from memory.
15+
- Tests: Added a new test binary `noverify_tests`. This binary runs the tests without some additional checks present in the ordinary `tests` binary and is thereby closer to production binaries. The `noverify_tests` binary is automatically run as part of the `make check` target.
16+
17+
#### Fixed
18+
- Fixed declarations of API variables for MSVC (`__declspec(dllimport)`). This fixes MSVC builds of programs which link against a libsecp256k1 DLL dynamically and use API variables (and not only API functions). Unfortunately, the MSVC linker now will emit warning `LNK4217` when trying to link against libsecp256k1 statically. Pass `/ignore:4217` to the linker to suppress this warning.
19+
20+
#### Changed
21+
- Forbade cloning or destroying `secp256k1_context_static`. Create a new context instead of cloning the static context. (If this change breaks your code, your code is probably wrong.)
22+
- Forbade randomizing (copies of) `secp256k1_context_static`. Randomizing a copy of `secp256k1_context_static` did not have any effect and did not provide defense-in-depth protection against side-channel attacks. Create a new context if you want to benefit from randomization.
23+
24+
#### Removed
25+
- Removed the configuration header `src/libsecp256k1-config.h`. We recommend passing flags to `./configure` or `cmake` to set configuration options (see `./configure --help` or `cmake -LH`). If you cannot or do not want to use one of the supported build systems, pass configuration flags such as `-DSECP256K1_ENABLE_MODULE_SCHNORRSIG` manually to the compiler (see the file `configure.ac` for supported flags).
26+
27+
#### ABI Compatibility
28+
29+
Due to changes in the API regarding `secp256k1_context_static` described above, the ABI is *not* compatible with previous versions.
30+
731
## [0.2.0] - 2022-12-12
832

9-
### Added
33+
#### Added
34+
- Added usage examples for common use cases in a new `examples/` directory.
1035
- Added `secp256k1_selftest`, to be used in conjunction with `secp256k1_context_static`.
36+
- Added support for 128-bit wide multiplication on MSVC for x86_64 and arm64, giving roughly a 20% speedup on those platforms.
1137

12-
### Changed
13-
- Enabled modules schnorrsig, extrakeys and ECDH by default in `./configure`.
38+
#### Changed
39+
- Enabled modules `schnorrsig`, `extrakeys` and `ecdh` by default in `./configure`.
40+
- 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.
1441

15-
### Deprecated
42+
#### Deprecated
1643
- Deprecated context flags `SECP256K1_CONTEXT_VERIFY` and `SECP256K1_CONTEXT_SIGN`. Use `SECP256K1_CONTEXT_NONE` instead.
1744
- Renamed `secp256k1_context_no_precomp` to `secp256k1_context_static`.
45+
- Module `schnorrsig`: renamed `secp256k1_schnorrsig_sign` to `secp256k1_schnorrsig_sign32`.
1846

19-
### ABI Compatibility
47+
#### ABI Compatibility
2048

2149
Since this is the first release, we do not compare application binary interfaces.
22-
However, there are unreleased versions of libsecp256k1 that are *not* ABI compatible with this version.
50+
However, there are earlier unreleased versions of libsecp256k1 that are *not* ABI compatible with this version.
2351

2452
## [0.1.0] - 2013-03-05 to 2021-12-25
2553

2654
This version was in fact never released.
2755
The number was given by the build system since the introduction of autotools in Jan 2014 (ea0fe5a5bf0c04f9cc955b2966b614f5f378c6f6).
2856
Therefore, this version number does not uniquely identify a set of source files.
57+
58+
[unreleased]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.0...HEAD
59+
[0.3.0]: https://github.com/bitcoin-core/secp256k1/compare/v0.2.0...v0.3.0
60+
[0.2.0]: https://github.com/bitcoin-core/secp256k1/compare/423b6d19d373f1224fd671a982584d7e7900bc93..v0.2.0
61+
[0.1.0]: https://github.com/bitcoin-core/secp256k1/commit/423b6d19d373f1224fd671a982584d7e7900bc93

0 commit comments

Comments
 (0)