Skip to content

Introduce (mini) unit test framework#1734

Merged
real-or-random merged 7 commits into
bitcoin-core:masterfrom
furszy:2025_unit_test_framework
Oct 15, 2025
Merged

Introduce (mini) unit test framework#1734
real-or-random merged 7 commits into
bitcoin-core:masterfrom
furszy:2025_unit_test_framework

Conversation

@furszy
Copy link
Copy Markdown
Member

@furszy furszy commented Sep 4, 2025

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)

@furszy furszy changed the title Introduce (mini) unit test framework WIP: Introduce (mini) unit test framework Sep 4, 2025
@furszy furszy force-pushed the 2025_unit_test_framework branch 5 times, most recently from 16822f5 to 5fcb69c Compare September 5, 2025 01:05
@real-or-random real-or-random linked an issue Sep 5, 2025 that may be closed by this pull request
@real-or-random
Copy link
Copy Markdown
Contributor

Nice!

I looked at existing unit test frameworks in the past, but nothing seemed appropriate for us. There are not that many for C, and they were either overkill or too simple (just handful of ifdefs) so they didn't add any functionality. I thought writing our own is too annoying (or I was just lazy). But the framework is ~300 lines, that seems fine to me.

Comment thread src/util.h
@real-or-random
Copy link
Copy Markdown
Contributor

see also #1211

@furszy furszy force-pushed the 2025_unit_test_framework branch 2 times, most recently from b1de641 to 7b184a1 Compare September 5, 2025 18:36
@furszy furszy force-pushed the 2025_unit_test_framework branch 3 times, most recently from 9389623 to f49e570 Compare September 6, 2025 14:37
Copy link
Copy Markdown
Contributor

@jonasnick jonasnick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @furszy. I played around with this a little bit. It reduces the execution time on my machine from 26 seconds to 10 seconds (-jobs=16). Very nice! Some observations:

  • It would be helpful if a helptext would be output when tests is run with -h or --help.
  • I think showing all the tests that have passed is a bit overkill. I'm already assuming that the tests pass if they do not show up in the output. I only need to see tests that don't pass.
  • Maybe a future PR can autodetect the number of cores and set -jobs automatically by default?
  • There's an -iter command line flag, but the test output shows "test count". It would be better if we were consistent.

@jonasnick
Copy link
Copy Markdown
Contributor

  • The available "targets" seem to be a bit arbitary. Maybe we can try to put them into groups (perhaps similar to the grouping in #1211)?
    ./tests -print_tests
    Available tests (58):
        --------------------------------------------------
        [  1] selftest_tests
        [  2] all_proper_context_tests
        [  3] all_static_context_tests
        [  4] deprecated_context_flags_test
        [  5] scratch_tests
        [  6] int128_tests
        [  7] ctz_tests
        [  8] modinv_tests
        [  9] inverse_tests
        [ 10] hsort_tests
        [ 11] sha256_known_output_tests
        [ 12] sha256_counter_tests
        [ 13] hmac_sha256_tests
        [ 14] rfc6979_hmac_sha256_tests
        [ 15] tagged_sha256_tests
        [ 16] scalar_tests
        [ 17] field_half
        [ 18] field_misc
        [ 19] field_convert
        [ 20] field_be32_overflow
        [ 21] fe_mul
        [ 22] sqr
        [ 23] sqrt
        [ 24] ge
        [ 25] gej
        [ 26] group_decompress
        [ 27] ecmult_pre_g
        [ 28] wnaf
        [ 29] point_times_order
        [ 30] ecmult_near_split_bound
        [ 31] ecmult_chain
        [ 32] ecmult_constants
        [ 33] ecmult_gen_blind
        [ 34] ecmult_const_tests
        [ 35] ecmult_multi_tests
        [ 36] ec_combine
        [ 37] endomorphism_tests
        [ 38] ec_pubkey_parse_test
        [ 39] eckey_edge_case_test
        [ 40] eckey_negate_test
        [ 41] ecdh_tests
        [ 42] ec_illegal_argument_tests
        [ 43] pubkey_comparison
        [ 44] pubkey_sort
        [ 45] random_pubkeys
        [ 46] ecdsa_der_parse
        [ 47] ecdsa_sign_verify
        [ 48] ecdsa_end_to_end
        [ 49] ecdsa_edge_cases
        [ 50] ecdsa_wycheproof
        [ 51] extrakeys_tests
        [ 52] schnorrsig_tests
        [ 53] musig_tests
        [ 54] ellswift_tests
        [ 55] secp256k1_memczero_test
        [ 56] secp256k1_is_zero_array_test
        [ 57] secp256k1_byteorder_tests
        [ 58] cmov_tests
    

@furszy furszy force-pushed the 2025_unit_test_framework branch 3 times, most recently from af43348 to 0b3c74f Compare September 8, 2025 19:29
@furszy
Copy link
Copy Markdown
Member Author

furszy commented Sep 9, 2025

Thanks for the review jonasnick!

Thanks @furszy. I played around with this a little bit. It reduces the execution time on my machine from 26 seconds to 10 seconds (-jobs=16). Very nice!

Awesome :). I think we can actually do even better, will do some changes.

  • It would be helpful if a helptext would be output when tests is run with -h or --help.

The help message was actually already there, but for -help only (with a single - and I forgot to add it to the PR description).
I just pushed support for -h as well.

  • I think showing all the tests that have passed is a bit overkill. I'm already assuming that the tests pass if they do not show up in the output. I only need to see tests that don't pass.

Sure. Will hide the logging behind a -log option (or -silent if we want the opposite behavior).
From my experience, logging sometimes helps spot regressions or areas that can be improved (like when a test suddenly takes longer than usual), and it’s also reassuring to see them run and pass when you have a large number of them.
I’ve also been thinking about adding per-test execution time loggings, might be a good opportunity to include it too.

  • Maybe a future PR can autodetect the number of cores and set -jobs automatically by default?

I'm not sure we want that. Sequential execution is usually "standard" on any system because we don’t know what else the user might be running. Picking a number of parallel tasks automatically (even if it is a low number) could hang the CPU or even make it run slower than sequential if the system is overloaded.

  • There's an -iter command line flag, but the test output shows "test count". It would be better if we were consistent.

Sure 👍🏼. That was carried over from the previous code; will improve it.

@furszy
Copy link
Copy Markdown
Member Author

furszy commented Sep 9, 2025

