forked from bitcoin-core/secp256k1
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
74 changed files
with
3,282 additions
and
1,688 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,9 @@ | ||
env: | ||
### cirrus config | ||
CIRRUS_CLONE_DEPTH: 1 | ||
### compiler options | ||
HOST: | ||
WRAPPER_CMD: | ||
# Specific warnings can be disabled with -Wno-error=foo. | ||
# -pedantic-errors is not equivalent to -Werror=pedantic and thus not implied by -Werror according to the GCC manual. | ||
WERROR_CFLAGS: -Werror -pedantic-errors | ||
|
@@ -22,7 +25,7 @@ env: | |
SECP256K1_TEST_ITERS: | ||
BENCH: yes | ||
SECP256K1_BENCH_ITERS: 2 | ||
CTIMETEST: yes | ||
CTIMETESTS: yes | ||
# Compile and run the tests | ||
EXAMPLES: yes | ||
|
||
|
@@ -35,10 +38,12 @@ cat_logs_snippet: &CAT_LOGS | |
always: | ||
cat_tests_log_script: | ||
- cat tests.log || true | ||
cat_noverify_tests_log_script: | ||
- cat noverify_tests.log || true | ||
cat_exhaustive_tests_log_script: | ||
- cat exhaustive_tests.log || true | ||
cat_valgrind_ctime_test_log_script: | ||
- cat valgrind_ctime_test.log || true | ||
cat_ctime_tests_log_script: | ||
- cat ctime_tests.log || true | ||
cat_bench_log_script: | ||
- cat bench.log || true | ||
cat_config_log_script: | ||
|
@@ -51,10 +56,8 @@ cat_logs_snippet: &CAT_LOGS | |
merge_base_script_snippet: &MERGE_BASE | ||
merge_base_script: | ||
- if [ "$CIRRUS_PR" = "" ]; then exit 0; fi | ||
- git fetch $CIRRUS_REPO_CLONE_URL $CIRRUS_BASE_BRANCH | ||
- git config --global user.email "[email protected]" | ||
- git config --global user.name "ci" | ||
- git merge FETCH_HEAD # Merge base to detect silent merge conflicts | ||
- git fetch --depth=1 $CIRRUS_REPO_CLONE_URL "pull/${CIRRUS_PR}/merge" | ||
- git checkout FETCH_HEAD # Use merged changes to detect silent merge conflicts | ||
|
||
linux_container_snippet: &LINUX_CONTAINER | ||
container: | ||
|
@@ -78,9 +81,10 @@ task: | |
- env: {WIDEMUL: int128, ECDH: yes, SCHNORRSIG: yes} | ||
- env: {WIDEMUL: int128, ASM: x86_64} | ||
- env: { RECOVERY: yes, SCHNORRSIG: yes} | ||
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETEST: no, BENCH: no} | ||
- env: {CTIMETESTS: no, RECOVERY: yes, ECDH: yes, SCHNORRSIG: yes, CPPFLAGS: -DVERIFY} | ||
- env: {BUILD: distcheck, WITH_VALGRIND: no, CTIMETESTS: no, BENCH: no} | ||
- env: {CPPFLAGS: -DDETERMINISTIC} | ||
- env: {CFLAGS: -O0, CTIMETEST: no} | ||
- env: {CFLAGS: -O0, CTIMETESTS: no} | ||
- env: { ECMULTGENPRECISION: 2, ECMULTWINDOW: 2 } | ||
- env: { ECMULTGENPRECISION: 8, ECMULTWINDOW: 4 } | ||
matrix: | ||
|
@@ -125,7 +129,7 @@ task: | |
env: | ||
ASM: no | ||
WITH_VALGRIND: no | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
matrix: | ||
- env: | ||
CC: gcc | ||
|
@@ -150,7 +154,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
<< : *MERGE_BASE | ||
test_script: | ||
# https://sourceware.org/bugzilla/show_bug.cgi?id=27008 | ||
|
@@ -169,7 +173,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
matrix: | ||
- env: {} | ||
- env: {EXPERIMENTAL: yes, ASM: arm} | ||
|
@@ -189,7 +193,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
|
@@ -206,7 +210,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
<< : *MERGE_BASE | ||
test_script: | ||
- ./ci/cirrus.sh | ||
|
@@ -220,7 +224,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
matrix: | ||
- name: "x86_64 (mingw32-w64): Windows (Debian stable, Wine)" | ||
env: | ||
|
@@ -243,7 +247,7 @@ task: | |
RECOVERY: yes | ||
EXPERIMENTAL: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
# Use a MinGW-w64 host to tell ./configure we're building for Windows. | ||
# This will detect some MinGW-w64 tools but then make will need only | ||
# the MSVC tools CC, AR and NM as specified below. | ||
|
@@ -254,7 +258,7 @@ task: | |
# Set non-essential options that affect the CLI messages here. | ||
# (They depend on the user's taste, so we don't want to set them automatically in configure.ac.) | ||
CFLAGS: -nologo -diagnostics:caret | ||
LDFLAGS: -XCClinker -nologo -XCClinker -diagnostics:caret | ||
LDFLAGS: -Xlinker -Xlinker -Xlinker -nologo | ||
matrix: | ||
- name: "x86_64 (MSVC): Windows (Debian stable, Wine)" | ||
- name: "x86_64 (MSVC): Windows (Debian stable, Wine, int128_struct)" | ||
|
@@ -282,7 +286,7 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: no | ||
matrix: | ||
- name: "Valgrind (memcheck)" | ||
container: | ||
|
@@ -327,10 +331,11 @@ task: | |
ECDH: yes | ||
RECOVERY: yes | ||
SCHNORRSIG: yes | ||
CTIMETEST: no | ||
CTIMETESTS: yes | ||
CC: clang | ||
SECP256K1_TEST_ITERS: 32 | ||
ASM: no | ||
WITH_VALGRIND: no | ||
container: | ||
memory: 2G | ||
matrix: | ||
|
@@ -375,3 +380,30 @@ task: | |
test_script: | ||
- cd sage | ||
- sage prove_group_implementations.sage | ||
|
||
task: | ||
name: "x86_64: Windows (VS 2022)" | ||
windows_container: | ||
image: cirrusci/windowsservercore:visualstudio2022 | ||
cpu: 4 | ||
memory: 3840MB | ||
env: | ||
PATH: '%CIRRUS_WORKING_DIR%\build\src\RelWithDebInfo;%PATH%' | ||
x64_NATIVE_TOOLS: '"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"' | ||
# Ignore MSBuild warning MSB8029. | ||
# See: https://learn.microsoft.com/en-us/visualstudio/msbuild/errors/msb8029?view=vs-2022 | ||
IgnoreWarnIntDirInTempDetected: 'true' | ||
merge_script: | ||
- 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; } | ||
configure_script: | ||
- '%x64_NATIVE_TOOLS%' | ||
- cmake -G "Visual Studio 17 2022" -A x64 -S . -B build -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON | ||
build_script: | ||
- '%x64_NATIVE_TOOLS%' | ||
- cmake --build build --config RelWithDebInfo -- -property:UseMultiToolTask=true;CL_MPcount=5 | ||
check_script: | ||
- '%x64_NATIVE_TOOLS%' | ||
- ctest --test-dir build -j 5 | ||
- build\src\RelWithDebInfo\bench_ecmult.exe | ||
- build\src\RelWithDebInfo\bench_internal.exe | ||
- build\src\RelWithDebInfo\bench.exe |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,61 @@ | ||
# Changelog | ||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). | ||
All notable changes to this project will be documented in this file. | ||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | ||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||
|
||
## [Unreleased] | ||
|
||
## [0.3.0] - 2023-03-08 | ||
|
||
#### Added | ||
- Added experimental support for CMake builds. Traditional GNU Autotools builds (`./configure` and `make`) remain fully supported. | ||
- Usage examples: Added a recommended method for securely clearing sensitive data, e.g., secret keys, from memory. | ||
- 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. | ||
|
||
#### Fixed | ||
- 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. | ||
|
||
#### Changed | ||
- 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.) | ||
- 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. | ||
|
||
#### Removed | ||
- 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). | ||
|
||
#### ABI Compatibility | ||
|
||
Due to changes in the API regarding `secp256k1_context_static` described above, the ABI is *not* compatible with previous versions. | ||
|
||
## [0.2.0] - 2022-12-12 | ||
|
||
### Added | ||
#### Added | ||
- Added usage examples for common use cases in a new `examples/` directory. | ||
- Added `secp256k1_selftest`, to be used in conjunction with `secp256k1_context_static`. | ||
- Added support for 128-bit wide multiplication on MSVC for x86_64 and arm64, giving roughly a 20% speedup on those platforms. | ||
|
||
### Changed | ||
- Enabled modules schnorrsig, extrakeys and ECDH by default in `./configure`. | ||
#### Changed | ||
- Enabled modules `schnorrsig`, `extrakeys` and `ecdh` by default in `./configure`. | ||
- 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. | ||
|
||
### Deprecated | ||
#### Deprecated | ||
- Deprecated context flags `SECP256K1_CONTEXT_VERIFY` and `SECP256K1_CONTEXT_SIGN`. Use `SECP256K1_CONTEXT_NONE` instead. | ||
- Renamed `secp256k1_context_no_precomp` to `secp256k1_context_static`. | ||
- Module `schnorrsig`: renamed `secp256k1_schnorrsig_sign` to `secp256k1_schnorrsig_sign32`. | ||
|
||
### ABI Compatibility | ||
#### ABI Compatibility | ||
|
||
Since this is the first release, we do not compare application binary interfaces. | ||
However, there are unreleased versions of libsecp256k1 that are *not* ABI compatible with this version. | ||
However, there are earlier unreleased versions of libsecp256k1 that are *not* ABI compatible with this version. | ||
|
||
## [0.1.0] - 2013-03-05 to 2021-12-25 | ||
|
||
This version was in fact never released. | ||
The number was given by the build system since the introduction of autotools in Jan 2014 (ea0fe5a5bf0c04f9cc955b2966b614f5f378c6f6). | ||
Therefore, this version number does not uniquely identify a set of source files. | ||
|
||
[unreleased]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.0...HEAD | ||
[0.3.0]: https://github.com/bitcoin-core/secp256k1/compare/v0.2.0...v0.3.0 | ||
[0.2.0]: https://github.com/bitcoin-core/secp256k1/compare/423b6d19d373f1224fd671a982584d7e7900bc93..v0.2.0 | ||
[0.1.0]: https://github.com/bitcoin-core/secp256k1/commit/423b6d19d373f1224fd671a982584d7e7900bc93 |
Oops, something went wrong.