Skip to content

ecmult: Use size_t for array indices - #1794

Merged
real-or-random merged 2 commits into
bitcoin-core:masterfrom
real-or-random:202601-ecmult-size_t
Jan 27, 2026
Merged

ecmult: Use size_t for array indices#1794
real-or-random merged 2 commits into
bitcoin-core:masterfrom
real-or-random:202601-ecmult-size_t

Conversation

@real-or-random

Copy link
Copy Markdown
Contributor

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

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

@hebasto

hebasto commented Jan 7, 2026

Copy link
Copy Markdown
Member

Concept ACK.

I came to the same idea while working on #1791, but left it for later :)

@hebasto hebasto left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ACK 9e7aede, I have reviewed the code and it looks OK.

However, there are still more cases to address:

  • size_t i in:

    secp256k1/src/ecmult_impl.h

    Lines 339 to 348 in 2d9137c

    for (np = 0; np < no; ++np) {
    if (i < state->ps[np].bits_na_1 && (n = state->ps[np].wnaf_na_1[i])) {
    secp256k1_ecmult_table_get_ge(&tmpa, state->pre_a + np * ECMULT_TABLE_SIZE(WINDOW_A), n, WINDOW_A);
    secp256k1_gej_add_ge_var(r, r, &tmpa, NULL);
    }
    if (i < state->ps[np].bits_na_lam && (n = state->ps[np].wnaf_na_lam[i])) {
    secp256k1_ecmult_table_get_ge_lambda(&tmpa, state->pre_a + np * ECMULT_TABLE_SIZE(WINDOW_A), state->aux + np * ECMULT_TABLE_SIZE(WINDOW_A), n, WINDOW_A);
    secp256k1_gej_add_ge_var(r, r, &tmpa, NULL);
    }
    }
  • size_t m in:
    for (m = 1; m < ECMULT_CONST_TABLE_SIZE; m++) { \
    /* This loop is used to avoid secret data in array indices. See
    * the comment in ecmult_gen_impl.h for rationale. */ \
    secp256k1_fe_cmov(&(r)->x, &(pre)[m].x, m == index); \
    secp256k1_fe_cmov(&(r)->y, &(pre)[m].y, m == index); \
    } \
  • size_t i in:
    for (i = 0; i < ECMULT_CONST_TABLE_SIZE; i++) {
    secp256k1_ge_mul_lambda(&pre_a_lam[i], &pre_a[i]);
    }

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

It does.

@real-or-random

real-or-random commented Jan 7, 2026

Copy link
Copy Markdown
Contributor Author
  • size_t i in:

    secp256k1/src/ecmult_impl.h

    Lines 339 to 348 in 2d9137c

    for (np = 0; np < no; ++np) {
    if (i < state->ps[np].bits_na_1 && (n = state->ps[np].wnaf_na_1[i])) {
    secp256k1_ecmult_table_get_ge(&tmpa, state->pre_a + np * ECMULT_TABLE_SIZE(WINDOW_A), n, WINDOW_A);
    secp256k1_gej_add_ge_var(r, r, &tmpa, NULL);
    }
    if (i < state->ps[np].bits_na_lam && (n = state->ps[np].wnaf_na_lam[i])) {
    secp256k1_ecmult_table_get_ge_lambda(&tmpa, state->pre_a + np * ECMULT_TABLE_SIZE(WINDOW_A), state->aux + np * ECMULT_TABLE_SIZE(WINDOW_A), n, WINDOW_A);
    secp256k1_gej_add_ge_var(r, r, &tmpa, NULL);
    }
    }

I think there's no perfect solution here, but fixing this one will open up the entire business of cleaning up types in secp256k1_ecmult_wnaf (see #1795), and I think this should be a separate PR.

The same is true for the stuff in ecmult_gen; I think this could be a separate PR.

@hebasto hebasto left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

re-ACK 47eb709.

@jonasnick jonasnick left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ACK 47eb709

@real-or-random

Copy link
Copy Markdown
Contributor Author

@theStack Want to review this?

@theStack theStack left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ACK 47eb709

