Commit Graph

1353 Commits

Author SHA1 Message Date
kevkevinpal
3b5b03f301 doc/bench: Added cmake build options to bench error messages 2025-12-05 09:25:23 -05:00
merge-script
b6c2a3cd77 Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
26166c4f5f ecmult_multi: reduce strauss memory usage by 30% (Jonas Nick)

Pull request description:

  This is a draft because I'm not sure about the cleanest way to implement it.

ACKs for top commit:
  real-or-random:
    ACK 26166c4f5f benchmarks show no significant difference (only tried low point counts)
  siv2r:
    tACK 26166c4
  hebasto:
    ACK 26166c4f5f, I have reviewed the code and it looks OK.

Tree-SHA512: f289daee0b0b51451331eefdd99200a78bd83539365d38465c038dc0e6ad940daf821119f7161b08a2390cf046e3859a8f950f2fe881a427aba16353031def7d
2025-11-18 09:36:40 +01:00
Hennadii Stepanov
153eea20c2 bench: Use ALIGNMENT macro instead of hardcoded value 2025-10-27 14:04:51 +00:00
Jonas Nick
26166c4f5f ecmult_multi: reduce strauss memory usage by 30% 2025-10-17 14:18:42 +00:00
merge-script
d543c0d917 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
2f4546ce56 test: add --log option to display tests execution (furszy)
95b9953ea4 test: Add option to display all available tests (furszy)
953f7b0088 test: support running specific tests/modules targets (furszy)
0302c1a3d7 test: add --help for command-line options (furszy)
9ec3bfe22d test: adapt modules to the new test infrastructure (furszy)
48789dafc2 test: introduce (mini) unit test framework (furszy)
9cce703863 refactor: move 'gettime_i64()' to tests_common.h (furszy)

Pull request description:

  Early Note:
  Don’t be scared by the PR’s line changes count — most of it’s just doc or part of the test framework API.

  Context:
  Currently, all tests run single-threaded sequentially and the library lacks the ability to specify which test (or group of tests) you would like to run. This is not only inconvenient as more tests are added but also time consuming during development and affects downstream projects that may want to parallelize the workload (such as Bitcoin-Core CI).

  PR Goal:
  Introduce a lightweight, extensible C89 unit test framework with no dynamic memory allocations, providing a structured way to register, execute, and report tests. The framework supports named command-line arguments in `-key=value` form, parallel test execution across multiple worker processes, granular test selection (selecting tests either by name or by module name), and time accumulation reports.

  The introduced framework supports:
  * `-help` or `-h`: display list of available commands along with their descriptions.
  * `-jobs=<num>`: distribute tests across multiple worker processes (default: sequential if 0).
  * `-target=<name>` or `-t=<name>`: run only specific tests by name; can be repeated to select multiple tests.
  *  `-target=<module name>`, `-t=<module>`  Run all tests within a specific module (can be provided multiple times)
  * `-seed=<hex>`: set a specific RNG seed (defaults to random if unspecified).
  * `-iterations=<n>`: specify the number of iterations.
  * `-list_tests`:   display list of available tests and modules you can run.
  * `-log=<0|1>`: enable or disable test execution logging (default: 0 = disabled).

  Beyond these features, the idea is to also make future developments smoother, as adding new tests require only a single entry in the central test registry, and new command-line options can be introduced easily by extending the framework’s `parse_arg()` function.

  Compatibility Note:
  The framework continues accepting the two positional arguments previously supported (iterations and seed), ensuring existing workflows remain intact.

  Testing Notes:
  Have fun. You can quickly try it through `./tests -j=<workers_num>` for parallel execution  or `./tests -t=<test_name>` to run a specific test (call `./tests -print_tests` to display all available tests and modules).

  Extra Note:
  I haven't checked the exhaustive tests file so far, but I will soon. For now, this only runs all tests declared in the `tests` binary.

  Testing Results: (Current master branch vs PR in seconds)

  * Raspberry Pi 5: master \~100 s → PR \~38 s (5 jobs)
  * MacBook Pro M1: master \~30 s → PR \~10 s (6 jobs)

ACKs for top commit:
  theStack:
    re-ACK 2f4546ce56
  real-or-random:
    ACK 2f4546ce56
  hebasto:
    ACK 2f4546ce56.