The available "targets" seem to be a bit arbitary. Maybe we can try to put them into groups (perhaps similar to the grouping in #1211)?

Yeah. Just reworked the framework to support registering and running groups of tests in a generic manner. This means we can now run specific tests and/or specific groups of tests via the -target/-t arg.

On top of that, made the framework reusable across binaries and improved the overall API (we can now easily connect the tests_exhaustive binary to it too — probably something for a follow-up), along with improvements to the consumers’ structure, enforcing consistency and a specific pattern that all consumers will follow.

Other than that, the -print_tests option was improved to display the available modules and tests.

A simple usage example:
./tests -print_tests → pick any module (like field) and run: ./tests -t=field
You can also combine this with -j=<num_workers>, plus specify multiple targets as needed.

@furszy furszy force-pushed the 2025_unit_test_framework branch from 0b3c74f to 4900aee Compare September 9, 2025 15:16
Comment thread src/bench.c Outdated
@furszy furszy force-pushed the 2025_unit_test_framework branch from 4900aee to aa5f041 Compare September 9, 2025 19:41
@furszy furszy changed the title WIP: Introduce (mini) unit test framework Introduce (mini) unit test framework Sep 9, 2025
@real-or-random real-or-random merged commit d543c0d into bitcoin-core:master Oct 15, 2025
237 of 238 checks passed
fanquake added a commit to fanquake/bitcoin that referenced this pull request Oct 15, 2025
d543c0d917 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd96 Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a339384 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d014804e ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a1f ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc107d ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da199 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93df ci: Bump `actions/checkout` version
574c2f3080 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93b7 ci: Use clang-snapshot in "MSan" job
6894c964f3 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f63a Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c35897 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177ca0 ci: Bump `docker/build-push-action` version
b2a95a420f ci: Drop `tags` input for `docker/build-push-action`
122014edb3 ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce56 test: add --log option to display tests execution
95b9953ea4 test: Add option to display all available tests
953f7b0088 test: support running specific tests/modules targets
0302c1a3d7 test: add --help for command-line options
9ec3bfe22d test: adapt modules to the new test infrastructure
48789dafc2 test: introduce (mini) unit test framework
baa265429f Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585fea docs: Improve API docs of _context_set_illegal_callback
895f53d1cf docs: Clarify that callback can be called more than once
de6af6ae35 Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
5817885153 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078aa build: Fix warnings in x86_64 assembly check
10dab907e7 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed2d bench: improve context creation in ECDH benchmark
7321bdf27b doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b475654302 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce703863 refactor: move 'gettime_i64()' to tests_common.h
0c91c56041 test: introduce group order byte-array constant for deduplication
88be4e8d86 Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
36e76952cb Merge bitcoin-core/secp256k1#1738: check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
399b582a5f Split memclear into two versions
4985ac0f89 Merge bitcoin-core/secp256k1#1737: doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
7ebaa134a7 check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
806de38bfc doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
03fb60ad2e Merge bitcoin-core/secp256k1#1681: doc: Recommend clang-cl when building on Windows
d93380fb35 Merge bitcoin-core/secp256k1#1731: schnorrsig: Securely clear buf containing k or its negation
8113671f80 Merge bitcoin-core/secp256k1#1729: hash: Use size_t instead of int for RFC6979 outlen copy
325d65a8cf Rename and clear var containing k or -k
960ba5f9c6 Use size_t instead of int for RFC6979 outlen copy
737912430d ci: Add more tests for clang-cl
7379a5bed3 doc: Recommend clang-cl when building on Windows
f36afb8b3d Merge bitcoin-core/secp256k1#1725: tests: refactor tagged hash verification
5153cf1c91 tests: refactor tagged hash tests
d2dcf52091 Merge bitcoin-core/secp256k1#1726: docs: fix broken link to Tromer's cache.pdf paper
489a43d1bf docs: fix broken link to eprint cache.pdf paper
d599714147 Merge bitcoin-core/secp256k1#1722: docs: Exclude modules' `bench_impl.h` headers from coverage report
0458def51e doc: Add `--gcov-ignore-parse-errors=all` option to `gcovr` invocations
1aecce5936 doc: Add `--merge-mode-functions=separate` option to `gcovr` invocations
106a7cbf41 doc: Exclude modules' `bench_impl.h` headers from coverage report
a9e955d3ea autotools, docs: Adjust help string for `--enable-coverage` option
e523e4f90e Merge bitcoin-core/secp256k1#1720: chore(ci): Fix typo in Dockerfile comment
24ba8ff168 chore(ci): Fix typo in Dockerfile comment
74b8068c5d Merge bitcoin-core/secp256k1#1717: test: update wycheproof test vectors
c25c3c8a88 test: update wycheproof test vectors
20e3b44746 Merge bitcoin-core/secp256k1#1688: cmake: Avoid contaminating parent project's cache with `BUILD_SHARED_LIBS`
2c076d907a Merge bitcoin-core/secp256k1#1711: tests: update Wycheproof
7b07b22957 cmake: Avoid contaminating parent project's cache with BUILD_SHARED_LIBS
5433648ca0 Fix typos and spellings
9ea54c69b7 tests: update Wycheproof files

git-subtree-dir: src/secp256k1
git-subtree-split: d543c0d917a76a201578948701cc30ef336e0fe6
@furszy furszy deleted the 2025_unit_test_framework branch October 15, 2025 13:40
@hebasto
Copy link
Copy Markdown
Member

hebasto commented Oct 25, 2025

While reviewing #1732, I realized that the commit "refactor: move 'gettime_i64()' to tests_common.h" might have been a suboptimal approach. The tests do not really require nanosecond precision, and the standard clock() should suffice. Moreover, changing the gettime_i64 implementation would require unnecessary modifications to test source code and/or build targets.

@furszy
Copy link
Copy Markdown
Member Author

furszy commented Oct 27, 2025

While reviewing #1732, I realized that the commit "refactor: move 'gettime_i64()' to tests_common.h" might have been a suboptimal approach. The tests do not really require nanosecond precision, and the standard clock() should suffice. Moreover, changing the gettime_i64 implementation would require unnecessary modifications to test source code and/or build targets.

After your CMake changes, the approach seems acceptable for the test framework as well. You are handling everything at the build-system level right now. If #1732 weren’t changing the function’s name, the test code wouldn’t require any changes.

Apart from that, it seems we could have a separate function that retrieves the elapsed time rather than the CPU time. A small wrapper that internally calls to the other time function, providing CLOCK_REALTIME or CLOCK_MONOTONIC. But that seems like an easy change to #1732.
I think we should first decide whether #1732 is the final way to go. This adaptation can be done at the end as it would be minimal.

Sjors added a commit to Sjors/sv2-tp that referenced this pull request Feb 16, 2026
1a53f4961f Merge bitcoin-core/secp256k1#1808: Prepare for 0.7.1
20a209f11c release: prepare for 0.7.1
c4b6a81a60 changelog: update in preparation for the v0.7.1 release
ebb35882da Merge bitcoin-core/secp256k1#1796: bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
c09215f7af bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
471e3a130d Merge bitcoin-core/secp256k1#1800: sage: verify Eisenstein integer connection for GLV constants
29ac4d8491 sage: verify Eisenstein integer connection for GLV constants
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
2d9137ce9d Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
f9a944ff2d Merge bitcoin-core/secp256k1#1790: doc: include arg -DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS=ON for cmake
0406cfc4d1 doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake
8d445730ec Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
aa2a39c1a7 Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
540fec8ae9 Merge bitcoin-core/secp256k1#1788: test: split monolithic ellswift test into independent cases
d822b29021 test: split monolithic ellswift test into independent cases
ae00c552df Add VERIFY_CHECKs that flags are 0 or 1
5c75183344 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
be5e4f02fd Merge bitcoin-core/secp256k1#1779: Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3daab83a60 refactor: remove ret from secp256k1_ec_pubkey_serialize
8bcda186d2 test: Add non-NULL checks for "pointer of array" API functions
5a08c1bcdc Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3b5b03f301 doc/bench: Added cmake build options to bench error messages
e7f7083b53 Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
b6c2a3cd77 Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
f5e815f430 remove secp256k1_eckey_pubkey_serialize function
0d3659c547 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig)
adb76f82ea use new `_eckey_pubkey_serialize{33,65}` functions in public API
fc7458ca3e introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions
c8206b1ce6 Merge bitcoin-core/secp256k1#1771: ci: Use Python virtual environment in "x86_64-macos-native" job
f252da7e6e ci: Use Python virtual environment in "x86_64-macos-native" job
115b135fe8 Merge bitcoin-core/secp256k1#1763: bench: Use `ALIGNMENT` macro instead of hardcoded value
2f73e5281d group: Avoid using infinity field directly in other modules
153eea20c2 bench: Use `ALIGNMENT` macro instead of hardcoded value
26166c4f5f ecmult_multi: reduce strauss memory usage by 30%
7a2fff85e8 Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115f7 Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72ff ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0e3 ci: Drop workaround for Valgrind older than 3.20.0
d543c0d917 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd96 Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a339384 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d014804e ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a1f ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc107d ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da199 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93df ci: Bump `actions/checkout` version
574c2f3080 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93b7 ci: Use clang-snapshot in "MSan" job
6894c964f3 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f63a Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c35897 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177ca0 ci: Bump `docker/build-push-action` version
b2a95a420f ci: Drop `tags` input for `docker/build-push-action`
122014edb3 ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce56 test: add --log option to display tests execution
95b9953ea4 test: Add option to display all available tests
953f7b0088 test: support running specific tests/modules targets
0302c1a3d7 test: add --help for command-line options
9ec3bfe22d test: adapt modules to the new test infrastructure
48789dafc2 test: introduce (mini) unit test framework
baa265429f Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585fea docs: Improve API docs of _context_set_illegal_callback
895f53d1cf docs: Clarify that callback can be called more than once
de6af6ae35 Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
5817885153 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078aa build: Fix warnings in x86_64 assembly check
10dab907e7 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed2d bench: improve context creation in ECDH benchmark
7321bdf27b doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b475654302 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce703863 refactor: move 'gettime_i64()' to tests_common.h
0c91c56041 test: introduce group order byte-array constant for deduplication
88be4e8d86 Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
36e76952cb Merge bitcoin-core/secp256k1#1738: check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
399b582a5f Split memclear into two versions
4985ac0f89 Merge bitcoin-core/secp256k1#1737: doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
7ebaa134a7 check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
806de38bfc doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
03fb60ad2e Merge bitcoin-core/secp256k1#1681: doc: Recommend clang-cl when building on Windows
d93380fb35 Merge bitcoin-core/secp256k1#1731: schnorrsig: Securely clear buf containing k or its negation
8113671f80 Merge bitcoin-core/secp256k1#1729: hash: Use size_t instead of int for RFC6979 outlen copy
325d65a8cf Rename and clear var containing k or -k
960ba5f9c6 Use size_t instead of int for RFC6979 outlen copy
737912430d ci: Add more tests for clang-cl
7379a5bed3 doc: Recommend clang-cl when building on Windows
f36afb8b3d Merge bitcoin-core/secp256k1#1725: tests: refactor tagged hash verification
5153cf1c91 tests: refactor tagged hash tests
d2dcf52091 Merge bitcoin-core/secp256k1#1726: docs: fix broken link to Tromer's cache.pdf paper
489a43d1bf docs: fix broken link to eprint cache.pdf paper
d599714147 Merge bitcoin-core/secp256k1#1722: docs: Exclude modules' `bench_impl.h` headers from coverage report
0458def51e doc: Add `--gcov-ignore-parse-errors=all` option to `gcovr` invocations
1aecce5936 doc: Add `--merge-mode-functions=separate` option to `gcovr` invocations
106a7cbf41 doc: Exclude modules' `bench_impl.h` headers from coverage report
a9e955d3ea autotools, docs: Adjust help string for `--enable-coverage` option
e523e4f90e Merge bitcoin-core/secp256k1#1720: chore(ci): Fix typo in Dockerfile comment
24ba8ff168 chore(ci): Fix typo in Dockerfile comment
74b8068c5d Merge bitcoin-core/secp256k1#1717: test: update wycheproof test vectors
c25c3c8a88 test: update wycheproof test vectors
20e3b44746 Merge bitcoin-core/secp256k1#1688: cmake: Avoid contaminating parent project's cache with `BUILD_SHARED_LIBS`
2c076d907a Merge bitcoin-core/secp256k1#1711: tests: update Wycheproof
7b07b22957 cmake: Avoid contaminating parent project's cache with BUILD_SHARED_LIBS
5433648ca0 Fix typos and spellings
9ea54c69b7 tests: update Wycheproof files

git-subtree-dir: src/secp256k1
git-subtree-split: 1a53f4961f337b4d166c25fce72ef0dc88806618
real-or-random added a commit that referenced this pull request Feb 19, 2026
8354618 cmake: Set `LABELS` property for tests (Hennadii Stepanov)
29f26ec cmake: Integrate DiscoverTests and normalize test names (Hennadii Stepanov)
f95b263 cmake: Add DiscoverTests module (Hennadii Stepanov)
4ac6511 cmake, refactor: Deduplicate test-related code (Hennadii Stepanov)