@real-or-random
real-or-random merged commit 14e5697 into bitcoin-core:master Jan 27, 2026
122 checks passed
fanquake added a commit to fanquake/bitcoin that referenced this pull request Jan 27, 2026
14e56970cb Merge bitcoin-core/secp256k1#1794: ecmult: Use size_t for array indices
c7a52400d6 Merge bitcoin-core/secp256k1#1809: release cleanup: bump version after 0.7.1
ae7eb729c0 release cleanup: bump version after 0.7.1
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
47eb70959a ecmult: Use size_t for array indices in _odd_multiplies_table
bb1d199de5 ecmult: Use size_t for array indices into tables
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

git-subtree-dir: src/secp256k1
git-subtree-split: 14e56970cba37ffe4ee992c1e08707a16e22e345
fjahr added a commit to fjahr/bitcoin that referenced this pull request Jan 31, 2026
15ea24cb8c batch: make add functions void & introduce reset
bfcc479a35 batch: remove `batch_usable` api
15e388e096 batch: make tests functions internal & static
aac054a373 fix typos & index the right inputs for benchmarks
c07e710003 batch: remove experimental status
49fb753393 test: fix ci failures
e96dabb4af batch: Generate speedup graphs
b0b3425cd4 batch, extrakeys: Add benchmarks
9d5115156b batch: Add tests for batch_add_* APIs
668199c917 batch,ecmult: Add tests for core batch APIs and strauss_batch refactor
53a158203f batch: Add example
b40b4186b8 batch: Add batch_add_* APIs
2bed1cb6ee batch, ecmult: Add batch_verify and refactor strauss_batch
8f13eeae31 batch: Add create and destroy APIs
0b6b0c87ad batch: Initialize an experimental batch module
REVERT: 14e56970cb Merge bitcoin-core/secp256k1#1794: ecmult: Use size_t for array indices
REVERT: c7a52400d6 Merge bitcoin-core/secp256k1#1809: release cleanup: bump version after 0.7.1
REVERT: ae7eb729c0 release cleanup: bump version after 0.7.1
REVERT: 1a53f4961f Merge bitcoin-core/secp256k1#1808: Prepare for 0.7.1
REVERT: 20a209f11c release: prepare for 0.7.1
REVERT: c4b6a81a60 changelog: update in preparation for the v0.7.1 release
REVERT: ebb35882da Merge bitcoin-core/secp256k1#1796: bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
REVERT: c09215f7af bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS
REVERT: 471e3a130d Merge bitcoin-core/secp256k1#1800: sage: verify Eisenstein integer connection for GLV constants
REVERT: 29ac4d8491 sage: verify Eisenstein integer connection for GLV constants
REVERT: 4721e077b4 Merge bitcoin-core/secp256k1#1793: doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
REVERT: bd5ced1fe1 doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult
REVERT: 47eb70959a ecmult: Use size_t for array indices in _odd_multiplies_table
REVERT: bb1d199de5 ecmult: Use size_t for array indices into tables
REVERT: 2d9137ce9d Merge bitcoin-core/secp256k1#1764: group: Avoid using infinity field directly in other modules
REVERT: f9a944ff2d Merge bitcoin-core/secp256k1#1790: doc: include arg -DSECP256K1_USE_EXTERNAL_DEFAULT_CALLBACKS=ON for cmake
REVERT: 0406cfc4d1 doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake
REVERT: 8d445730ec Merge bitcoin-core/secp256k1#1783: Add VERIFY_CHECKs and documentation that flags must be 0 or 1
REVERT: aa2a39c1a7 Merge bitcoin-core/secp256k1#1778: doc/bench: Added cmake build options to bench error messages
REVERT: 540fec8ae9 Merge bitcoin-core/secp256k1#1788: test: split monolithic ellswift test into independent cases
REVERT: d822b29021 test: split monolithic ellswift test into independent cases
REVERT: ae00c552df Add VERIFY_CHECKs that flags are 0 or 1
REVERT: 5c75183344 Merge bitcoin-core/secp256k1#1784: refactor: remove ret from secp256k1_ec_pubkey_serialize
REVERT: be5e4f02fd Merge bitcoin-core/secp256k1#1779: Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
REVERT: 3daab83a60 refactor: remove ret from secp256k1_ec_pubkey_serialize
REVERT: 8bcda186d2 test: Add non-NULL checks for "pointer of array" API functions
REVERT: 5a08c1bcdc Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL
REVERT: 3b5b03f301 doc/bench: Added cmake build options to bench error messages
REVERT: e7f7083b53 Merge bitcoin-core/secp256k1#1774: refactor: split up internal pubkey serialization function into compressed/uncompressed variants
REVERT: b6c2a3cd77 Merge bitcoin-core/secp256k1#1761: ecmult_multi: reduce strauss memory usage by 30%
REVERT: f5e815f430 remove secp256k1_eckey_pubkey_serialize function
REVERT: 0d3659c547 use new `_eckey_pubkey_serialize{33,65}` functions in modules (ellswift,musig)
REVERT: adb76f82ea use new `_eckey_pubkey_serialize{33,65}` functions in public API
REVERT: fc7458ca3e introduce `secp256k1_eckey_pubkey_serialize{33,65}` functions
REVERT: 2f73e5281d group: Avoid using infinity field directly in other modules
REVERT: 26166c4f5f ecmult_multi: reduce strauss memory usage by 30%

