Commit Graph

1380 Commits

Author SHA1 Message Date
merge-script
97de5120cf Merge bitcoin-core/secp256k1#1804: test: show both CMake and Autotools usage for ctime_tests
1bc74a22f8 test: show both Autotools and CMake usage for ctime_tests (8144225309)

Pull request description:

  When building with CMake and running `ctime_tests` outside valgrind, users see:

  ```
  Usage: libtool --mode=execute valgrind ./ctime_tests
  ```

  CMake users don't have libtool. Show both commands.

  ### Before
  ```
  $ ./build/bin/ctime_tests
  This test can only usefully be run inside valgrind because it was not compiled under msan.
  Usage: libtool --mode=execute valgrind ./ctime_tests
  ```

  ### After
  ```
  $ ./build/bin/ctime_tests
  This test can only usefully be run inside valgrind because it was not compiled under msan.
  Usage: valgrind ./ctime_tests (or with Autotools: libtool --mode=execute valgrind ./ctime_tests)
  ```

  Fixes #1697

ACKs for top commit:
  real-or-random:
    utACK 1bc74a22f8

Tree-SHA512: d35c332c75fe3df66928cb8b137e11995c67a57744985a50a539d1d9f24cf39ee46f17c6f6a501664a62f67e11b7bb041ba0e1eed6632bf7dccdb57a2c88f9bc
2026-02-03 12:57:57 +01:00
Hennadii Stepanov
fb229e7602 build: Add -Wtrailing-whitespace=any compiler flag 2026-02-02 13:01:24 +00:00
Hennadii Stepanov
13e3bee504 refactor: Remove trailing whitespace 2026-02-02 13:01:18 +00:00
merge-script
1605b02f75 Merge bitcoin-core/secp256k1#1775: Add CMake build directory patterns to .gitignore
748c0fdd67 Add CMake build directory patterns to `.gitignore` (Hennadii Stepanov)
7eb86bdb01 autotools: Rename `build-aux` to `autotools-aux` (Hennadii Stepanov)

Pull request description:

  Whenever I work on changes that require comparison, such as benchmarking, I end up with two or more build directories that provide different binary variants simultaneously. Adding these build directories to `.gitignore` makes the workflow a bit easier.

  Additionally, a trivial refactoring is included to reduce the code.

ACKs for top commit:
  real-or-random:
    utACK 748c0fdd67
  furszy:
    ACK 748c0fdd67

Tree-SHA512: 948917dcdc2ec6d5a2227f35ef9208fdbc62c56047db1c60b39f6da632642847aefa18f136986f9f15f08e0b2385964afe9a311346b728536323c54b4f0e3f04
2026-01-28 08:27:56 +01:00
merge-script
14e56970cb Merge bitcoin-core/secp256k1#1794: ecmult: Use size_t for array indices
47eb70959a ecmult: Use size_t for array indices in _odd_multiplies_table (Tim Ruffing)
bb1d199de5 ecmult: Use size_t for array indices into tables (Tim Ruffing)

Pull request description:

  I don't think the current code is incorrect, but using `size_t` improves readability because the type makes it clear that we're dealing with array indices.

  Also, making the result of the `ECMULT_TABLE_SIZE` macro (hopefully) a `size_t` fixes a compiler warning on MSVC, see #1791.

ACKs for top commit:
  hebasto:
    re-ACK 47eb70959a.
  jonasnick:
    ACK 47eb70959a
  theStack:
    ACK 47eb70959a

Tree-SHA512: e484fd610d50e972021c0184a683993364290eb58e09b65f9521b4507ec8d0639b402c67002005630b389bc863a7aa05b75f7224524dbcbafbfa5f9a4812b4a5
2026-01-27 09:50:16 +01:00
kevkevinpal
c09215f7af bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
In this change the get_iters function was updated to print an error
message and then return 0. In the functions that use get_iters they
print the help text and then EXIT_FAILURE
2026-01-23 08:07:22 -05:00
8144225309
1bc74a22f8 test: show both Autotools and CMake usage for ctime_tests
The existing message only shows the libtool command, which is
specific to Autotools builds.

Fixes #1697
2026-01-22 10:28:30 -05:00
Jonas Nick
4721e077b4 Merge bitcoin-core/secp256k1#1793: doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
bd5ced1fe1 doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult (kevkevinpal)

Pull request description:

ACKs for top commit:
  real-or-random:
    utACK bd5ced1fe1
  hebasto:
    ACK bd5ced1fe1, I have reviewed the code and it looks OK. Tested on Ubuntu 25.10.
  jonasnick:
    ACK bd5ced1fe1

