You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+3-119Lines changed: 3 additions & 119 deletions
Original file line number
Diff line number
Diff line change
@@ -7,117 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
-
## [0.6.0] - 2024-11-04
11
-
12
-
#### Added
13
-
- New module `musig` implements the MuSig2 multisignature scheme according to the [BIP 327 specification](https://github.com/bitcoin/bips/blob/master/bip-0327.mediawiki). See:
14
-
- Header file `include/secp256k1_musig.h` which defines the new API.
15
-
- Document `doc/musig.md` for further notes on API usage.
16
-
- Usage example `examples/musig.c`.
17
-
- New CMake variable `SECP256K1_APPEND_LDFLAGS` for appending linker flags to the build command.
18
-
19
-
#### Changed
20
-
- API functions now use a significantly more robust method to clear secrets from the stack before returning. However, secret clearing remains a best-effort security measure and cannot guarantee complete removal.
21
-
- Any type `secp256k1_foo` can now be forward-declared using `typedef struct secp256k1_foo secp256k1_foo;` (or also `struct secp256k1_foo;` in C++).
22
-
- Organized CMake build artifacts into dedicated directories (`bin/` for executables, `lib/` for libraries) to improve build output structure and Windows shared library compatibility.
23
-
24
-
#### Removed
25
-
- Removed the `secp256k1_scratch_space` struct and its associated functions `secp256k1_scratch_space_create` and `secp256k1_scratch_space_destroy` because the scratch space was unused in the API.
26
-
27
-
#### ABI Compatibility
28
-
The symbols `secp256k1_scratch_space_create` and `secp256k1_scratch_space_destroy` were removed.
29
-
Otherwise, the library maintains backward compatibility with versions 0.3.x through 0.5.x.
30
-
31
-
## [0.5.1] - 2024-08-01
32
-
33
-
#### Added
34
-
- Added usage example for an ElligatorSwift key exchange.
35
-
36
-
#### Changed
37
-
- The default size of the precomputed table for signing was changed from 22 KiB to 86 KiB. The size can be changed with the configure option `--ecmult-gen-kb` (`SECP256K1_ECMULT_GEN_KB` for CMake).
38
-
- "auto" is no longer an accepted value for the `--with-ecmult-window` and `--with-ecmult-gen-kb` configure options (this also applies to `SECP256K1_ECMULT_WINDOW_SIZE` and `SECP256K1_ECMULT_GEN_KB` in CMake). To achieve the same configuration as previously provided by the "auto" value, omit setting the configure option explicitly.
39
-
40
-
#### Fixed
41
-
- Fixed compilation when the extrakeys module is disabled.
42
-
43
-
#### ABI Compatibility
44
-
The ABI is backward compatible with versions 0.5.0, 0.4.x and 0.3.x.
45
-
46
-
## [0.5.0] - 2024-05-06
47
-
48
-
#### Added
49
-
- New function `secp256k1_ec_pubkey_sort` that sorts public keys using lexicographic (of compressed serialization) order.
50
-
51
-
#### Changed
52
-
- The implementation of the point multiplication algorithm used for signing and public key generation was changed, resulting in improved performance for those operations.
53
-
- The related configure option `--ecmult-gen-precision` was replaced with `--ecmult-gen-kb` (`SECP256K1_ECMULT_GEN_KB` for CMake).
54
-
- This changes the supported precomputed table sizes for these operations. The new supported sizes are 2 KiB, 22 KiB, or 86 KiB (while the old supported sizes were 32 KiB, 64 KiB, or 512 KiB).
55
-
56
-
#### ABI Compatibility
57
-
The ABI is backward compatible with versions 0.4.x and 0.3.x.
58
-
59
-
## [0.4.1] - 2023-12-21
60
-
61
-
#### Changed
62
-
- The point multiplication algorithm used for ECDH operations (module `ecdh`) was replaced with a slightly faster one.
63
-
- Optional handwritten x86_64 assembly for field operations was removed because modern C compilers are able to output more efficient assembly. This change results in a significant speedup of some library functions when handwritten x86_64 assembly is enabled (`--with-asm=x86_64` in GNU Autotools, `-DSECP256K1_ASM=x86_64` in CMake), which is the default on x86_64. Benchmarks with GCC 10.5.0 show a 10% speedup for `secp256k1_ecdsa_verify` and `secp256k1_schnorrsig_verify`.
64
-
65
-
#### ABI Compatibility
66
-
The ABI is backward compatible with versions 0.4.0 and 0.3.x.
67
-
68
-
## [0.4.0] - 2023-09-04
69
-
70
-
#### Added
71
-
- New module `ellswift` implements ElligatorSwift encoding for public keys and x-only Diffie-Hellman key exchange for them.
72
-
ElligatorSwift permits representing secp256k1 public keys as 64-byte arrays which cannot be distinguished from uniformly random. See:
73
-
- Header file `include/secp256k1_ellswift.h` which defines the new API.
74
-
- Document `doc/ellswift.md` which explains the mathematical background of the scheme.
75
-
- The [paper](https://eprint.iacr.org/2022/759) on which the scheme is based.
76
-
- We now test the library with unreleased development snapshots of GCC and Clang. This gives us an early chance to catch miscompilations and constant-time issues introduced by the compiler (such as those that led to the previous two releases).
77
-
78
-
#### Fixed
79
-
- Fixed symbol visibility in Windows DLL builds, where three internal library symbols were wrongly exported.
80
-
81
-
#### Changed
82
-
- When consuming libsecp256k1 as a static library on Windows, the user must now define the `SECP256K1_STATIC` macro before including `secp256k1.h`.
83
-
84
-
#### ABI Compatibility
85
-
This release is backward compatible with the ABI of 0.3.0, 0.3.1, and 0.3.2. Symbol visibility is now believed to be handled properly on supported platforms and is now considered to be part of the ABI. Please report any improperly exported symbols as a bug.
86
-
87
-
## [0.3.2] - 2023-05-13
88
-
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`.
89
-
90
-
#### Security
91
-
- 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.
92
-
93
-
#### Fixed
94
-
- 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.
95
-
96
-
#### Changed
97
-
- Various improvements and changes to CMake builds. CMake builds remain experimental.
98
-
- Made API versioning consistent with GNU Autotools builds.
99
-
- Switched to `BUILD_SHARED_LIBS` variable for controlling whether to build a static or a shared library.
100
-
- Added `SECP256K1_INSTALL` variable for the controlling whether to install the build artefacts.
101
-
- 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).
102
-
103
-
#### ABI Compatibility
104
-
The ABI is compatible with versions 0.3.0 and 0.3.1.
105
-
106
-
## [0.3.1] - 2023-04-10
107
-
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`.
108
-
109
-
#### Security
110
-
- 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.
111
-
112
-
#### Added
113
-
- 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.
114
-
115
-
#### Changed
116
-
- Increased minimum required CMake version to 3.13. CMake builds remain experimental.
117
-
118
-
#### ABI Compatibility
119
-
The ABI is compatible with version 0.3.0.
120
-
121
10
## [0.3.0] - 2023-03-08
122
11
123
12
#### Added
@@ -136,6 +25,7 @@ The ABI is compatible with version 0.3.0.
136
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).
137
26
138
27
#### ABI Compatibility
28
+
139
29
Due to changes in the API regarding `secp256k1_context_static` described above, the ABI is *not* compatible with previous versions.
140
30
141
31
## [0.2.0] - 2022-12-12
@@ -155,6 +45,7 @@ Due to changes in the API regarding `secp256k1_context_static` described above,
155
45
- Module `schnorrsig`: renamed `secp256k1_schnorrsig_sign` to `secp256k1_schnorrsig_sign32`.
156
46
157
47
#### ABI Compatibility
48
+
158
49
Since this is the first release, we do not compare application binary interfaces.
159
50
However, there are earlier unreleased versions of libsecp256k1 that are *not* ABI compatible with this version.
160
51
@@ -164,14 +55,7 @@ This version was in fact never released.
164
55
The number was given by the build system since the introduction of autotools in Jan 2014 (ea0fe5a5bf0c04f9cc955b2966b614f5f378c6f6).
165
56
Therefore, this version number does not uniquely identify a set of source files.
0 commit comments