git-subtree-dir: src/secp256k1
git-subtree-split: 15ea24cb8c1bd239a7a39939da1952cf6d3a35b0
fjahr added a commit to fjahr/bitcoin that referenced this pull request Feb 8, 2026
4d79f01fd6 fullagg: Add docs
0227909997 fullagg: Add to build system
5f8445fbb4 fullagg: Add to CI
31151b5ce1 fullagg: Add example
6fc2f996ae fullagg: Add include file
51aec0a6ed fullagg: Add module
b6f2b94ec0 refactor: Move parsing helpers from musig to eckey
7f237a8789 Experimental: Add incremental half-aggregation for Schnorr signatures
4dffc4ce47 batch: make add functions void & introduce reset
6bd5cf1d6b batch: remove `batch_usable` api
ea2aee51a9 batch: make tests functions internal & static
3ca67a134e fix typos & index the right inputs for benchmarks
999067412b batch: remove experimental status
5febd610bf test: fix ci failures
0f18ef9955 batch: Generate speedup graphs
d69ff1a774 batch, extrakeys: Add benchmarks
4d50e05cb3 batch: Add tests for batch_add_* APIs
4661eced0a batch,ecmult: Add tests for core batch APIs and strauss_batch refactor
e7766bce41 batch: Add example
6a9bcc29ac batch: Add batch_add_* APIs
646c4e5ecb batch, ecmult: Add batch_verify and refactor strauss_batch
58c589af10 batch: Add create and destroy APIs
99c297cede batch: Initialize an experimental batch module
97de5120cf Merge bitcoin-core/secp256k1#1804: test: show both CMake and Autotools usage for ctime_tests
57315a6985 Merge bitcoin-core/secp256k1#1813: Remove trailing spaces and introduce `-Wtrailing-whitespace=any` compiler flag
86cae58d2f build: Add `-Wleading-whitespace=spaces` compiler flag
fb229e7602 build: Add `-Wtrailing-whitespace=any` compiler flag
13e3bee504 refactor: Remove trailing whitespace
453949ab2a Merge bitcoin-core/secp256k1#1816: ci: Rotate Docker cache keys
cd49c57e44 Merge bitcoin-core/secp256k1#1814: release process: mention the `[Unreleased]` link clearly
2ccff6eb73 ci: Add weekly schedule
2f18567d24 ci: Rotate Docker cache keys every 4 weeks
0ffb1749a5 ci, docker: Fix LLVM repository signature failure
0267b65512 release process: mention the `[Unreleased]` link clearly
1605b02f75 Merge bitcoin-core/secp256k1#1775: Add CMake build directory patterns to `.gitignore`
14e56970cb Merge bitcoin-core/secp256k1#1794: ecmult: Use size_t for array indices
c7a52400d6 Merge bitcoin-core/secp256k1#1809: release cleanup: bump version after 0.7.1
ae7eb729c0 release cleanup: bump version after 0.7.1
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
1bc74a22f8 test: show both Autotools and CMake usage for ctime_tests
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
47eb70959a ecmult: Use size_t for array indices in _odd_multiplies_table
bb1d199de5 ecmult: Use size_t for array indices into tables
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
748c0fdd67 Add CMake build directory patterns to `.gitignore`
7eb86bdb01 autotools: Rename `build-aux` to `autotools-aux`
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
2f73e5281d group: Avoid using infinity field directly in other modules
26166c4f5f ecmult_multi: reduce strauss memory usage by 30%
REVERT: 15ea24cb8c batch: make add functions void & introduce reset
REVERT: bfcc479a35 batch: remove `batch_usable` api
REVERT: 15e388e096 batch: make tests functions internal & static
REVERT: aac054a373 fix typos & index the right inputs for benchmarks
REVERT: c07e710003 batch: remove experimental status
REVERT: 49fb753393 test: fix ci failures
REVERT: e96dabb4af batch: Generate speedup graphs
REVERT: b0b3425cd4 batch, extrakeys: Add benchmarks
REVERT: 9d5115156b batch: Add tests for batch_add_* APIs
REVERT: 668199c917 batch,ecmult: Add tests for core batch APIs and strauss_batch refactor
REVERT: 53a158203f batch: Add example
REVERT: b40b4186b8 batch: Add batch_add_* APIs
REVERT: 2bed1cb6ee batch, ecmult: Add batch_verify and refactor strauss_batch
REVERT: 8f13eeae31 batch: Add create and destroy APIs
REVERT: 0b6b0c87ad batch: Initialize an experimental batch module