Tree-SHA512: 85ca2cbb620b84b35b353d5d4cf093c388fc3851ca405eeb0e458f8fa72b60534bccd357c7edabf8fc9aa93d9ad0a6fbac3dd5c4d5f9dfdf4d8701a9834755b9
2025-10-15 08:37:23 +02:00
Hennadii Stepanov
6894c964f3 Fix Clang 21+ -Wuninitialized-const-pointer warning when using MSan
Co-authored-by: Tim Ruffing <me@real-or-random.org>
2025-10-14 11:19:16 +01:00
furszy
2f4546ce56 test: add --log option to display tests execution
When enabled (--log=1), shows test start, completion, and execution time.
2025-10-01 10:19:05 -04:00
furszy
95b9953ea4 test: Add option to display all available tests
Useful option to avoid opening the large tests.c file just to find
the test case you want to run.
2025-10-01 10:19:05 -04:00
furszy
953f7b0088 test: support running specific tests/modules targets
Add support for specifying single tests or modules to run via the
"--target" or "-t" command-line option. Multiple targets can be
provided; only the specified tests or all tests in the specified
module/s will run instead of the full suite.

Examples:
-t=<test name> runs an specific test.
-t=<module name> runs all tests within the specified module.

Both options can be provided multiple times.
2025-10-01 10:19:05 -04:00
furszy
0302c1a3d7 test: add --help for command-line options
Add a help message for the test suite, documenting available options,
defaults, and backward-compatible positional arguments.
2025-10-01 10:17:57 -04:00
furszy
9ec3bfe22d test: adapt modules to the new test infrastructure
This not only provides a structural improvement but also
allows us to (1) specify individual tests to run and (2)
execute each of them concurrently.
2025-10-01 10:17:57 -04:00
furszy
48789dafc2 test: introduce (mini) unit test framework
Lightweight unit testing framework, providing a structured way to define,
execute, and report tests. It includes a central test registry, a flexible
command-line argument parser of the form "--key=value" / "-k=value" /
"-key=value" (facilitating future framework extensions), ability to run
tests in parallel and accumulated test time logging reports.

So far the supported command-line args are:
- "--jobs=<num>" or "-j=<num>" to specify the number of parallel workers.
- "--seed=<hex>" to specify the RNG seed (random if not set).
- "--iterations=<num>" or "-i=<num>" to specify the number of iterations.

Compatibility Note:
To stay compatible with previous versions, the framework also supports
the two original positional arguments: the iterations count and the
RNG seed (in that order).
2025-10-01 10:17:57 -04:00
Sebastian Falbesoner
dfe284ed2d bench: improve context creation in ECDH benchmark
Calling `secp256k1_context_create` with `SECP256K1_FLAGS_TYPE_CONTEXT`
seems to be not strictly API-compliant, as the only allowed
(non-deprecated) value is `SECP256K1_CONTEXT_NONE`, even if the
former happens to map to the latter currently.

Fix this by not dynamically creating a context in the first place and
switch to using the static context, as it is sufficient for this
benchmark and presumably matches what the "no capabilities" comment
intended back then.
2025-09-16 23:17:08 +02:00
furszy
9cce703863 refactor: move 'gettime_i64()' to tests_common.h
Relocate the clock time getter to tests_common.h to
make it easily reusable across test programs. This
will be useful for the upcoming unit test framework.

Context - why not placing it inside testutil.h?:
The bench program links against the production-compiled library,
not its own compiled version. Therefore, `gettime_i64()` cannot
be moved to testutil.h, because testutil.h calls
`secp256k1_pubkey_save()`, which exists only in the internal
secp256k1.c and not in the public API.
2025-09-13 09:55:28 -04:00
Sebastian Falbesoner
0c91c56041 test: introduce group order byte-array constant for deduplication 2025-09-12 15:52:43 +02:00
John Moffett
399b582a5f Split memclear into two versions
secp256k1_memclear has the side effect of undefining bytes for
valgrind checks. In some cases, we may want to zero bytes
but allow subsequent reads. So we split memclear into
memclear_explicit, which makes no guarantees about the content
of the buffer on return, and memzero_explicit, which guarantees
zero value on return.