Tree-SHA512: 7cfc1a8915717bdfe2901f20f578e23368ece9937a40f36805a0a5b741f97a0502a085c973f6912b96c2bca921ef1654908cfe2c90c0601a7ffa92de4415dc62
2026-01-11 20:45:00 +00:00
kevkevinpal
bd5ced1fe1 doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
In addition a print message saying some tests were skipped was added
2026-01-07 13:02:06 -05:00
Tim Ruffing
47eb70959a ecmult: Use size_t for array indices in _odd_multiplies_table 2026-01-07 11:58:12 +01:00
Tim Ruffing
bb1d199de5 ecmult: Use size_t for array indices into tables 2026-01-07 11:58:12 +01:00
merge-script
2d9137ce9d Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
2f73e5281d group: Avoid using infinity field directly in other modules (Tim Ruffing)

Pull request description:

  Minor refactoring to make the abstraction cleaner

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

Tree-SHA512: eae5ad1ce81f491adb48ab1cbf04211f8d43e41255abcacc958fa3dcb1de5021707d56ed1b009a6f3f6c45cd8f20c1f2677891690a3c0a467fc7e064af2512a8
2026-01-06 10:12:53 +01:00
merge-script
8d445730ec Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
ae00c552df Add VERIFY_CHECKs that flags are 0 or 1 (John Moffett)

Pull request description:

  Flags for constant-time masking rely on the values being exactly `0` or `1` rather than `0` or true (any nonzero). One function, `secp256k1_fe_cmov` [documents](e7f7083b53/src/field.h (L315)) and [`VERIFY_CHECK`s](e7f7083b53/src/field_impl.h (L365)) this, but most don't.

  This updates the documentation and adds `VERIFY_CHECK`s enforcing `flag == 0 || flag == 1` for:

  `secp256k1_fe_storage_cmov`
  `secp256k1_gej_cmov`
  `secp256k1_ge_storage_cmov`
  `secp256k1_scalar_cadd_bit`
  `secp256k1_scalar_cond_negate`
  `secp256k1_scalar_cmov`
  `secp256k1_int_cmov`

ACKs for top commit:
  furszy:
    ACK ae00c55
  hebasto:
    re-ACK ae00c552df.

Tree-SHA512: c9d358929d39d93b0aea602d318429f7e82af96bf601f048a1cdeb0621b8adc6d1204648d352aa2060cb0f63db6dcf0da863854375ed313cea44dfad61c19a18
2025-12-15 20:43:58 +01:00
merge-script
aa2a39c1a7 Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
3b5b03f301 doc/bench: Added cmake build options to bench error messages (kevkevinpal)

Pull request description:

  ## Motivation
  I wanted to try and run the benchmarking scripts and I noticed the recovery benchmark in `bench.c`. I wanted to run but I was using `cmake` and the error message telling me to use `./configure -enable-module-recovery` wasn't sufficient.

  I figure rather than forcing users to look into the `CMakeLists.txt` file or anywhere else we should add this to the output

  ## Solution
  I appended to the message to include the `-DSECP256K1_ENABLE_MODULE_...=ON` in the message.

ACKs for top commit:
  real-or-random:
    utACK 3b5b03f301
  hebasto:
    ACK 3b5b03f301, I have reviewed the code and it looks OK.

Tree-SHA512: 3a6c966b65ab3f0d6dda81e5dd95529087db3f2901f2686af68c16079ec5b323568f3c9acb155d92a6d50b4102faf0844d0d87216df001adbf69cab4ce86dabc
2025-12-15 20:42:15 +01:00
furszy
d822b29021 test: split monolithic ellswift test into independent cases
No behavior changes.

Refactors the previously monolithic ElligatorSwift test into isolated,
independent test cases. Doing so allows the test suite to execute
these cases in parallel rather than sequentially.

Overall, seen 35-40% tests time reduction locally.

This is quite useful for the Debug build with no optimizations,
which is noticeably slow.

#### Local Debug-build Results (7 jobs):

- master: 138.0 seconds.
- this PR: 89.3 seconds.
   (~1.55× speedup, ~35% reduction)

#### Local Release-build Results (7 jobs):

- master: 9.5 seconds.
- this PR: 5.9 seconds.
   (~1.61× speedup, ~38% reduction)