Pull request description:

  This PR implements the idea suggested in #1734 (review) and is based on the work from bitcoin/bitcoin#33483.

  Here is an example of the `ctest` output:
  ```
  $ ctest --test-dir build -j $(nproc)
  Test project /home/hebasto/dev/secp256k1/secp256k1/build
          Start   1: secp256k1.noverify_tests.selftest_tests
          Start   2: secp256k1.noverify_tests.all_proper_context_tests
          Start   3: secp256k1.noverify_tests.all_static_context_tests
          Start   4: secp256k1.noverify_tests.deprecated_context_flags_test
  <snip>
  193/196 Test  #31: secp256k1.noverify_tests.ecmult_constants .........................   Passed    5.32 sec
  194/196 Test #184: secp256k1.tests.ellswift_xdh_correctness_tests ....................   Passed    5.62 sec
  195/196 Test #191: secp256k1.exhaustive_tests ........................................   Passed    6.97 sec
  196/196 Test #126: secp256k1.tests.ecmult_constants ..................................   Passed    9.60 sec

  100% tests passed, 0 tests failed out of 196

  Label Time Summary:
  secp256k1_example           =   0.02 sec*proc (5 tests)
  secp256k1_exhaustive        =   6.97 sec*proc (1 test)
  secp256k1_noverify_tests    =  23.77 sec*proc (95 tests)
  secp256k1_tests             =  43.67 sec*proc (95 tests)

  Total Test time (real) =  10.21 sec
  ```

  For comparison, here is the output for the master branch on the same machine:
  ```
  $ ctest --test-dir build -j $(nproc)
  Test project /home/hebasto/dev/secp256k1/secp256k1/build
      Start 1: secp256k1_noverify_tests
      Start 2: secp256k1_tests
      Start 3: secp256k1_exhaustive_tests
      Start 4: secp256k1_ecdsa_example
      Start 5: secp256k1_ecdh_example
      Start 6: secp256k1_schnorr_example
      Start 7: secp256k1_ellswift_example
      Start 8: secp256k1_musig_example
  1/8 Test #4: secp256k1_ecdsa_example ..........   Passed    0.00 sec
  2/8 Test #5: secp256k1_ecdh_example ...........   Passed    0.00 sec
  3/8 Test #6: secp256k1_schnorr_example ........   Passed    0.00 sec
  4/8 Test #7: secp256k1_ellswift_example .......   Passed    0.00 sec
  5/8 Test #8: secp256k1_musig_example ..........   Passed    0.00 sec
  6/8 Test #3: secp256k1_exhaustive_tests .......   Passed    6.26 sec
  7/8 Test #1: secp256k1_noverify_tests .........   Passed   14.31 sec
  8/8 Test #2: secp256k1_tests ..................   Passed   31.65 sec

  100% tests passed, 0 tests failed out of 8

  Total Test time (real) =  31.65 sec
  ```

  ---

  **New Feature:** As the number of tests has grown, the _labels_ have been introduced to simplify test management. Now, one can run:
  ```
  $ ctest --test-dir build -j $(nproc) -L example
  Test project /home/hebasto/dev/secp256k1/secp256k1/build
      Start 192: secp256k1.example.ecdsa
      Start 193: secp256k1.example.ecdh
      Start 194: secp256k1.example.schnorr
      Start 195: secp256k1.example.ellswift
      Start 196: secp256k1.example.musig
  1/5 Test #192: secp256k1.example.ecdsa ..........   Passed    0.00 sec
  2/5 Test #193: secp256k1.example.ecdh ...........   Passed    0.00 sec
  3/5 Test #194: secp256k1.example.schnorr ........   Passed    0.00 sec
  4/5 Test #195: secp256k1.example.ellswift .......   Passed    0.00 sec
  5/5 Test #196: secp256k1.example.musig ..........   Passed    0.00 sec

  100% tests passed, 0 tests failed out of 5

  Label Time Summary:
  secp256k1_example    =   0.01 sec*proc (5 tests)

  Total Test time (real) =   0.01 sec
  ```
  or
  ```
  $ ctest --test-dir build -j $(nproc) -LE tests
  Test project /home/hebasto/dev/secp256k1/secp256k1/build
      Start 192: secp256k1.example.ecdsa
      Start 193: secp256k1.example.ecdh
      Start 194: secp256k1.example.schnorr
      Start 195: secp256k1.example.ellswift
      Start 196: secp256k1.example.musig
      Start 191: secp256k1.exhaustive_tests
  1/6 Test #192: secp256k1.example.ecdsa ..........   Passed    0.00 sec
  2/6 Test #193: secp256k1.example.ecdh ...........   Passed    0.00 sec
  3/6 Test #194: secp256k1.example.schnorr ........   Passed    0.00 sec
  4/6 Test #195: secp256k1.example.ellswift .......   Passed    0.00 sec
  5/6 Test #196: secp256k1.example.musig ..........   Passed    0.00 sec
  6/6 Test #191: secp256k1.exhaustive_tests .......   Passed    6.19 sec

  100% tests passed, 0 tests failed out of 6

  Label Time Summary:
  secp256k1_example       =   0.01 sec*proc (5 tests)
  secp256k1_exhaustive    =   6.19 sec*proc (1 test)

  Total Test time (real) =   6.20 sec
  ```

ACKs for top commit:
  purpleKarrot:
    ACK 8354618
  furszy:
    Tested ACK 8354618

Tree-SHA512: 8c506ab08491aba4836b3058a8a09c929c6dd097c11e4e6f4deb20cf602285e73c3fd8a2c2040f7e92a058c7f8fc09752fa9de2ce80f7673adbdd505237ed262
DarkWindman added a commit to mllwchrry/secp256k1-zkp that referenced this pull request Feb 24, 2026
DarkWindman added a commit to mllwchrry/secp256k1-zkp that referenced this pull request Feb 25, 2026
DarkWindman added a commit to mllwchrry/secp256k1-zkp that referenced this pull request Feb 25, 2026
DarkWindman added a commit to mllwchrry/secp256k1-zkp that referenced this pull request Feb 26, 2026
DarkWindman added a commit to mllwchrry/secp256k1-zkp that referenced this pull request Feb 27, 2026
DarkWindman added a commit to mllwchrry/secp256k1-zkp that referenced this pull request Feb 27, 2026
github-actions Bot pushed a commit to 21-DOT-DEV/swift-secp256k1 that referenced this pull request Mar 1, 2026
1a53f496 Merge bitcoin-core/secp256k1#1808: Prepare for 0.7.1
20a209f1 release: prepare for 0.7.1
c4b6a81a changelog: update in preparation for the v0.7.1 release
ebb35882 Merge bitcoin-core/secp256k1#1796: bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
c09215f7 bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
471e3a13 Merge bitcoin-core/secp256k1#1800: sage: verify Eisenstein integer connection for GLV constants
29ac4d84 sage: verify Eisenstein integer connection for GLV constants
4721e077 Merge bitcoin-core/secp256k1#1793: doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
bd5ced1f doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
2d9137ce Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
f9a944ff Merge bitcoin-core/secp256k1#1790: doc: include arg -DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS=ON for cmake
0406cfc4 doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake
8d445730 Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
aa2a39c1 Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
540fec8a Merge bitcoin-core/secp256k1#1788: test: split monolithic ellswift test into independent cases
d822b290 test: split monolithic ellswift test into independent cases
ae00c552 Add VERIFY_CHECKs that flags are 0 or 1
5c751833 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
be5e4f02 Merge bitcoin-core/secp256k1#1779: Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3daab83a refactor: remove ret from secp256k1_ec_pubkey_serialize
8bcda186 test: Add non-NULL checks for "pointer of array" API functions
5a08c1bc Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3b5b03f3 doc/bench: Added cmake build options to bench error messages
e7f7083b Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
b6c2a3cd Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
f5e815f4 remove secp256k1_eckey_pubkey_serialize function
0d3659c5 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig)
adb76f82 use new `_eckey_pubkey_serialize{33,65}` functions in public API
fc7458ca introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions
c8206b1c Merge bitcoin-core/secp256k1#1771: ci: Use Python virtual environment in "x86_64-macos-native" job
f252da7e ci: Use Python virtual environment in "x86_64-macos-native" job
115b135f Merge bitcoin-core/secp256k1#1763: bench: Use `ALIGNMENT` macro instead of hardcoded value
2f73e528 group: Avoid using infinity field directly in other modules
153eea20 bench: Use `ALIGNMENT` macro instead of hardcoded value
26166c4f ecmult_multi: reduce strauss memory usage by 30%
7a2fff85 Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115 Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72 ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0 ci: Drop workaround for Valgrind older than 3.20.0
d543c0d9 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a3393 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d01480 ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc10 ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da1 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93 ci: Bump `actions/checkout` version
574c2f30 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93 ci: Use clang-snapshot in "MSan" job
6894c964 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f6 Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c358 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177c ci: Bump `docker/build-push-action` version
b2a95a42 ci: Drop `tags` input for `docker/build-push-action`
122014ed ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce test: add --log option to display tests execution
95b9953e test: Add option to display all available tests
953f7b00 test: support running specific tests/modules targets
0302c1a3 test: add --help for command-line options
9ec3bfe2 test: adapt modules to the new test infrastructure
48789daf test: introduce (mini) unit test framework
baa26542 Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585f docs: Improve API docs of _context_set_illegal_callback
895f53d1 docs: Clarify that callback can be called more than once
de6af6ae Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
58178851 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078 build: Fix warnings in x86_64 assembly check
10dab907 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed bench: improve context creation in ECDH benchmark
7321bdf2 doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b4756543 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce7038 refactor: move 'gettime_i64()' to tests_common.h
0c91c560 test: introduce group order byte-array constant for deduplication
88be4e8d Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
36e76952 Merge bitcoin-core/secp256k1#1738: check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
399b582a Split memclear into two versions
4985ac0f Merge bitcoin-core/secp256k1#1737: doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
7ebaa134 check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
806de38b doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
03fb60ad Merge bitcoin-core/secp256k1#1681: doc: Recommend clang-cl when building on Windows
d93380fb Merge bitcoin-core/secp256k1#1731: schnorrsig: Securely clear buf containing k or its negation
8113671f Merge bitcoin-core/secp256k1#1729: hash: Use size_t instead of int for RFC6979 outlen copy
325d65a8 Rename and clear var containing k or -k
960ba5f9 Use size_t instead of int for RFC6979 outlen copy
73791243 ci: Add more tests for clang-cl
7379a5be doc: Recommend clang-cl when building on Windows
f36afb8b Merge bitcoin-core/secp256k1#1725: tests: refactor tagged hash verification
5153cf1c tests: refactor tagged hash tests
d2dcf520 Merge bitcoin-core/secp256k1#1726: docs: fix broken link to Tromer's cache.pdf paper
489a43d1 docs: fix broken link to eprint cache.pdf paper
d5997141 Merge bitcoin-core/secp256k1#1722: docs: Exclude modules' `bench_impl.h` headers from coverage report
0458def5 doc: Add `--gcov-ignore-parse-errors=all` option to `gcovr` invocations
1aecce59 doc: Add `--merge-mode-functions=separate` option to `gcovr` invocations
106a7cbf doc: Exclude modules' `bench_impl.h` headers from coverage report
a9e955d3 autotools, docs: Adjust help string for `--enable-coverage` option
e523e4f9 Merge bitcoin-core/secp256k1#1720: chore(ci): Fix typo in Dockerfile comment
24ba8ff1 chore(ci): Fix typo in Dockerfile comment
74b8068c Merge bitcoin-core/secp256k1#1717: test: update wycheproof test vectors
c25c3c8a test: update wycheproof test vectors
20e3b447 Merge bitcoin-core/secp256k1#1688: cmake: Avoid contaminating parent project's cache with `BUILD_SHARED_LIBS`
2c076d90 Merge bitcoin-core/secp256k1#1711: tests: update Wycheproof
7b07b229 cmake: Avoid contaminating parent project's cache with BUILD_SHARED_LIBS
5433648c Fix typos and spellings
9ea54c69 tests: update Wycheproof files
b9313c6e Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
7ab8b0cc release cleanup: bump version after 0.7.0