git-subtree-dir: src/secp256k1
git-subtree-split: 4d79f01fd63f5f8ada532ce58911e64a964628d8
real-or-random added a commit to BlockstreamResearch/secp256k1-zkp that referenced this pull request Mar 4, 2026
…17, 1815, 1819, 1823, 1821, 1760, 1828, 1829, 1825, 1832, 1811

48cbd78 modules: Port bitcoin-core/secp256k1#1825 to zkp-specific code (mllwchrry)
126501f modules: Port bitcoin-core/secp256k1#1815 to zkp-specific code (mllwchrry)
c49c9be bench: Update help functions in bench and bench_internal (kevkevinpal)
8d0eda0 testrand: Remove testrand_finish (Tim Ruffing)
f48b1bf hash: add midstate initializer and use it for tagged hashes (w0xlt)
79e9f25 ci: Fix leftover use of old ECMULTGENPRECISION (Tim Ruffing)
76e92cf Revert "ci, docker: Fix LLVM repository signature failure" (Hennadii Stepanov)
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)
b99a94c Add tests for bad scalar inputs in ellswift XDH (gzJx0DuTRHytnHe7P5RmMbPf3wKy2BztweVGXTf)
307b49f ellswift: fix overflow flag handling in secp256k1_ellswift_xdh (gzJx0DuTRHytnHe7P5RmMbPf3wKy2BztweVGXTf)
ed02466 ci: Load Docker image by ID from builder step (Hennadii Stepanov)
f47bbc0 test: add unit tests for secp256k1_scalar_check_overflow (Rohit Yadav)
97b3c47 refactor: remove unnecessary `malloc` result casts (Sebastian Falbesoner)
3ae72e7 ci: Disable Docker build summary generation (Hennadii Stepanov)
4fb7ccf ci: Enforce base-10 evaluation (Hennadii Stepanov)
1bc74a2 test: show both Autotools and CMake usage for ctime_tests (8144225309)
86cae58 build: Add `-Wleading-whitespace=spaces` compiler flag (Hennadii Stepanov)
fb229e7 build: Add `-Wtrailing-whitespace=any` compiler flag (Hennadii Stepanov)
13e3bee refactor: Remove trailing whitespace (Hennadii Stepanov)
2ccff6e ci: Add weekly schedule (Hennadii Stepanov)
2f18567 ci: Rotate Docker cache keys every 4 weeks (Hennadii Stepanov)
0ffb174 ci, docker: Fix LLVM repository signature failure (Hennadii Stepanov)
0267b65 release process: mention the `[Unreleased]` link clearly (Jonas Nick)
748c0fd Add CMake build directory patterns to `.gitignore` (Hennadii Stepanov)
7eb86bd autotools: Rename `build-aux` to `autotools-aux` (Hennadii Stepanov)
47eb709 ecmult: Use size_t for array indices in _odd_multiplies_table (Tim Ruffing)
bb1d199 ecmult: Use size_t for array indices into tables (Tim Ruffing)