Change the memset in partial_sign to use memzero_explicit.
2025-09-08 12:26:04 -04:00
merge-script
d93380fb35 Merge bitcoin-core/secp256k1#1731: schnorrsig: Securely clear buf containing k or its negation
325d65a8cf Rename and clear var containing k or -k (John Moffett)

Pull request description:

  Follow-up to #1579. `buf` still holds the nonce or its negation, so ought to be cleared.

ACKs for top commit:
  theStack:
    Code review re-ACK 325d65a8cf
  real-or-random:
    utACK 325d65a8cf

Tree-SHA512: a2fe39d7c44cebc0abe712828d521c2a7aba1db2d9dc5fc811dcaf96f1e45494dba5d7f016b6d9200ab523641ff62083686dbc942284e0f548183aaf60d8bfa2
2025-09-02 22:38:59 +02:00
John Moffett
325d65a8cf Rename and clear var containing k or -k
buf currently holds k or -k and isn't cleared, so clear it and rename to
nonce32 to clarify its sensitivity and match how it is named in the
corresponding ECDSA sign_inner.
2025-09-02 12:40:35 -04:00
John Moffett
960ba5f9c6 Use size_t instead of int for RFC6979 outlen copy
If outlen is > INT_MAX, could trigger segfault or hang after copy
int now = outlen.
2025-09-01 09:18:48 -04:00
merge-script
f36afb8b3d Merge bitcoin-core/secp256k1#1725: tests: refactor tagged hash verification
5153cf1c91 tests: refactor tagged hash tests (josibake)

Pull request description:

  Opened in response to https://github.com/bitcoin-core/secp256k1/pull/1698#discussion_r2269449070

  ---

  We use tagged hashes in `modules/musig`, `modules/schnorrsig`, `modules/ellswift`, and the proposed `modules/silentpayments`. In looking for inspiration on how to add tagged hash midstate verification for https://github.com/bitcoin-core/secp256k1/pull/1698, it seemed like a good opportunity to DRY up the code across all of the modules.

  I chose the convention used in the ellswift module as this seems the most idiomatic C. Since the tags are normally specified as strings in the BIPs, I also added a comment above each char array for convenience.

  If its deemed too invasive to refactor the existing modules in this PR, I'm happy to drop the refactor commits for the ellswift and schnorrsig modules. All I need for https://github.com/bitcoin-core/secp256k1/pull/1698 is the first commit which moves the utility function out of the musig module to make it available to use in the silent payments module.

ACKs for top commit:
  real-or-random:
    utACK 5153cf1c91 assuming CI passes
  theStack:
    Code-review ACK 5153cf1c91

Tree-SHA512: 335ec3ee6a265e13cc379968f8fa1624534bef2389e4e21b85e6a9572ce1bd9dee4eabd2cb6d187ac974db3ab8246c2626d309ccfbee5744c30cf7560d1e261c
2025-08-21 09:56:22 +02:00
josibake
5153cf1c91 tests: refactor tagged hash tests
Move the sha256_tag_test_internal function out of the musig module
into tests.c. This makes it available to other modules wishing to verify tagged
hashes without needing to duplicate the function.

Change the function signature to expect a const unsigned char and update
the tagged hash tests to use static const unsigned char character
arrays (where necessary).

Add a comment for each tag. This is done as a convenience for checking
the strings against the protocol specifications, where the tags are
normally specified as strings.

Update tests in the ellswift and schnorrsig modules to use the
sha256_tag_test_internal helper function.
2025-08-20 10:37:06 +01:00
VolodymyrBg
489a43d1bf docs: fix broken link to eprint cache.pdf paper 2025-08-18 12:19:08 +00:00
josibake
c25c3c8a88 test: update wycheproof test vectors
Pull in updated test vectors. This update is done as a follow-up to #1711.
2025-07-31 14:33:49 +01:00
Adrien Ufferte
5433648ca0 Fix typos and spellings 2025-07-25 09:11:11 +01:00
fanquake
9ea54c69b7 tests: update Wycheproof files
Pulls in relevant changes from https://github.com/C2SP/wycheproof/pull/150.
2025-07-25 09:11:07 +01:00
Jonas Nick
cde4130898 musig/tests: initialize keypair
The keypair is unused in musig_partial_sign, but clang-snapshot gives a compiler
warning anyway.
2025-07-21 14:08:23 +00:00
Jonas Nick
5e74086dc8 Merge bitcoin-core/secp256k1#1705: musig/test: Remove dead code
8d967a602b musig/test: Remove dead code (Tim Ruffing)
983711cd6d musig/tests: Refactor vectors_signverify (Tim Ruffing)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK 8d967a602b

