Skip to content

Commit 0aa5344

Browse files
committed
Merge commit '3f32c20932341bf67532546fa19261f8cdd17753' into secp256k1-zkp-update
2 parents 6802564 + 3f32c20 commit 0aa5344

File tree

180 files changed

+24245
-6610
lines changed

Some content is hidden

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

180 files changed

+24245
-6610
lines changed

src/secp256k1/.cirrus.yml

+203-96
Large diffs are not rendered by default.

src/secp256k1/.gitignore

+12-8
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
bench
2+
bench_bppp
23
bench_ecmult
34
bench_generator
45
bench_rangeproof
56
bench_internal
7+
bench_whitelist
8+
noverify_tests
69
tests
10+
example_musig
711
exhaustive_tests
812
precompute_ecmult_gen
913
precompute_ecmult
10-
valgrind_ctime_test
14+
ctime_tests
1115
ecdh_example
1216
ecdsa_example
1317
schnorr_example
1418
*.exe
1519
*.so
1620
*.a
1721
*.csv
18-
!.gitignore
1922
*.log
2023
*.trs
24+
*.sage.py
2125

2226
Makefile
2327
configure
@@ -36,8 +40,6 @@ libtool
3640
*.lo
3741
*.o
3842
*~
39-
*.log
40-
*.trs
4143

4244
coverage/
4345
coverage.html
@@ -46,8 +48,6 @@ coverage.*.html
4648
*.gcno
4749
*.gcov
4850

49-
src/libsecp256k1-config.h
50-
src/libsecp256k1-config.h.in
5151
build-aux/ar-lib
5252
build-aux/config.guess
5353
build-aux/config.sub
@@ -62,8 +62,12 @@ build-aux/m4/ltversion.m4
6262
build-aux/missing
6363
build-aux/compile
6464
build-aux/test-driver
65-
src/stamp-h1
6665
libsecp256k1.pc
6766
contrib/gh-pr-create.sh
6867

69-
musig_example
68+
musig_example
69+
70+
### CMake
71+
/CMakeUserPresets.json
72+
# Default CMake build directory.
73+
/build