git-subtree-dir: Vendor/secp256k1
git-subtree-split: 1a53f4961f337b4d166c25fce72ef0dc88806618
github-actions Bot pushed a commit to 21-DOT-DEV/swift-secp256k1 that referenced this pull request Mar 1, 2026
1a53f496 Merge bitcoin-core/secp256k1#1808: Prepare for 0.7.1
20a209f1 release: prepare for 0.7.1
c4b6a81a changelog: update in preparation for the v0.7.1 release
ebb35882 Merge bitcoin-core/secp256k1#1796: bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
c09215f7 bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
471e3a13 Merge bitcoin-core/secp256k1#1800: sage: verify Eisenstein integer connection for GLV constants
29ac4d84 sage: verify Eisenstein integer connection for GLV constants
4721e077 Merge bitcoin-core/secp256k1#1793: doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
bd5ced1f doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
2d9137ce Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
f9a944ff Merge bitcoin-core/secp256k1#1790: doc: include arg -DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS=ON for cmake
0406cfc4 doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake
8d445730 Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
aa2a39c1 Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
540fec8a Merge bitcoin-core/secp256k1#1788: test: split monolithic ellswift test into independent cases
d822b290 test: split monolithic ellswift test into independent cases
ae00c552 Add VERIFY_CHECKs that flags are 0 or 1
5c751833 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
be5e4f02 Merge bitcoin-core/secp256k1#1779: Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3daab83a refactor: remove ret from secp256k1_ec_pubkey_serialize
8bcda186 test: Add non-NULL checks for "pointer of array" API functions
5a08c1bc Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3b5b03f3 doc/bench: Added cmake build options to bench error messages
e7f7083b Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
b6c2a3cd Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
f5e815f4 remove secp256k1_eckey_pubkey_serialize function
0d3659c5 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig)
adb76f82 use new `_eckey_pubkey_serialize{33,65}` functions in public API
fc7458ca introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions
c8206b1c Merge bitcoin-core/secp256k1#1771: ci: Use Python virtual environment in "x86_64-macos-native" job
f252da7e ci: Use Python virtual environment in "x86_64-macos-native" job
115b135f Merge bitcoin-core/secp256k1#1763: bench: Use `ALIGNMENT` macro instead of hardcoded value
2f73e528 group: Avoid using infinity field directly in other modules
153eea20 bench: Use `ALIGNMENT` macro instead of hardcoded value
26166c4f ecmult_multi: reduce strauss memory usage by 30%
7a2fff85 Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115 Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72 ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0 ci: Drop workaround for Valgrind older than 3.20.0
d543c0d9 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a3393 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d01480 ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc10 ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da1 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93 ci: Bump `actions/checkout` version
574c2f30 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93 ci: Use clang-snapshot in "MSan" job
6894c964 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f6 Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c358 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177c ci: Bump `docker/build-push-action` version
b2a95a42 ci: Drop `tags` input for `docker/build-push-action`
122014ed ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce test: add --log option to display tests execution
95b9953e test: Add option to display all available tests
953f7b00 test: support running specific tests/modules targets
0302c1a3 test: add --help for command-line options
9ec3bfe2 test: adapt modules to the new test infrastructure
48789daf test: introduce (mini) unit test framework
baa26542 Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585f docs: Improve API docs of _context_set_illegal_callback
895f53d1 docs: Clarify that callback can be called more than once
de6af6ae Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
58178851 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078 build: Fix warnings in x86_64 assembly check
10dab907 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed bench: improve context creation in ECDH benchmark
7321bdf2 doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b4756543 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce7038 refactor: move 'gettime_i64()' to tests_common.h
0c91c560 test: introduce group order byte-array constant for deduplication
88be4e8d Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
36e76952 Merge bitcoin-core/secp256k1#1738: check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
399b582a Split memclear into two versions
4985ac0f Merge bitcoin-core/secp256k1#1737: doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
7ebaa134 check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
806de38b doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
03fb60ad Merge bitcoin-core/secp256k1#1681: doc: Recommend clang-cl when building on Windows
d93380fb Merge bitcoin-core/secp256k1#1731: schnorrsig: Securely clear buf containing k or its negation
8113671f Merge bitcoin-core/secp256k1#1729: hash: Use size_t instead of int for RFC6979 outlen copy
325d65a8 Rename and clear var containing k or -k
960ba5f9 Use size_t instead of int for RFC6979 outlen copy
73791243 ci: Add more tests for clang-cl
7379a5be doc: Recommend clang-cl when building on Windows
f36afb8b Merge bitcoin-core/secp256k1#1725: tests: refactor tagged hash verification
5153cf1c tests: refactor tagged hash tests
d2dcf520 Merge bitcoin-core/secp256k1#1726: docs: fix broken link to Tromer's cache.pdf paper
489a43d1 docs: fix broken link to eprint cache.pdf paper
d5997141 Merge bitcoin-core/secp256k1#1722: docs: Exclude modules' `bench_impl.h` headers from coverage report
0458def5 doc: Add `--gcov-ignore-parse-errors=all` option to `gcovr` invocations
1aecce59 doc: Add `--merge-mode-functions=separate` option to `gcovr` invocations
106a7cbf doc: Exclude modules' `bench_impl.h` headers from coverage report
a9e955d3 autotools, docs: Adjust help string for `--enable-coverage` option
e523e4f9 Merge bitcoin-core/secp256k1#1720: chore(ci): Fix typo in Dockerfile comment
24ba8ff1 chore(ci): Fix typo in Dockerfile comment
74b8068c Merge bitcoin-core/secp256k1#1717: test: update wycheproof test vectors
c25c3c8a test: update wycheproof test vectors
20e3b447 Merge bitcoin-core/secp256k1#1688: cmake: Avoid contaminating parent project's cache with `BUILD_SHARED_LIBS`
2c076d90 Merge bitcoin-core/secp256k1#1711: tests: update Wycheproof
7b07b229 cmake: Avoid contaminating parent project's cache with BUILD_SHARED_LIBS
5433648c Fix typos and spellings
9ea54c69 tests: update Wycheproof files
b9313c6e Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
7ab8b0cc release cleanup: bump version after 0.7.0

git-subtree-dir: Vendor/secp256k1
git-subtree-split: 1a53f4961f337b4d166c25fce72ef0dc88806618
github-actions Bot pushed a commit to 21-DOT-DEV/swift-secp256k1 that referenced this pull request Mar 1, 2026
1a53f496 Merge bitcoin-core/secp256k1#1808: Prepare for 0.7.1
20a209f1 release: prepare for 0.7.1
c4b6a81a changelog: update in preparation for the v0.7.1 release
ebb35882 Merge bitcoin-core/secp256k1#1796: bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
c09215f7 bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
471e3a13 Merge bitcoin-core/secp256k1#1800: sage: verify Eisenstein integer connection for GLV constants
29ac4d84 sage: verify Eisenstein integer connection for GLV constants
4721e077 Merge bitcoin-core/secp256k1#1793: doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
bd5ced1f doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
2d9137ce Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
f9a944ff Merge bitcoin-core/secp256k1#1790: doc: include arg -DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS=ON for cmake
0406cfc4 doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake
8d445730 Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
aa2a39c1 Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
540fec8a Merge bitcoin-core/secp256k1#1788: test: split monolithic ellswift test into independent cases
d822b290 test: split monolithic ellswift test into independent cases
ae00c552 Add VERIFY_CHECKs that flags are 0 or 1
5c751833 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
be5e4f02 Merge bitcoin-core/secp256k1#1779: Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3daab83a refactor: remove ret from secp256k1_ec_pubkey_serialize
8bcda186 test: Add non-NULL checks for "pointer of array" API functions
5a08c1bc Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3b5b03f3 doc/bench: Added cmake build options to bench error messages
e7f7083b Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
b6c2a3cd Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
f5e815f4 remove secp256k1_eckey_pubkey_serialize function
0d3659c5 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig)
adb76f82 use new `_eckey_pubkey_serialize{33,65}` functions in public API
fc7458ca introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions
c8206b1c Merge bitcoin-core/secp256k1#1771: ci: Use Python virtual environment in "x86_64-macos-native" job
f252da7e ci: Use Python virtual environment in "x86_64-macos-native" job
115b135f Merge bitcoin-core/secp256k1#1763: bench: Use `ALIGNMENT` macro instead of hardcoded value
2f73e528 group: Avoid using infinity field directly in other modules
153eea20 bench: Use `ALIGNMENT` macro instead of hardcoded value
26166c4f ecmult_multi: reduce strauss memory usage by 30%
7a2fff85 Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115 Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72 ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0 ci: Drop workaround for Valgrind older than 3.20.0
d543c0d9 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a3393 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d01480 ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc10 ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da1 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93 ci: Bump `actions/checkout` version
574c2f30 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93 ci: Use clang-snapshot in "MSan" job
6894c964 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f6 Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c358 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177c ci: Bump `docker/build-push-action` version
b2a95a42 ci: Drop `tags` input for `docker/build-push-action`
122014ed ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce test: add --log option to display tests execution
95b9953e test: Add option to display all available tests
953f7b00 test: support running specific tests/modules targets
0302c1a3 test: add --help for command-line options
9ec3bfe2 test: adapt modules to the new test infrastructure
48789daf test: introduce (mini) unit test framework
baa26542 Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585f docs: Improve API docs of _context_set_illegal_callback
895f53d1 docs: Clarify that callback can be called more than once
de6af6ae Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
58178851 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078 build: Fix warnings in x86_64 assembly check
10dab907 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed bench: improve context creation in ECDH benchmark
7321bdf2 doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b4756543 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce7038 refactor: move 'gettime_i64()' to tests_common.h
0c91c560 test: introduce group order byte-array constant for deduplication
88be4e8d Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
36e76952 Merge bitcoin-core/secp256k1#1738: check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
399b582a Split memclear into two versions
4985ac0f Merge bitcoin-core/secp256k1#1737: doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
7ebaa134 check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
806de38b doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
03fb60ad Merge bitcoin-core/secp256k1#1681: doc: Recommend clang-cl when building on Windows
d93380fb Merge bitcoin-core/secp256k1#1731: schnorrsig: Securely clear buf containing k or its negation
8113671f Merge bitcoin-core/secp256k1#1729: hash: Use size_t instead of int for RFC6979 outlen copy
325d65a8 Rename and clear var containing k or -k
960ba5f9 Use size_t instead of int for RFC6979 outlen copy
73791243 ci: Add more tests for clang-cl
7379a5be doc: Recommend clang-cl when building on Windows
f36afb8b Merge bitcoin-core/secp256k1#1725: tests: refactor tagged hash verification
5153cf1c tests: refactor tagged hash tests
d2dcf520 Merge bitcoin-core/secp256k1#1726: docs: fix broken link to Tromer's cache.pdf paper
489a43d1 docs: fix broken link to eprint cache.pdf paper
d5997141 Merge bitcoin-core/secp256k1#1722: docs: Exclude modules' `bench_impl.h` headers from coverage report
0458def5 doc: Add `--gcov-ignore-parse-errors=all` option to `gcovr` invocations
1aecce59 doc: Add `--merge-mode-functions=separate` option to `gcovr` invocations
106a7cbf doc: Exclude modules' `bench_impl.h` headers from coverage report
a9e955d3 autotools, docs: Adjust help string for `--enable-coverage` option
e523e4f9 Merge bitcoin-core/secp256k1#1720: chore(ci): Fix typo in Dockerfile comment
24ba8ff1 chore(ci): Fix typo in Dockerfile comment
74b8068c Merge bitcoin-core/secp256k1#1717: test: update wycheproof test vectors
c25c3c8a test: update wycheproof test vectors
20e3b447 Merge bitcoin-core/secp256k1#1688: cmake: Avoid contaminating parent project's cache with `BUILD_SHARED_LIBS`
2c076d90 Merge bitcoin-core/secp256k1#1711: tests: update Wycheproof
7b07b229 cmake: Avoid contaminating parent project's cache with BUILD_SHARED_LIBS
5433648c Fix typos and spellings
9ea54c69 tests: update Wycheproof files
b9313c6e Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
7ab8b0cc release cleanup: bump version after 0.7.0