2025-12-15 09:28:28 -05:00
John Moffett
ae00c552df Add VERIFY_CHECKs that flags are 0 or 1
Flags for constant-time masking rely
on the values being exactly 0 or 1 rather
than 0 or true. Add VERIFY_CHECKs to enforce
in VERIFY builds as a preventative
measure and add documentation where relevant.
2025-12-15 09:07:42 -05:00
merge-script
5c75183344 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
3daab83a60 refactor: remove ret from secp256k1_ec_pubkey_serialize (kevkevinpal)

Pull request description:

  This is a follow-up to https://github.com/bitcoin-core/secp256k1/pull/1774#discussion_r2539737079

  It is pretty straightforward to remove `ret` and to just return either `0` or `1`

ACKs for top commit:
  real-or-random:
    utACK 3daab83a60
  theStack:
    ACK 3daab83a60

Tree-SHA512: ce598d917455a2d25297436bf2b900a9e88a638617cb79ca22e467135035c334b6815911fe4429ff44dbd877e6d10a346d0b37f2e5a7459e5b35854023832d27
2025-12-10 16:13:24 +01:00
kevkevinpal
3daab83a60 refactor: remove ret from secp256k1_ec_pubkey_serialize 2025-12-09 16:08:35 -05:00
Sebastian Falbesoner
8bcda186d2 test: Add non-NULL checks for "pointer of array" API functions 2025-12-09 01:38:48 +01:00
Sebastian Falbesoner
5a08c1bcdc Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL 2025-12-06 01:13:58 +01:00
kevkevinpal
3b5b03f301 doc/bench: Added cmake build options to bench error messages 2025-12-05 09:25:23 -05:00
merge-script
e7f7083b53 Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
f5e815f430 remove secp256k1_eckey_pubkey_serialize function (Sebastian Falbesoner)
0d3659c547 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig) (Sebastian Falbesoner)
adb76f82ea use new `_eckey_pubkey_serialize{33,65}` functions in public API (Sebastian Falbesoner)
fc7458ca3e introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions (Sebastian Falbesoner)

Pull request description:

  This PR splits up the pubkey serialization function `secp256k1_eckey_pubkey_serialize` into two variants for the compressed (33 bytes) and uncompressed (65 bytes) public key output format each, where only non-infinity group elements as input are allowed. The motivation is to simplify call-sites significantly, as they currently need to introduce two variables and a VERIFY_CHECKs on the return value and the in/out size parameter within a pre-processor block, typically leading to 8 lines of code. By using the new functions, the code is reduced to a single line of code that just calls the function (see #1773). This is helpful for already existing modules on master (ellswift, musig) and upcoming ones (silentpayments, see #1765).

  One drawback is that the public API function `secp256k1_ec_pubkey_serialize` is now slightly more complex (we now call one of two functions instead of a single one, depending on whether the compressed flag is set or not), but that should hopefully not be a problem.

  The commits are intentionally kept small to ease review, happy to squash them if that is preferred.

  (Kudos to w0xlt for the initial idea (https://github.com/bitcoin-core/secp256k1/pull/1765#pullrequestreview-3462461331) and to real-or-random for the suggestion to split the already existing function (https://github.com/bitcoin-core/secp256k1/issues/1773#issuecomment-3540461718).)

ACKs for top commit:
  real-or-random:
    utACK f5e815f430
  w0xlt:
    ACK f5e815f430

Tree-SHA512: da576bbeae477f31ba76c0001f8df08b51fe5e31d67b422a238348ead3341bf37f0c1509ad9d0a93b63e6d61c152707c85beabd02f4eac3b3bdcff129e0ea750
2025-11-27 17:27:08 +01:00
Hennadii Stepanov
7eb86bdb01 autotools: Rename build-aux to autotools-aux
This change improves separation from CMake build directories, which
typically use the "build" prefix.

Additionally, corresponding `.gitignore` entries have been refactored.
2025-11-20 12:40:50 +00: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
Sebastian Falbesoner
f5e815f430 remove secp256k1_eckey_pubkey_serialize function 2025-11-17 18:35:32 +01:00
Sebastian Falbesoner
0d3659c547 use new _eckey_pubkey_serialize{33,65} functions in modules (ellswift,musig) 2025-11-17 18:13:56 +01:00
Sebastian Falbesoner
adb76f82ea use new _eckey_pubkey_serialize{33,65} functions in public API 2025-11-17 17:19:57 +01:00
Sebastian Falbesoner
fc7458ca3e introduce secp256k1_eckey_pubkey_serialize{33,65} functions 2025-11-17 17:12:20 +01:00
Tim Ruffing
2f73e5281d group: Avoid using infinity field directly in other modules 2025-11-06 17:51:08 +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