Tree-SHA512: 9cc3d84250a677a22badf8fb18d5c159816f2237f9dd8ac796e65a6e89921066aa718b4eb773e9c473ac61d5f18c392ae380d4e4b4e2c3424feff9475a1ce053
2025-07-21 13:06:25 +00:00
merge-script
7c3380423c Merge bitcoin-core/secp256k1#1696: build: Refactor visibility logic and add override
c82d84bb86 build: add CMake option for disabling symbol visibility attributes (Cory Fields)
ce7923874f build: Add SECP256K1_NO_API_VISIBILITY_ATTRIBUTES (Tim Ruffing)
e5297f6d79 build: Refactor visibility logic (Tim Ruffing)

Pull request description:

  This is less invasive than #1695. The latter might be the right thing in a new library (and then we'd probably not support autotools in the first place), but any semantic change to this code has the potential to create news bug, or at least breakages for downstream users.

  This is different from #1677 in that it does not set `hidden` explicitly. I agree with the comment in #1677 that setting `hidden` violates the principle of least surprise.

  So this similar in spirit to #1674. So I wonder if this should also include
  3eef7362c4. I'd say no, `fvisibility` should then set by the user. But can you, in CMake, set `CMAKE_C_VISIBILITY_PRESET` from a parent project?

ACKs for top commit:
  hebasto:
    ACK c82d84bb86, I have reviewed the code and it looks OK.

Tree-SHA512: dad36c32a108d813e8d4e1849260af43f79a9aa8fbfb9a42b07d737e0467924a511110df0a2c6761539a1587b617a1b11123610a3db9d4cdf2b985dfb3eb21da
2025-07-21 14:55:10 +02:00
Tim Ruffing
8d967a602b musig/test: Remove dead code
This avoids a compiler warning on clang-snapshot about &keypair being uninitialized.
2025-07-21 14:47:57 +02:00
Tim Ruffing
983711cd6d musig/tests: Refactor vectors_signverify
for improved readability
2025-07-21 14:44:57 +02:00
Hennadii Stepanov
bf082221ff cmake: Make secp256k1_objs inherit interface defines from secp256k1
This change effectively adds `-DSECP256K1_STATIC` to usage requirements
of `secp256k1_objs` on Windows, preventing LNK4217 linker warnings.
2025-07-18 17:37:09 +01:00
Cory Fields
c82d84bb86 build: add CMake option for disabling symbol visibility attributes
Co-authored-by: Tim Ruffing <me@real-or-random.org>
2025-07-18 13:59:51 +02:00
merge-script
29e73f4ba5 Merge bitcoin-core/secp256k1#1685: cmake: Emulate Libtool's behavior on FreeBSD
37dd422b5c cmake: Emulate Libtool's behavior on FreeBSD (Hennadii Stepanov)