git-subtree-dir: Vendor/secp256k1
git-subtree-split: 1a53f4961f337b4d166c25fce72ef0dc88806618
0x000000000019d6689c085ae165831e934ff76 pushed a commit to 21-DOT-DEV/swift-secp256k1 that referenced this pull request Mar 2, 2026
1a53f496 Merge bitcoin-core/secp256k1#1808: Prepare for 0.7.1
20a209f1 release: prepare for 0.7.1
c4b6a81a changelog: update in preparation for the v0.7.1 release
ebb35882 Merge bitcoin-core/secp256k1#1796: bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
c09215f7 bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
471e3a13 Merge bitcoin-core/secp256k1#1800: sage: verify Eisenstein integer connection for GLV constants
29ac4d84 sage: verify Eisenstein integer connection for GLV constants
4721e077 Merge bitcoin-core/secp256k1#1793: doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
bd5ced1f doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
2d9137ce Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
f9a944ff Merge bitcoin-core/secp256k1#1790: doc: include arg -DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS=ON for cmake
0406cfc4 doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake
8d445730 Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
aa2a39c1 Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
540fec8a Merge bitcoin-core/secp256k1#1788: test: split monolithic ellswift test into independent cases
d822b290 test: split monolithic ellswift test into independent cases
ae00c552 Add VERIFY_CHECKs that flags are 0 or 1
5c751833 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
be5e4f02 Merge bitcoin-core/secp256k1#1779: Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3daab83a refactor: remove ret from secp256k1_ec_pubkey_serialize
8bcda186 test: Add non-NULL checks for "pointer of array" API functions
5a08c1bc Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3b5b03f3 doc/bench: Added cmake build options to bench error messages
e7f7083b Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
b6c2a3cd Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
f5e815f4 remove secp256k1_eckey_pubkey_serialize function
0d3659c5 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig)
adb76f82 use new `_eckey_pubkey_serialize{33,65}` functions in public API
fc7458ca introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions
c8206b1c Merge bitcoin-core/secp256k1#1771: ci: Use Python virtual environment in "x86_64-macos-native" job
f252da7e ci: Use Python virtual environment in "x86_64-macos-native" job
115b135f Merge bitcoin-core/secp256k1#1763: bench: Use `ALIGNMENT` macro instead of hardcoded value
2f73e528 group: Avoid using infinity field directly in other modules
153eea20 bench: Use `ALIGNMENT` macro instead of hardcoded value
26166c4f ecmult_multi: reduce strauss memory usage by 30%
7a2fff85 Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115 Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72 ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0 ci: Drop workaround for Valgrind older than 3.20.0
d543c0d9 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a3393 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d01480 ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc10 ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da1 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93 ci: Bump `actions/checkout` version
574c2f30 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93 ci: Use clang-snapshot in "MSan" job
6894c964 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f6 Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c358 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177c ci: Bump `docker/build-push-action` version
b2a95a42 ci: Drop `tags` input for `docker/build-push-action`
122014ed ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce test: add --log option to display tests execution
95b9953e test: Add option to display all available tests
953f7b00 test: support running specific tests/modules targets
0302c1a3 test: add --help for command-line options
9ec3bfe2 test: adapt modules to the new test infrastructure
48789daf test: introduce (mini) unit test framework
baa26542 Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585f docs: Improve API docs of _context_set_illegal_callback
895f53d1 docs: Clarify that callback can be called more than once
de6af6ae Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
58178851 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078 build: Fix warnings in x86_64 assembly check
10dab907 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed bench: improve context creation in ECDH benchmark
7321bdf2 doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b4756543 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce7038 refactor: move 'gettime_i64()' to tests_common.h
0c91c560 test: introduce group order byte-array constant for deduplication
88be4e8d Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
36e76952 Merge bitcoin-core/secp256k1#1738: check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
399b582a Split memclear into two versions
4985ac0f Merge bitcoin-core/secp256k1#1737: doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
7ebaa134 check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
806de38b doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
03fb60ad Merge bitcoin-core/secp256k1#1681: doc: Recommend clang-cl when building on Windows
d93380fb Merge bitcoin-core/secp256k1#1731: schnorrsig: Securely clear buf containing k or its negation
8113671f Merge bitcoin-core/secp256k1#1729: hash: Use size_t instead of int for RFC6979 outlen copy
325d65a8 Rename and clear var containing k or -k
960ba5f9 Use size_t instead of int for RFC6979 outlen copy
73791243 ci: Add more tests for clang-cl
7379a5be doc: Recommend clang-cl when building on Windows
f36afb8b Merge bitcoin-core/secp256k1#1725: tests: refactor tagged hash verification
5153cf1c tests: refactor tagged hash tests
d2dcf520 Merge bitcoin-core/secp256k1#1726: docs: fix broken link to Tromer's cache.pdf paper
489a43d1 docs: fix broken link to eprint cache.pdf paper
d5997141 Merge bitcoin-core/secp256k1#1722: docs: Exclude modules' `bench_impl.h` headers from coverage report
0458def5 doc: Add `--gcov-ignore-parse-errors=all` option to `gcovr` invocations
1aecce59 doc: Add `--merge-mode-functions=separate` option to `gcovr` invocations
106a7cbf doc: Exclude modules' `bench_impl.h` headers from coverage report
a9e955d3 autotools, docs: Adjust help string for `--enable-coverage` option
e523e4f9 Merge bitcoin-core/secp256k1#1720: chore(ci): Fix typo in Dockerfile comment
24ba8ff1 chore(ci): Fix typo in Dockerfile comment
74b8068c Merge bitcoin-core/secp256k1#1717: test: update wycheproof test vectors
c25c3c8a test: update wycheproof test vectors
20e3b447 Merge bitcoin-core/secp256k1#1688: cmake: Avoid contaminating parent project's cache with `BUILD_SHARED_LIBS`
2c076d90 Merge bitcoin-core/secp256k1#1711: tests: update Wycheproof
7b07b229 cmake: Avoid contaminating parent project's cache with BUILD_SHARED_LIBS
5433648c Fix typos and spellings
9ea54c69 tests: update Wycheproof files
b9313c6e Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
7ab8b0cc release cleanup: bump version after 0.7.0

git-subtree-dir: Vendor/secp256k1
git-subtree-split: 1a53f4961f337b4d166c25fce72ef0dc88806618
csjones added a commit to 21-DOT-DEV/swift-secp256k1 that referenced this pull request Mar 2, 2026
* chore: clean stale extractions for secp256k1

* Squashed 'Vendor/secp256k1/' content from commit a660a497

git-subtree-dir: Vendor/secp256k1
git-subtree-split: a660a4976efe880bae7982ee410b9e0dc59ac983

* Squashed 'Vendor/secp256k1/' changes from a660a497..1a53f496