src/secp256k1/CHANGELOG.md

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
**This changelog is not the libsecp256k1-zkp's changelog.**
2+
Instead, it is the changelog of the upstream library [libsecp256k1](https://github.com/bitcoin-core/secp256k1).
3+
4+
# Changelog
5+
6+
All notable changes to this project will be documented in this file.
7+
8+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
9+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
10+
11+
## [Unreleased]
12+
13+
#### Added
14+
- New module `ellswift` implements ElligatorSwift encoding for public keys and x-only Diffie-Hellman key exchange for them.
15+
ElligatorSwift permits representing secp256k1 public keys as 64-byte arrays which cannot be distinguished from uniformly random. See:
16+
- Header file `include/secp256k1_ellswift.h` which defines the new API.
17+
- Document `doc/ellswift.md` which explains the mathematical background of the scheme.
18+
- The [paper](https://eprint.iacr.org/2022/759) on which the scheme is based.
19+
20+
#### Changed
21+
- When consuming libsecp256k1 as a static library on Windows, the user must now define the `SECP256K1_STATIC` macro before including `secp256k1.h`.
22+
23+
## [0.3.2] - 2023-05-13
24+
We strongly recommend updating to 0.3.2 if you use or plan to use GCC >=13 to compile libsecp256k1. When in doubt, check the GCC version using `gcc -v`.
25+
26+
#### Security
27+
- Module `ecdh`: Fix "constant-timeness" issue with GCC 13.1 (and potentially future versions of GCC) that could leave applications using libsecp256k1's ECDH module vulnerable to a timing side-channel attack. The fix avoids secret-dependent control flow during ECDH computations when libsecp256k1 is compiled with GCC 13.1.
28+
29+
#### Fixed
30+
- Fixed an old bug that permitted compilers to potentially output bad assembly code on x86_64. In theory, it could lead to a crash or a read of unrelated memory, but this has never been observed on any compilers so far.
31+
32+
#### Changed
33+
- Various improvements and changes to CMake builds. CMake builds remain experimental.
34+
- Made API versioning consistent with GNU Autotools builds.
35+
- Switched to `BUILD_SHARED_LIBS` variable for controlling whether to build a static or a shared library.
36+
- Added `SECP256K1_INSTALL` variable for the controlling whether to install the build artefacts.
37+
- Renamed asm build option `arm` to `arm32`. Use `--with-asm=arm32` instead of `--with-asm=arm` (GNU Autotools), and `-DSECP256K1_ASM=arm32` instead of `-DSECP256K1_ASM=arm` (CMake).
38+
39+
#### ABI Compatibility
40+
The ABI is compatible with versions 0.3.0 and 0.3.1.
41+
42+
## [0.3.1] - 2023-04-10
43+
We strongly recommend updating to 0.3.1 if you use or plan to use Clang >=14 to compile libsecp256k1, e.g., Xcode >=14 on macOS has Clang >=14. When in doubt, check the Clang version using `clang -v`.
44+
45+
#### Security
46+
- Fix "constant-timeness" issue with Clang >=14 that could leave applications using libsecp256k1 vulnerable to a timing side-channel attack. The fix avoids secret-dependent control flow and secret-dependent memory accesses in conditional moves of memory objects when libsecp256k1 is compiled with Clang >=14.
47+
48+
#### Added
49+
- Added tests against [Project Wycheproof's](https://github.com/google/wycheproof/) set of ECDSA test vectors (Bitcoin "low-S" variant), a fixed set of test cases designed to trigger various edge cases.
50+
51+
#### Changed
52+
- Increased minimum required CMake version to 3.13. CMake builds remain experimental.
53+
54+
#### ABI Compatibility
55+
The ABI is compatible with version 0.3.0.
56+
57+
## [0.3.0] - 2023-03-08
58+
59+
#### Added
60+
- Added experimental support for CMake builds. Traditional GNU Autotools builds (`./configure` and `make`) remain fully supported.
61+
- Usage examples: Added a recommended method for securely clearing sensitive data, e.g., secret keys, from memory.
62+
- 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.
63+
64+
#### Fixed
65+
- 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.
66+
67+
#### Changed
68+
- 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.)
69+
- 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.
70+
71+
#### Removed
72+
- 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).
73+
74+
#### ABI Compatibility
75+
Due to changes in the API regarding `secp256k1_context_static` described above, the ABI is *not* compatible with previous versions.
76+
77+
## [0.2.0] - 2022-12-12
78+
79+
#### Added
80+
- Added usage examples for common use cases in a new `examples/` directory.
81+
- Added `secp256k1_selftest`, to be used in conjunction with `secp256k1_context_static`.
82+
- Added support for 128-bit wide multiplication on MSVC for x86_64 and arm64, giving roughly a 20% speedup on those platforms.
83+
84+
#### Changed
85+
- Enabled modules `schnorrsig`, `extrakeys` and `ecdh` by default in `./configure`.
86+
- 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.
87+
88+
#### Deprecated
89+
- Deprecated context flags `SECP256K1_CONTEXT_VERIFY` and `SECP256K1_CONTEXT_SIGN`. Use `SECP256K1_CONTEXT_NONE` instead.
90+
- Renamed `secp256k1_context_no_precomp` to `secp256k1_context_static`.
91+
- Module `schnorrsig`: renamed `secp256k1_schnorrsig_sign` to `secp256k1_schnorrsig_sign32`.
92+
93+
#### ABI Compatibility
94+
Since this is the first release, we do not compare application binary interfaces.
95+
However, there are earlier unreleased versions of libsecp256k1 that are *not* ABI compatible with this version.
96+
97+
## [0.1.0] - 2013-03-05 to 2021-12-25
98+
99+
This version was in fact never released.
100+
The number was given by the build system since the introduction of autotools in Jan 2014 (ea0fe5a5bf0c04f9cc955b2966b614f5f378c6f6).
101+
Therefore, this version number does not uniquely identify a set of source files.
102+
103+
[unreleased]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.2...HEAD
104+
[0.3.2]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.1...v0.3.2
105+
[0.3.1]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.0...v0.3.1
106+
[0.3.0]: https://github.com/bitcoin-core/secp256k1/compare/v0.2.0...v0.3.0
107+
[0.2.0]: https://github.com/bitcoin-core/secp256k1/compare/423b6d19d373f1224fd671a982584d7e7900bc93..v0.2.0
108+
[0.1.0]: https://github.com/bitcoin-core/secp256k1/commit/423b6d19d373f1224fd671a982584d7e7900bc93

0 commit comments

Comments
 (0)