Pull request description:

  Building the master branch @ f24b838bed on FreeBSD 14.3:
  - with Autotools:
  ```
  $ ./autogen.sh
  $ ./configure --disable-static --prefix /tmp/AUTOTOOLS
  $ gmake
  $ gmake install
  $ tree /tmp/AUTOTOOLS/lib
  /tmp/AUTOTOOLS/lib
  ├── libsecp256k1.la
  ├── libsecp256k1.so -> libsecp256k1.so.5.0.1
  ├── libsecp256k1.so.5 -> libsecp256k1.so.5.0.1
  ├── libsecp256k1.so.5.0.1
  └── pkgconfig
      └── libsecp256k1.pc

  2 directories, 5 files
  ```
  - with CMake:
  ```
  $ cmake -B build -DCMAKE_INSTALL_PREFIX=/tmp/CMAKE
  $ cmake --build build
  $ cmake --install build
  $ tree /tmp/CMAKE/lib
  /tmp/CMAKE/lib
  ├── cmake
  │   └── libsecp256k1
  │       ├── libsecp256k1-config-version.cmake
  │       ├── libsecp256k1-config.cmake
  │       ├── libsecp256k1-targets-relwithdebinfo.cmake
  │       └── libsecp256k1-targets.cmake
  ├── libsecp256k1.so -> libsecp256k1.so.5
  ├── libsecp256k1.so.5
  └── pkgconfig
      └── libsecp256k1.pc

  4 directories, 7 files
  ```

  With this PR:
  ```
  $ cmake -B build -DCMAKE_INSTALL_PREFIX=/tmp/CMAKE+PR
  $ cmake --build build
  $ cmake --install build
  $ tree /tmp/CMAKE+PR/lib
  /tmp/CMAKE+PR/lib
  ├── cmake
  │   └── libsecp256k1
  │       ├── libsecp256k1-config-version.cmake
  │       ├── libsecp256k1-config.cmake
  │       ├── libsecp256k1-targets-relwithdebinfo.cmake
  │       └── libsecp256k1-targets.cmake
  ├── libsecp256k1.so -> libsecp256k1.so.5
  ├── libsecp256k1.so.5 -> libsecp256k1.so.5.0.1
  ├── libsecp256k1.so.5.0.1
  └── pkgconfig
      └── libsecp256k1.pc

  4 directories, 8 files
  ```

  From [FreeBSD Developers' Handbook](https://docs.freebsd.org/en/books/developers-handbook/policies/#policies-shlib):
  > If you are adding shared library support to a port or other piece of software that does not have one, the version numbers should follow these rules. Generally, the resulting numbers will have nothing to do with the release version of the software.
  >
  > For ports:
  >
  >    - Prefer using the number already selected by upstream
  >
  >    - If upstream provides symbol versioning, ensure that we use their script

ACKs for top commit:
  real-or-random:
    utACK 37dd422b5c

Tree-SHA512: b603d7e293ae1fb15c2b3c05957dcc3cbe94294083ad1d8cb00b06b0e295597fa09719d32c18d628670952b6d00467f5bc884be9ab791baf59ec265e26032470
2025-06-24 11:45:28 +02:00
Cory Fields
145ae3e28d cmake: add a helper for linking into static libs
Parent projects (Bitcoin Core in this case) may wish to include secp256k1
in another static library (libbitcoinkernel) so that users are not forced
to bring their own static libsecp256k1.

Unfortunately, CMake lacks the machinery to link (combine) one static lib
into another.

To work around this, secp256k1_objs is exposed as an interface library which
parent projects can "link" into static libs..
2025-06-16 16:59:52 +00:00
Hennadii Stepanov
37dd422b5c cmake: Emulate Libtool's behavior on FreeBSD 2025-06-11 01:01:34 +01:00
Hennadii Stepanov
6f67151ee2 cmake: Use PUBLIC_HEADER target property
This change simplifies the installation logic.
2025-06-04 14:46:10 +01:00
Hennadii Stepanov
c32715b2a0 cmake, move-only: Move module option processing to src/CMakeLists.txt
This change simplifies the following commit.
2025-06-04 13:13:33 +01:00
Hennadii Stepanov
3af71987a8 cmake: Bump minimum required CMake version to 3.22
Ubuntu 20.04 LTS has reached the end of standard support. There no
longer appear to be compelling reasons to maintain compatibility with
CMake 3.16.
The new suggested minimum, CMake 3.22, is shipped with Ubuntu 22.04 LTS,
which is supported until April 2027.

This change also introduces new CMake policies, from CMP0098 to CMP0128.
2025-05-30 11:59:31 +01:00
Peter.Dettman
3a4f448cb4 Assert field magnitude at control-flow join 2025-05-20 17:48:22 +07:00
Jonas Nick
9fab425256 Merge bitcoin-core/secp256k1#1668: bench_ecmult: add benchmark for ecmult_const_xonly
05445377f4 bench_ecmult: add benchmark for ecmult_const_xonly (Sebastian Falbesoner)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK 05445377f4

Tree-SHA512: cb676bc561f742782795015a4e32c6c505817ae6a48fbe5accf4c0fb7690077a7f9f2836431b11be83983b3fffd494437e10ddea6e81226dbd2e05177647ea33
2025-05-14 20:00:54 +00:00
Sebastian Falbesoner
05445377f4 bench_ecmult: add benchmark for ecmult_const_xonly 2025-05-14 17:45:19 +02:00
RandomLattice
d73ed99479 tests: update wycheproof files
Wycheproof ownership was recently moved to C2SP
(https://github.com/C2SP/wycheproof). This PR updates all references to the new
URL and bumps to the latest version of the vector files.

This commit does not change the content of processed .h testvector files. To test:
```
make clean-testvectors testvectors
```

See: https://github.com/bitcoin-core/secp256k1/pull/1492#discussion_r1572443456

Co-authored-by: Sean Andersen <6730974+andozw@users.noreply.github.com>
2025-05-13 19:46:47 +09:00
Jonas Nick
4187a46649 Merge bitcoin-core/secp256k1#1492: tests: Add Wycheproof ECDH vectors
e266ba11ae tests: Add Wycheproof ECDH vectors (RandomLattice)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK e266ba11ae

Tree-SHA512: a5cc59886595b134dadcc50e6cd6f03ce036c2857cdd848f138f0c49d4bd742ae5eb5ebca7840ec8666b5d43fa9c4f67cde4d0fb2245b1cf56b079ca3f7c7f8e
2025-05-12 19:50:56 +00:00
RandomLattice
e266ba11ae tests: Add Wycheproof ECDH vectors
Adds a test for the ECDH module using the Wycheproof vectors.
We use a python script to convert the JSON-formatted vectors
into C code, in the same spirit as https://github.com/bitcoin-core/secp256k1/pull/1245

Co-authored-by: Sean Andersen <6730974+andozw@users.noreply.github.com>
2025-05-12 11:27:45 -04:00
Jonas Nick
6b3fe51fb6 bench: add ellswift to bench help output 2025-03-13 14:51:17 +00:00
Jonas Nick
51907fa918 tests: remove unused uncounting_illegal_callback_fn
This callback function has been unused since
a1d52e3e12
2025-03-13 08:01:08 +00:00
merge-script
a7a5117144 Merge bitcoin-core/secp256k1#1359: Fix symbol visibility issues, add test for it
d1478763a5 build: Drop no longer needed  `-fvisibility=hidden` compiler option (Hennadii Stepanov)
8ed1d83d92 ci: Run `tools/symbol-check.py` (Hennadii Stepanov)
41d32ab2de test: Add `tools/symbol-check.py` (Hennadii Stepanov)
88548058b3 Introduce `SECP256K1_LOCAL_VAR` macro (Hennadii Stepanov)

Pull request description:

  Closes https://github.com/bitcoin-core/secp256k1/issues/1181.

  [Catches](https://github.com/bitcoin-core/secp256k1/pull/1359#issuecomment-2417892235) the actual symbol visibility issue.

  Replaces https://github.com/bitcoin-core/secp256k1/pull/1135.

ACKs for top commit:
  real-or-random:
    reACK d1478763a5

Tree-SHA512: 4d39f3c4cd32afa2b4418ca79331c72827c76a49a5422afa7c85e60d00a750b91b1b1ab10d91ba578f5817dd938016751168758461fb89de8da56f7d005ae2da
2025-03-13 08:29:42 +01:00
Jonas Nick
13ed6f65dc Merge bitcoin-core/secp256k1#1593: Remove deprecated _ec_privkey_{negate,tweak_add,tweak_mul} aliases from API
37d2c60bec Remove deprecated _ec_privkey_{negate,tweak_add,tweak_mul} aliases (Sebastian Falbesoner)

Pull request description:

ACKs for top commit:
  real-or-random:
    utACK 37d2c60bec
  sipa:
    utACK 37d2c60bec
  jonasnick:
    ACK 37d2c60bec

Tree-SHA512: 5d3c836c3c4d5cde143fe5b5235f9fc108174439b056f3418834f33d12ea28bdf09d11a81917d679b4b9a93da26304241c8fe389549e72796bbda116e9ff4945
2025-03-12 20:01:59 +00:00
Hennadii Stepanov
88548058b3 Introduce SECP256K1_LOCAL_VAR macro
This change makes the `-fvisibility=hidden` compiler option unnecessary.
2025-03-11 21:58:55 +00:00
Tim Ruffing
961ec25a83 musig: Fix clearing of pubnonces
Fixes a silent merge conflict between #1614 and #1579.
2025-03-10 15:10:29 +01:00