1a53f496 Merge bitcoin-core/secp256k1#1808: Prepare for 0.7.1
20a209f1 release: prepare for 0.7.1
c4b6a81a changelog: update in preparation for the v0.7.1 release
ebb35882 Merge bitcoin-core/secp256k1#1796: bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
c09215f7 bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
471e3a13 Merge bitcoin-core/secp256k1#1800: sage: verify Eisenstein integer connection for GLV constants
29ac4d84 sage: verify Eisenstein integer connection for GLV constants
4721e077 Merge bitcoin-core/secp256k1#1793: doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
bd5ced1f doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
2d9137ce Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
f9a944ff Merge bitcoin-core/secp256k1#1790: doc: include arg -DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS=ON for cmake
0406cfc4 doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake
8d445730 Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
aa2a39c1 Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
540fec8a Merge bitcoin-core/secp256k1#1788: test: split monolithic ellswift test into independent cases
d822b290 test: split monolithic ellswift test into independent cases
ae00c552 Add VERIFY_CHECKs that flags are 0 or 1
5c751833 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
be5e4f02 Merge bitcoin-core/secp256k1#1779: Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3daab83a refactor: remove ret from secp256k1_ec_pubkey_serialize
8bcda186 test: Add non-NULL checks for "pointer of array" API functions
5a08c1bc Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3b5b03f3 doc/bench: Added cmake build options to bench error messages
e7f7083b Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
b6c2a3cd Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
f5e815f4 remove secp256k1_eckey_pubkey_serialize function
0d3659c5 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig)
adb76f82 use new `_eckey_pubkey_serialize{33,65}` functions in public API
fc7458ca introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions
c8206b1c Merge bitcoin-core/secp256k1#1771: ci: Use Python virtual environment in "x86_64-macos-native" job
f252da7e ci: Use Python virtual environment in "x86_64-macos-native" job
115b135f Merge bitcoin-core/secp256k1#1763: bench: Use `ALIGNMENT` macro instead of hardcoded value
2f73e528 group: Avoid using infinity field directly in other modules
153eea20 bench: Use `ALIGNMENT` macro instead of hardcoded value
26166c4f ecmult_multi: reduce strauss memory usage by 30%
7a2fff85 Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115 Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72 ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0 ci: Drop workaround for Valgrind older than 3.20.0
d543c0d9 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a3393 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d01480 ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc10 ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da1 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93 ci: Bump `actions/checkout` version
574c2f30 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93 ci: Use clang-snapshot in "MSan" job
6894c964 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f6 Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c358 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177c ci: Bump `docker/build-push-action` version
b2a95a42 ci: Drop `tags` input for `docker/build-push-action`
122014ed ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce test: add --log option to display tests execution
95b9953e test: Add option to display all available tests
953f7b00 test: support running specific tests/modules targets
0302c1a3 test: add --help for command-line options
9ec3bfe2 test: adapt modules to the new test infrastructure
48789daf test: introduce (mini) unit test framework
baa26542 Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585f docs: Improve API docs of _context_set_illegal_callback
895f53d1 docs: Clarify that callback can be called more than once
de6af6ae Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
58178851 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078 build: Fix warnings in x86_64 assembly check
10dab907 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed bench: improve context creation in ECDH benchmark
7321bdf2 doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b4756543 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce7038 refactor: move 'gettime_i64()' to tests_common.h
0c91c560 test: introduce group order byte-array constant for deduplication
88be4e8d Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
36e76952 Merge bitcoin-core/secp256k1#1738: check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
399b582a Split memclear into two versions
4985ac0f Merge bitcoin-core/secp256k1#1737: doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
7ebaa134 check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
806de38b doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
03fb60ad Merge bitcoin-core/secp256k1#1681: doc: Recommend clang-cl when building on Windows
d93380fb Merge bitcoin-core/secp256k1#1731: schnorrsig: Securely clear buf containing k or its negation
8113671f Merge bitcoin-core/secp256k1#1729: hash: Use size_t instead of int for RFC6979 outlen copy
325d65a8 Rename and clear var containing k or -k
960ba5f9 Use size_t instead of int for RFC6979 outlen copy
73791243 ci: Add more tests for clang-cl
7379a5be doc: Recommend clang-cl when building on Windows
f36afb8b Merge bitcoin-core/secp256k1#1725: tests: refactor tagged hash verification
5153cf1c tests: refactor tagged hash tests
d2dcf520 Merge bitcoin-core/secp256k1#1726: docs: fix broken link to Tromer's cache.pdf paper
489a43d1 docs: fix broken link to eprint cache.pdf paper
d5997141 Merge bitcoin-core/secp256k1#1722: docs: Exclude modules' `bench_impl.h` headers from coverage report
0458def5 doc: Add `--gcov-ignore-parse-errors=all` option to `gcovr` invocations
1aecce59 doc: Add `--merge-mode-functions=separate` option to `gcovr` invocations
106a7cbf doc: Exclude modules' `bench_impl.h` headers from coverage report
a9e955d3 autotools, docs: Adjust help string for `--enable-coverage` option
e523e4f9 Merge bitcoin-core/secp256k1#1720: chore(ci): Fix typo in Dockerfile comment
24ba8ff1 chore(ci): Fix typo in Dockerfile comment
74b8068c Merge bitcoin-core/secp256k1#1717: test: update wycheproof test vectors
c25c3c8a test: update wycheproof test vectors
20e3b447 Merge bitcoin-core/secp256k1#1688: cmake: Avoid contaminating parent project's cache with `BUILD_SHARED_LIBS`
2c076d90 Merge bitcoin-core/secp256k1#1711: tests: update Wycheproof
7b07b229 cmake: Avoid contaminating parent project's cache with BUILD_SHARED_LIBS
5433648c Fix typos and spellings
9ea54c69 tests: update Wycheproof files
b9313c6e Merge bitcoin-core/secp256k1#1708: release cleanup: bump version after 0.7.0
7ab8b0cc release cleanup: bump version after 0.7.0

git-subtree-dir: Vendor/secp256k1
git-subtree-split: 1a53f4961f337b4d166c25fce72ef0dc88806618

* chore(deps): update subtree secp256k1 to v0.7.1

* refactor: remove unit test framework files

Remove unit_test.c and unit_test.h which are no longer needed after the test infrastructure refactoring. These files provided the mini unit test framework that has been replaced by the new test infrastructure.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: csjones <csjones@users.noreply.github.com>
real-or-random added a commit to BlockstreamResearch/secp256k1-zkp that referenced this pull request Mar 2, 2026
…50, 1719, 1734, 1759, 1758

7111d36 modules, tests: Port bitcoin-core/secp256k1#1734 to zkp-specific code (DarkWindman)
7699fe9 modules: Port bitcoin-core/secp256k1#1735 to zkp-specific code (DarkWindman)
c09519f ci: Drop workaround for Valgrind older than 3.20.0 (Hennadii Stepanov)
8bc50b7 ci: Switch to macOS 15 Sequoia Intel-based image (Hennadii Stepanov)
2f4546c test: add --log option to display tests execution (furszy)
95b9953 test: Add option to display all available tests (furszy)
953f7b0 test: support running specific tests/modules targets (furszy)
0302c1a test: add --help for command-line options (furszy)
9ec3bfe test: adapt modules to the new test infrastructure (furszy)
48789da test: introduce (mini) unit test framework (furszy)
9cce703 refactor: move 'gettime_i64()' to tests_common.h (furszy)
15d0148 ci: Drop default for `inputs.command` in `run-in-docker-action` (Hennadii Stepanov)
1decc49 ci: Use YAML anchor and aliases for repeated "CI script" steps (Hennadii Stepanov)
dff1bc1 ci, refactor: Generalize use of `matrix.configuration.env_vars` (Hennadii Stepanov)
4b644da ci: Use YAML anchor and aliases for repeated "Print logs" steps (Hennadii Stepanov)
a889cd9 ci: Bump `actions/checkout` version (Hennadii Stepanov)
574c2f3 ci: Use YAML anchor and aliases for repeated "Checkout" steps (Hennadii Stepanov)
53585f9 ci: Use clang-snapshot in "MSan" job (Hennadii Stepanov)
6894c96 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan (Hennadii Stepanov)
f163c35 ci: Set `DEBIAN_FRONTEND=noninteractive` (Hennadii Stepanov)
70ae177 ci: Bump `docker/build-push-action` version (Hennadii Stepanov)
b2a95a4 ci: Drop `tags` input for `docker/build-push-action` (Hennadii Stepanov)
122014e ci: Add `scope` parameter to `cache-{to,from}` options (Hennadii Stepanov)
4d90585 docs: Improve API docs of _context_set_illegal_callback (Tim Ruffing)
895f53d docs: Clarify that callback can be called more than once (Tim Ruffing)
dfe284e bench: improve context creation in ECDH benchmark (Sebastian Falbesoner)
ab56007 build: Fix warnings in x86_64 assembly check (Hennadii Stepanov)
7321bdf doc: clarify API doc of `secp256k1_ecdsa_recover` return value (Jonas Nick)
0c91c56 test: introduce group order byte-array constant for deduplication (Sebastian Falbesoner)
399b582 Split memclear into two versions (John Moffett)

Pull request description:

  Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
  Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
  Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
  Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
  Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
  Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
  Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
  Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
  Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
  Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
  Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
  Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0

  This PR can be recreated with `./contrib/sync-upstream.sh -b master range 7a2fff8`.

  Tips:
   * Use `git show --remerge-diff <pr-branch>` to show the conflict resolution in the merge commit.
   * Use `git read-tree --reset -u <pr-branch>` to replay these resolutions during the conflict resolution stage when recreating the PR branch locally.
     Be aware that this may discard your index as well as the uncommitted changes and untracked files in your worktree.

ACKs for top commit:
  real-or-random:
    ACK 7111d36

Tree-SHA512: 9f8fd21eee9ad3b7ea8d688f79783a43baffdeafb6b313372761ce368a24219a83c430c49070413f9972813ae03adde9a8660abfe4b0893b3700e241a81e5b13
0x000000000019d6689c085ae165831e934ff76 pushed a commit to 21-DOT-DEV/swift-secp256k1 that referenced this pull request Mar 2, 2026
56751a4c Merge BlockstreamResearch/secp256k1-zkp#331: Upstream PRs 1735, 1745, 1741, 1749, 1748, 1727, 1756, 1750, 1719, 1734, 1759, 1758
7111d365 modules, tests: Port bitcoin-core/secp256k1#1734 to zkp-specific code
7699fe9a modules: Port bitcoin-core/secp256k1#1735 to zkp-specific code
f1e52fac Merge commits '88be4e8d b4756543 10dab907 58178851 de6af6ae baa26542 2b7337f6 a44a3393 f44c1ebd d543c0d9 43e7b115 7a2fff85 ' into temp-merge-1758
7a2fff85 Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115 Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72 ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0 ci: Drop workaround for Valgrind older than 3.20.0
d543c0d9 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a3393 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d01480 ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc10 ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da1 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93 ci: Bump `actions/checkout` version
574c2f30 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93 ci: Use clang-snapshot in "MSan" job
6894c964 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f6 Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c358 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177c ci: Bump `docker/build-push-action` version
b2a95a42 ci: Drop `tags` input for `docker/build-push-action`
122014ed ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce test: add --log option to display tests execution
95b9953e test: Add option to display all available tests
953f7b00 test: support running specific tests/modules targets
0302c1a3 test: add --help for command-line options
9ec3bfe2 test: adapt modules to the new test infrastructure
48789daf test: introduce (mini) unit test framework
baa26542 Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585f docs: Improve API docs of _context_set_illegal_callback
895f53d1 docs: Clarify that callback can be called more than once
de6af6ae Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
58178851 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078 build: Fix warnings in x86_64 assembly check
10dab907 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed bench: improve context creation in ECDH benchmark
7321bdf2 doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b4756543 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce7038 refactor: move 'gettime_i64()' to tests_common.h
0c91c560 test: introduce group order byte-array constant for deduplication
88be4e8d Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
399b582a Split memclear into two versions

git-subtree-dir: Vendor/secp256k1-zkp
git-subtree-split: 56751a4cf069b48ec8562b81dedff7e306679d59
csjones pushed a commit to 21-DOT-DEV/swift-secp256k1 that referenced this pull request Mar 2, 2026
* chore: clean stale extractions for secp256k1-zkp

* Squashed 'Vendor/secp256k1-zkp/' changes from 42ae776d..56751a4c