Pull request description:

  Merge bitcoin-core/secp256k1#1794: ecmult: Use size_t for array indices
  Merge bitcoin-core/secp256k1#1775: Add CMake build directory patterns to `.gitignore`
  Merge bitcoin-core/secp256k1#1814: release process: mention the `[Unreleased]` link clearly
  Merge bitcoin-core/secp256k1#1816: ci: Rotate Docker cache keys
  Merge bitcoin-core/secp256k1#1813: Remove trailing spaces and introduce `-Wtrailing-whitespace=any` compiler flag
  Merge bitcoin-core/secp256k1#1804: test: show both CMake and Autotools usage for ctime_tests
  Merge bitcoin-core/secp256k1#1818: ci: Enforce base-10 evaluation
  Merge bitcoin-core/secp256k1#1817: ci: Disable Docker build summary generation
  Merge bitcoin-core/secp256k1#1815: refactor: remove unnecessary `malloc` result casts
  Merge bitcoin-core/secp256k1#1819: tests: Improve secp256k1_scalar_check_overflow tests (Issue #1812)
  Merge bitcoin-core/secp256k1#1823: ci: Load Docker image by ID from builder step
  Merge bitcoin-core/secp256k1#1821: ellswift: fix overflow flag handling in secp256k1_ellswift_xdh
  Merge bitcoin-core/secp256k1#1760: cmake: Add dynamic test discovery to improve parallelism
  Merge bitcoin-core/secp256k1#1828: Revert "ci, docker: Fix LLVM repository signature failure"
  Merge bitcoin-core/secp256k1#1829: ci: Fix leftover use of old ECMULTGENPRECISION
  Merge bitcoin-core/secp256k1#1825: hash: remove redundant `secp256k1_sha256_initialize` in tagged hash midstate functions
  Merge bitcoin-core/secp256k1#1832: testrand: Remove testrand_finish
  Merge bitcoin-core/secp256k1#1811: bench: Update help functions in bench and bench_internal

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

  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 48cbd78

Tree-SHA512: 1ea96bf3b7458c02bb472ca7423eb21defe6640ea58a993ac24603d6a8d44ac9bbeab7e2ca5f993918fa1388b9e69b308dcc67277afffd55cb833ecf07051c75
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
vmta added a commit to umkoin/umkoin that referenced this pull request Jun 9, 2026
0f4a7e6bf Merge bitcoin-core/secp256k1#1855: bench: add internal benchmark for `secp256k1_fe_normalize_var`
13db747f2 Merge bitcoin-core/secp256k1#1861: refactor: introduce `_ecmult_gen_ge` helper (preventing accidental gej leaks)
9e017e506 refactor: rename `_ecmult_gen` -> `_ecmult_gen_gej` for consistency
a3296d5e2 refactor: introduce `_ecmult_gen_ge` helper (preventing accidental gej leaks)
c63062380 Merge bitcoin-core/secp256k1#1852: Add exhaustive test for ECDH module
240578eef bench: add internal benchmark for `secp256k1_fe_normalize_var`
5698e66c6 Add exhaustive test for ECDH module
a39093de1 Merge bitcoin-core/secp256k1#1851: doc: correct API docs for ECDSA signing out-params (s/array/signature object/)
8363a2d8d Merge bitcoin-core/secp256k1#1854: tests: compare full MuSig aggregate nonce
af1fdd121 tests: compare full MuSig aggregate nonce
40a0d874a doc: correct API docs for ECDSA signing out-params (s/array/signature object/)
b11340b3c Merge bitcoin-core/secp256k1#1849: musig: always clear out secret key in `secp256k1_musig_nonce_gen_counter`
8479eafa5 musig: always clear out secret key in `secp256k1_musig_nonce_gen_counter`
c1a9e4fe6 Merge bitcoin-core/secp256k1#1848: ci: Bump GCC snapshot major version to 17
3cca6451a ci: Bump GCC snapshot major version to 17
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: 0f4a7e6bf9d971addb2b851df7cd2777fc62b212
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.

4 participants