56751a4c Merge BlockstreamResearch/secp256k1-zkp#331: Upstream PRs 1735, 1745, 1741, 1749, 1748, 1727, 1756, 1750, 1719, 1734, 1759, 1758
7111d365 modules, tests: Port bitcoin-core/secp256k1#1734 to zkp-specific code
7699fe9a modules: Port bitcoin-core/secp256k1#1735 to zkp-specific code
f1e52fac Merge commits '88be4e8d b4756543 10dab907 58178851 de6af6ae baa26542 2b7337f6 a44a3393 f44c1ebd d543c0d9 43e7b115 7a2fff85 ' into temp-merge-1758
7a2fff85 Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115 Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72 ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0 ci: Drop workaround for Valgrind older than 3.20.0
d543c0d9 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a3393 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d01480 ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc10 ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da1 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93 ci: Bump `actions/checkout` version
574c2f30 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93 ci: Use clang-snapshot in "MSan" job
6894c964 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f6 Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c358 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177c ci: Bump `docker/build-push-action` version
b2a95a42 ci: Drop `tags` input for `docker/build-push-action`
122014ed ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce test: add --log option to display tests execution
95b9953e test: Add option to display all available tests
953f7b00 test: support running specific tests/modules targets
0302c1a3 test: add --help for command-line options
9ec3bfe2 test: adapt modules to the new test infrastructure
48789daf test: introduce (mini) unit test framework
baa26542 Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585f docs: Improve API docs of _context_set_illegal_callback
895f53d1 docs: Clarify that callback can be called more than once
de6af6ae Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
58178851 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078 build: Fix warnings in x86_64 assembly check
10dab907 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed bench: improve context creation in ECDH benchmark
7321bdf2 doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b4756543 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce7038 refactor: move 'gettime_i64()' to tests_common.h
0c91c560 test: introduce group order byte-array constant for deduplication
88be4e8d Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
399b582a Split memclear into two versions

git-subtree-dir: Vendor/secp256k1-zkp
git-subtree-split: 56751a4cf069b48ec8562b81dedff7e306679d59

* chore(deps): update subtree secp256k1-zkp to 56751a4c

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
vmta added a commit to umkoin/umkoin that referenced this pull request Apr 26, 2026
ea174fe04 Merge bitcoin-core/secp256k1#1846: ci: Replace `ilammy/msvc-dev-cmd` with manual MSVC setup
285cb788e ci: Replace `ilammy/msvc-dev-cmd` with manual MSVC setup
7262adb4b Merge bitcoin-core/secp256k1#1841: gha: Bump deprecated GHA workflow dependencies
c5cd9d6d9 gha: Bump deprecated GHA workflow dependencies
95b702de3 Merge bitcoin-core/secp256k1#1839: ecdsa: VERIFY_CHECK result of _fe_set_b32_limit
634215f3f Merge bitcoin-core/secp256k1#1837: tests: Fix function pointer initialization C89 error in ellswift tests
43fca0ff5 ecdsa: VERIFY_CHECK result of _fe_set_b32_limit
b84635ed3 tests: Fix C89 function pointer initialization in ellswift tests
ffc25a273 Merge bitcoin-core/secp256k1#1834: ecmult: Document and test ng=NULL in ecmult
3a403639d eckey: Call ecmult with NULL instead of zero scalar
7e68c0c88 ecmult: Document and test ng=NULL in ecmult
1aafe1513 Merge bitcoin-core/secp256k1#1777: Make SHA256 compression runtime pluggable
b9cb1cbfd Merge bitcoin-core/secp256k1#1824: util: introduce and use `ARRAY_SIZE` macro
4d92a083b sha256: speed up writes using multi-block compression
0753f8b90 Add API to override SHA256 compression at runtime
fdb6a91a5 Introduce hash context to support pluggable SHA256 compression
c0a2aba08 Merge bitcoin-core/secp256k1#1811: bench: Update help functions in bench and bench_internal
10f546a2c Merge bitcoin-core/secp256k1#1832: testrand: Remove testrand_finish
8d0eda07e testrand: Remove testrand_finish
95e681584 Merge bitcoin-core/secp256k1#1825: hash: remove redundant `secp256k1_sha256_initialize` in tagged hash midstate functions
f48b1bfa5 hash: add midstate initializer and use it for tagged hashes
3019186a6 Merge bitcoin-core/secp256k1#1829: ci: Fix leftover use of old ECMULTGENPRECISION
79e9f2523 ci: Fix leftover use of old ECMULTGENPRECISION
dfe042feb Merge bitcoin-core/secp256k1#1828: Revert "ci, docker: Fix LLVM repository signature failure"
76e92cfee Revert "ci, docker: Fix LLVM repository signature failure"
ac561601b Merge bitcoin-core/secp256k1#1760: cmake: Add dynamic test discovery to improve parallelism
c7a7f732b Merge bitcoin-core/secp256k1#1821: ellswift: fix overflow flag handling in secp256k1_ellswift_xdh
921b9711e util: introduce and use `ARRAY_SIZE` macro
b99a94c38 Add tests for bad scalar inputs in ellswift XDH
307b49f1b ellswift: fix overflow flag handling in secp256k1_ellswift_xdh
322d0a435 Merge bitcoin-core/secp256k1#1823: ci: Load Docker image by ID from builder step
ed02466d3 ci: Load Docker image by ID from builder step
c49c9be50 bench: Update help functions in bench and bench_internal
1d146ac3e Merge bitcoin-core/secp256k1#1819: tests: Improve secp256k1_scalar_check_overflow tests (Issue #1812)
f47bbc07f test: add unit tests for secp256k1_scalar_check_overflow
d071aa56d Merge bitcoin-core/secp256k1#1815: refactor: remove unnecessary `malloc` result casts
99ab4a105 Merge bitcoin-core/secp256k1#1817: ci: Disable Docker build summary generation
c5da3bde9 Merge bitcoin-core/secp256k1#1818: ci: Enforce base-10 evaluation
97de5120c Merge bitcoin-core/secp256k1#1804: test: show both CMake and Autotools usage for ctime_tests
4fb7ccf5d ci: Enforce base-10 evaluation
3ae72e786 ci: Disable Docker build summary generation
97b3c4784 refactor: remove unnecessary `malloc` result casts
57315a698 Merge bitcoin-core/secp256k1#1813: Remove trailing spaces and introduce `-Wtrailing-whitespace=any` compiler flag
86cae58d2 build: Add `-Wleading-whitespace=spaces` compiler flag
fb229e760 build: Add `-Wtrailing-whitespace=any` compiler flag
13e3bee50 refactor: Remove trailing whitespace
453949ab2 Merge bitcoin-core/secp256k1#1816: ci: Rotate Docker cache keys
cd49c57e4 Merge bitcoin-core/secp256k1#1814: release process: mention the `[Unreleased]` link clearly
2ccff6eb7 ci: Add weekly schedule
2f18567d2 ci: Rotate Docker cache keys every 4 weeks
0ffb1749a ci, docker: Fix LLVM repository signature failure
0267b6551 release process: mention the `[Unreleased]` link clearly
1605b02f7 Merge bitcoin-core/secp256k1#1775: Add CMake build directory patterns to `.gitignore`
14e56970c Merge bitcoin-core/secp256k1#1794: ecmult: Use size_t for array indices
c7a52400d Merge bitcoin-core/secp256k1#1809: release cleanup: bump version after 0.7.1
ae7eb729c release cleanup: bump version after 0.7.1
1a53f4961 Merge bitcoin-core/secp256k1#1808: Prepare for 0.7.1
20a209f11 release: prepare for 0.7.1
c4b6a81a6 changelog: update in preparation for the v0.7.1 release
ebb35882d Merge bitcoin-core/secp256k1#1796: bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
c09215f7a bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
1bc74a22f test: show both Autotools and CMake usage for ctime_tests
471e3a130 Merge bitcoin-core/secp256k1#1800: sage: verify Eisenstein integer connection for GLV constants
8354618e0 cmake: Set `LABELS` property for tests
29f26ec3c cmake: Integrate DiscoverTests and normalize test names
29ac4d849 sage: verify Eisenstein integer connection for GLV constants
f95b263f2 cmake: Add DiscoverTests module
4ac651144 cmake, refactor: Deduplicate test-related code
4721e077b Merge bitcoin-core/secp256k1#1793: doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
bd5ced1fe doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
47eb70959 ecmult: Use size_t for array indices in _odd_multiplies_table
bb1d199de ecmult: Use size_t for array indices into tables
2d9137ce9 Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
f9a944ff2 Merge bitcoin-core/secp256k1#1790: doc: include arg -DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS=ON for cmake
0406cfc4d doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake
8d445730e Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
aa2a39c1a Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
540fec8ae Merge bitcoin-core/secp256k1#1788: test: split monolithic ellswift test into independent cases
d822b2902 test: split monolithic ellswift test into independent cases
ae00c552d Add VERIFY_CHECKs that flags are 0 or 1
5c7518334 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
be5e4f02f Merge bitcoin-core/secp256k1#1779: Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3daab83a6 refactor: remove ret from secp256k1_ec_pubkey_serialize
8bcda186d test: Add non-NULL checks for "pointer of array" API functions
5a08c1bcd Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3b5b03f30 doc/bench: Added cmake build options to bench error messages
e7f7083b5 Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
748c0fdd6 Add CMake build directory patterns to `.gitignore`
7eb86bdb0 autotools: Rename `build-aux` to `autotools-aux`
b6c2a3cd7 Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
f5e815f43 remove secp256k1_eckey_pubkey_serialize function
0d3659c54 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig)
adb76f82e use new `_eckey_pubkey_serialize{33,65}` functions in public API
fc7458ca3 introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions
c8206b1ce Merge bitcoin-core/secp256k1#1771: ci: Use Python virtual environment in "x86_64-macos-native" job
f252da7e6 ci: Use Python virtual environment in "x86_64-macos-native" job
115b135fe Merge bitcoin-core/secp256k1#1763: bench: Use `ALIGNMENT` macro instead of hardcoded value
2f73e5281 group: Avoid using infinity field directly in other modules
153eea20c bench: Use `ALIGNMENT` macro instead of hardcoded value
26166c4f5 ecmult_multi: reduce strauss memory usage by 30%
7a2fff85e Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115f Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72f ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0e ci: Drop workaround for Valgrind older than 3.20.0
d543c0d91 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd9 Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a33938 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d014804 ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a1 ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc107 ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da19 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93d ci: Bump `actions/checkout` version
574c2f308 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93b ci: Use clang-snapshot in "MSan" job
6894c964f Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f63 Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c3589 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177ca ci: Bump `docker/build-push-action` version
b2a95a420 ci: Drop `tags` input for `docker/build-push-action`
122014edb ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce5 test: add --log option to display tests execution
95b9953ea test: Add option to display all available tests
953f7b008 test: support running specific tests/modules targets
0302c1a3d test: add --help for command-line options
9ec3bfe22 test: adapt modules to the new test infrastructure
48789dafc test: introduce (mini) unit test framework
baa265429 Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585fe docs: Improve API docs of _context_set_illegal_callback
895f53d1c docs: Clarify that callback can be called more than once
de6af6ae3 Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
581788515 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078a build: Fix warnings in x86_64 assembly check
10dab907e Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed2 bench: improve context creation in ECDH benchmark
7321bdf27 doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b47565430 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce70386 refactor: move 'gettime_i64()' to tests_common.h
0c91c5604 test: introduce group order byte-array constant for deduplication
88be4e8d8 Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
399b582a5 Split memclear into two versions

git-subtree-dir: src/secp256k1
git-subtree-split: ea174fe045e1832548cd3b7090958afe9573ad2b
vmta added a commit to umkoin/umkoin that referenced this pull request Apr 27, 2026
ea174fe04 Merge bitcoin-core/secp256k1#1846: ci: Replace `ilammy/msvc-dev-cmd` with manual MSVC setup
285cb788e ci: Replace `ilammy/msvc-dev-cmd` with manual MSVC setup
7262adb4b Merge bitcoin-core/secp256k1#1841: gha: Bump deprecated GHA workflow dependencies
c5cd9d6d9 gha: Bump deprecated GHA workflow dependencies
95b702de3 Merge bitcoin-core/secp256k1#1839: ecdsa: VERIFY_CHECK result of _fe_set_b32_limit
634215f3f Merge bitcoin-core/secp256k1#1837: tests: Fix function pointer initialization C89 error in ellswift tests
43fca0ff5 ecdsa: VERIFY_CHECK result of _fe_set_b32_limit
b84635ed3 tests: Fix C89 function pointer initialization in ellswift tests
ffc25a273 Merge bitcoin-core/secp256k1#1834: ecmult: Document and test ng=NULL in ecmult
3a403639d eckey: Call ecmult with NULL instead of zero scalar
7e68c0c88 ecmult: Document and test ng=NULL in ecmult
1aafe1513 Merge bitcoin-core/secp256k1#1777: Make SHA256 compression runtime pluggable
b9cb1cbfd Merge bitcoin-core/secp256k1#1824: util: introduce and use `ARRAY_SIZE` macro
4d92a083b sha256: speed up writes using multi-block compression
0753f8b90 Add API to override SHA256 compression at runtime
fdb6a91a5 Introduce hash context to support pluggable SHA256 compression
c0a2aba08 Merge bitcoin-core/secp256k1#1811: bench: Update help functions in bench and bench_internal
10f546a2c Merge bitcoin-core/secp256k1#1832: testrand: Remove testrand_finish
8d0eda07e testrand: Remove testrand_finish
95e681584 Merge bitcoin-core/secp256k1#1825: hash: remove redundant `secp256k1_sha256_initialize` in tagged hash midstate functions
f48b1bfa5 hash: add midstate initializer and use it for tagged hashes
3019186a6 Merge bitcoin-core/secp256k1#1829: ci: Fix leftover use of old ECMULTGENPRECISION
79e9f2523 ci: Fix leftover use of old ECMULTGENPRECISION
dfe042feb Merge bitcoin-core/secp256k1#1828: Revert "ci, docker: Fix LLVM repository signature failure"
76e92cfee Revert "ci, docker: Fix LLVM repository signature failure"
ac561601b Merge bitcoin-core/secp256k1#1760: cmake: Add dynamic test discovery to improve parallelism
c7a7f732b Merge bitcoin-core/secp256k1#1821: ellswift: fix overflow flag handling in secp256k1_ellswift_xdh
921b9711e util: introduce and use `ARRAY_SIZE` macro
b99a94c38 Add tests for bad scalar inputs in ellswift XDH
307b49f1b ellswift: fix overflow flag handling in secp256k1_ellswift_xdh
322d0a435 Merge bitcoin-core/secp256k1#1823: ci: Load Docker image by ID from builder step
ed02466d3 ci: Load Docker image by ID from builder step
c49c9be50 bench: Update help functions in bench and bench_internal
1d146ac3e Merge bitcoin-core/secp256k1#1819: tests: Improve secp256k1_scalar_check_overflow tests (Issue #1812)
f47bbc07f test: add unit tests for secp256k1_scalar_check_overflow
d071aa56d Merge bitcoin-core/secp256k1#1815: refactor: remove unnecessary `malloc` result casts
99ab4a105 Merge bitcoin-core/secp256k1#1817: ci: Disable Docker build summary generation
c5da3bde9 Merge bitcoin-core/secp256k1#1818: ci: Enforce base-10 evaluation
97de5120c Merge bitcoin-core/secp256k1#1804: test: show both CMake and Autotools usage for ctime_tests
4fb7ccf5d ci: Enforce base-10 evaluation
3ae72e786 ci: Disable Docker build summary generation
97b3c4784 refactor: remove unnecessary `malloc` result casts
57315a698 Merge bitcoin-core/secp256k1#1813: Remove trailing spaces and introduce `-Wtrailing-whitespace=any` compiler flag
86cae58d2 build: Add `-Wleading-whitespace=spaces` compiler flag
fb229e760 build: Add `-Wtrailing-whitespace=any` compiler flag
13e3bee50 refactor: Remove trailing whitespace
453949ab2 Merge bitcoin-core/secp256k1#1816: ci: Rotate Docker cache keys
cd49c57e4 Merge bitcoin-core/secp256k1#1814: release process: mention the `[Unreleased]` link clearly
2ccff6eb7 ci: Add weekly schedule
2f18567d2 ci: Rotate Docker cache keys every 4 weeks
0ffb1749a ci, docker: Fix LLVM repository signature failure
0267b6551 release process: mention the `[Unreleased]` link clearly
1605b02f7 Merge bitcoin-core/secp256k1#1775: Add CMake build directory patterns to `.gitignore`
14e56970c Merge bitcoin-core/secp256k1#1794: ecmult: Use size_t for array indices
c7a52400d Merge bitcoin-core/secp256k1#1809: release cleanup: bump version after 0.7.1
ae7eb729c release cleanup: bump version after 0.7.1
1a53f4961 Merge bitcoin-core/secp256k1#1808: Prepare for 0.7.1
20a209f11 release: prepare for 0.7.1
c4b6a81a6 changelog: update in preparation for the v0.7.1 release
ebb35882d Merge bitcoin-core/secp256k1#1796: bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
c09215f7a bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
1bc74a22f test: show both Autotools and CMake usage for ctime_tests
471e3a130 Merge bitcoin-core/secp256k1#1800: sage: verify Eisenstein integer connection for GLV constants
8354618e0 cmake: Set `LABELS` property for tests
29f26ec3c cmake: Integrate DiscoverTests and normalize test names
29ac4d849 sage: verify Eisenstein integer connection for GLV constants
f95b263f2 cmake: Add DiscoverTests module
4ac651144 cmake, refactor: Deduplicate test-related code
4721e077b Merge bitcoin-core/secp256k1#1793: doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
bd5ced1fe doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
47eb70959 ecmult: Use size_t for array indices in _odd_multiplies_table
bb1d199de ecmult: Use size_t for array indices into tables
2d9137ce9 Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
f9a944ff2 Merge bitcoin-core/secp256k1#1790: doc: include arg -DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS=ON for cmake
0406cfc4d doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake
8d445730e Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
aa2a39c1a Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
540fec8ae Merge bitcoin-core/secp256k1#1788: test: split monolithic ellswift test into independent cases
d822b2902 test: split monolithic ellswift test into independent cases
ae00c552d Add VERIFY_CHECKs that flags are 0 or 1
5c7518334 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
be5e4f02f Merge bitcoin-core/secp256k1#1779: Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3daab83a6 refactor: remove ret from secp256k1_ec_pubkey_serialize
8bcda186d test: Add non-NULL checks for "pointer of array" API functions
5a08c1bcd Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
3b5b03f30 doc/bench: Added cmake build options to bench error messages
e7f7083b5 Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
748c0fdd6 Add CMake build directory patterns to `.gitignore`
7eb86bdb0 autotools: Rename `build-aux` to `autotools-aux`
b6c2a3cd7 Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
f5e815f43 remove secp256k1_eckey_pubkey_serialize function
0d3659c54 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig)
adb76f82e use new `_eckey_pubkey_serialize{33,65}` functions in public API
fc7458ca3 introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions
c8206b1ce Merge bitcoin-core/secp256k1#1771: ci: Use Python virtual environment in "x86_64-macos-native" job
f252da7e6 ci: Use Python virtual environment in "x86_64-macos-native" job
115b135fe Merge bitcoin-core/secp256k1#1763: bench: Use `ALIGNMENT` macro instead of hardcoded value
2f73e5281 group: Avoid using infinity field directly in other modules
153eea20c bench: Use `ALIGNMENT` macro instead of hardcoded value
26166c4f5 ecmult_multi: reduce strauss memory usage by 30%
7a2fff85e Merge bitcoin-core/secp256k1#1758: ci: Drop workaround for Valgrind older than 3.20.0
43e7b115f Merge bitcoin-core/secp256k1#1759: ci: Switch to macOS 15 Sequoia Intel-based image
8bc50b72f ci: Switch to macOS 15 Sequoia Intel-based image
c09519f0e ci: Drop workaround for Valgrind older than 3.20.0
d543c0d91 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd9 Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a33938 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d014804 ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a1 ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc107 ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da19 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93d ci: Bump `actions/checkout` version
574c2f308 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93b ci: Use clang-snapshot in "MSan" job
6894c964f Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f63 Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c3589 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177ca ci: Bump `docker/build-push-action` version
b2a95a420 ci: Drop `tags` input for `docker/build-push-action`
122014edb ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce5 test: add --log option to display tests execution
95b9953ea test: Add option to display all available tests
953f7b008 test: support running specific tests/modules targets
0302c1a3d test: add --help for command-line options
9ec3bfe22 test: adapt modules to the new test infrastructure
48789dafc test: introduce (mini) unit test framework
baa265429 Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585fe docs: Improve API docs of _context_set_illegal_callback
895f53d1c docs: Clarify that callback can be called more than once
de6af6ae3 Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
581788515 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078a build: Fix warnings in x86_64 assembly check
10dab907e Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed2 bench: improve context creation in ECDH benchmark
7321bdf27 doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b47565430 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce70386 refactor: move 'gettime_i64()' to tests_common.h
0c91c5604 test: introduce group order byte-array constant for deduplication
88be4e8d8 Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
399b582a5 Split memclear into two versions

git-subtree-dir: src/secp256k1
git-subtree-split: ea174fe045e1832548cd3b7090958afe9573ad2b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Running a single test file More parallel tests

8 participants