BC
← All projectsBitcoin Core

libsecp256k1

High-assurance secp256k1 elliptic-curve library used throughout the Bitcoin ecosystem.

BitcoinCryptographic librariesNormal
Repository coverage

205 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

64security candidates6second-pass queue193AI analyses
18commits · 30 days
55commits · 60 days
106commits · 180 days
184commits · 365 days
Backfill bands
Aug 5 → Feb 682 seen1 candidatesComplete
Feb 6 → Jun 625 seen2 candidatesComplete
Jun 6 → Jul 619 seen1 candidatesComplete
Jul 6 → Aug 548 seen1 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

70/100 average clarity
63Strong · 80–100
80Adequate · 60–79
59Thin · 40–59
3Opaque · 0–39
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Sebastian Falbesoner451842066
merge-script191113093
Hennadii Stepanov45645064
Tim Ruffing22622055
furszy13413087
josibake949066
Lőrinc13313077
kevkevinpal626064
John Moffett424069
Bruno Garcia322090
copilot-swe-agent[bot]323074
Jonas Nick717053
Analysis record

Published AI watches

Last scanned 51 minutes ago

Informational 15 AI analysisMessage 91 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1840: ci: Simplify module configuration and extend test coverage

This change only edits the project's automated continuous-integration (CI) configuration file. It turns on all optional cryptographic modules by default in CI and adds test runs that disable each module one at a time. There is no change to…

No source-code changesNo build-system logic changesCI-only workflow refactor
9701113fby merge-script+29−1001 file
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1918: refactor: split `ge_parse` into explicit variants (compressed, uncompressed, uncompressed+hybrid)

This commit is a code cleanup (refactor) that splits one internal public-key parsing helper into three clearly named versions. It does not change what keys the public API accepts or rejects, and it adds more tests. There is no security vul…

Refactor only: no change to accepted public-key formats or validation rulesPublic API behavior preserved: 33-byte compressed and 65-byte uncompressed/hybrid still acceptedInternal fixed-size callers now use size-specific parser, reducing risk of accidental hybrid acceptance in future code
46db7871by merge-script+117−346 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1893: test: cover schnorrsig_sign_custom in constant-time tests

This commit only adds new test code to check that a specific Schnorr signing function behaves in a constant-time manner under Valgrind. It does not change any production cryptographic code, so it cannot introduce or fix a security vulnerab…

Only test file src/ctime_tests.c changedNo production cryptographic code modifiedAdds constant-time (CHECKMEM/Valgrind) coverage for schnorrsig_sign_custom
99ae2312by merge-script+41−01 file
No security note in commit
Informational 14 AI analysisMessage 100 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1923: group: VERIFY input/output ge/gej/fe exhaustively

This commit is a code-quality and defensive-programming change. It restructures internal elliptic-curve helper functions so that runtime consistency checks (VERIFY macros) wrap the real implementation and cannot be skipped by an early 'ret…

Defensive restructuring of assertion wrappersAdds missing VERIFY post-conditions on group element outputsNo functional cryptographic change
a7f26437by merge-script+253−1452 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1928: tests: add coverage for exact-size DER signature serialization

This commit only adds new test code to check that a specific function behaves correctly when given a buffer of exactly the right size. It does not change any production code, fix a bug, or introduce a vulnerability. It is a routine improve…

aa0af2faby merge-script+12−01 file
No security note in commit
Informational 13 AI analysisMessage 88 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

tests: add coverage for exact-size DER signature serialization

This commit only adds a new test case. It checks that a DER signature can be written into a buffer that is exactly the right size, and that writing into a buffer one byte too small fails correctly. There is no change to the actual library …

500ccb60by Bruno Garcia+12−01 file
No security note in commit
Informational 19 AI analysisMessage 96 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1924: tests: add coverage for the DER long form length encoding

This commit only adds new test cases to the libsecp256k1 test suite. It does not change any production cryptographic code. The new tests check that the DER signature parser correctly handles an unusual but valid length-encoding format (the…

Adds test coverage for DER long-form length encoding acceptance and rejectionTargets secp256k1_der_read_len boundary conditionsNo changes to src/ecdsa_impl.h or any production parsing logic
a9a61831by merge-script+117−01 file
No security note in commit
Informational 15 AI analysisMessage 88 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

tests: add coverage for the DER long form length encoding

This commit only adds new test cases to the project's test suite. It does not change any production parsing code. The tests verify that the existing DER signature parser correctly accepts valid long-form length encodings and rejects invali…

ddb1dfa7by Bruno Garcia+117−01 file
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1908: refactor: replace `_get_hash_context` with direct `->hash_ctx` access

This commit is a straightforward code cleanup: it removes a small internal helper function named secp256k1_get_hash_context() and replaces every call with direct access to the context's hash_ctx field. The behavior is identical; no securit…

bae6b89aby merge-script+67−7116 files
No security note in commit
Informational 15 AI analysisMessage 98 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1915: refactor: Move (de)ser helpers from musig and eckey to group

This is a routine internal code cleanup: it moves helper functions that convert between group elements and byte strings from one internal file to another, and renames a couple of private-key tweak helpers from 'privkey' to 'seckey'. The pu…

86c7cbafby merge-script+114−10710 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

refactor: Rename privkey to seckey in eckey helpers

This commit is a simple renaming of internal function names from 'privkey' to 'seckey' to match current project terminology. No behavior of the code changes, and there is no security fix or vulnerability introduced.

bfd40bd0by Fabian Jahr+6−63 files
No security note in commit
Informational 18 AI analysisMessage 98 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1916: ecdh/ellswift: simplify seckey loading with `_scalar_set_b32_seckey`

This is a small internal cleanup in Bitcoin Core's secp256k1 cryptography library. It replaces a manual secret-key validity check (overflow plus zero) with an existing helper function that does the same thing. The behavior is intended to b…

No security-relevant behavioral change is described or evidentRefactoring only: equivalent overflow-and-zero check via existing helperReturn value logic preserved with added parentheses for warning avoidance
a37d7cc0by merge-script+8−112 files
No security note in commit
Informational 15 AI analysisMessage 86 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1911: refactor: rename `ctx` param to `ecmult_gen_ctx` where applicable

This is a pure code cleanup change: it renames a function parameter from 'ctx' to 'ecmult_gen_ctx' in several internal files and moves the asterisk in pointer declarations for style consistency. No behavior, logic, or security properties o…

3d69f4ceby merge-script+41−414 files
No security note in commit
Low 27 AI analysisMessage 86 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1910: scratch: reject sizes that overflow when added to header

This commit fixes an integer overflow bug in the library's internal scratch-space memory allocator. If a caller requested a scratch space with a size near the maximum possible value, adding the allocator's own bookkeeping header could wrap…

Integer overflow in size calculationHeap allocation size mismatchPotential buffer overflow / out-of-bounds write
439278a6by merge-script+14−22 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 93 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

refactor: rename `ctx` param to `ecmult_gen_ctx` where applicable

This commit is a pure code cleanup: it renames a function parameter from 'ctx' to 'ecmult_gen_ctx' in several related files and moves the asterisk in pointer declarations from the left side to the right side (e.g., 'type* arg' to 'type *ar…

81a5a756by Sebastian Falbesoner+41−414 files
No security note in commit
Informational 23 AI analysisMessage 86 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

scratch: reject sizes that overflow when added to header

This commit fixes a low-level arithmetic overflow check in a special internal memory-pool helper called 'scratch space'. Because the scratch API is no longer exposed to users, the bug cannot be triggered by normal callers today. The change…

Integer overflow in size calculationPotential heap buffer under-allocationDefensive hardening of internal allocator helper
3d4340d1by Sebastian Falbesoner+14−22 files
No security note in commit
Informational 20 AI analysisMessage 96 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1897: tests: check results before using outputs

This commit fixes test-suite bugs, not the cryptographic library itself. Several test cases were using outputs from functions without first checking whether those functions succeeded. In rare cases a failed setup step could leave a value t…

Test-only hardeningMissing return-value checks in test codePotential false-positive test passes on setup failure
687155dfby merge-script+21−218 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

refactor: replace `_get_hash_context` with direct `->hash_ctx` access

This commit is a straightforward code cleanup: it removes a tiny internal helper function called secp256k1_get_hash_context() and replaces every call with direct access to the context's hash_ctx field. The behavior is identical; no securit…

c8745f6bby Sebastian Falbesoner+67−7116 files
No security note in commit
Informational 15 AI analysisMessage 86 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Merge bitcoin-core/secp256k1#1907: release cleanup: bump version after 0.8.0

This commit is a routine post-release bookkeeping change. It bumps the project's version number from 0.8.0 to 0.8.1, marks the current code as an unreleased development snapshot, and updates the changelog accordingly. There are no code, cr…

8a700a35by merge-script+8−53 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

release cleanup: bump version after 0.8.0

This commit is a routine post-release bookkeeping change. It bumps the project's version number from 0.8.0 to 0.8.1, marks the current code as an unreleased development snapshot, and updates the changelog accordingly. There are no code, cr…

78657bf2by Sebastian Falbesoner+8−53 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-priorityci: Disable Docker build summary generationby Hennadii Stepanov · 3ae72e78 · Feb 3, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

ci: Disable Docker build summary generation

These summaries provide little practical value to the development
workflow and clutter the CI output.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit changes a GitHub Actions CI setting to stop Docker from printing extra build summary messages. It is a cosmetic/workflow cleanup change with no security relevance.

Security candidaterefactor: remove unnecessary `malloc` result castsby Sebastian Falbesoner · 97b3c478 · Feb 2, 2026 · 3 filesMessage 100 · StrongInformational 19Details
Commit message · Sebastian Falbesoner

refactor: remove unnecessary `malloc` result casts

It seems that there is no good reason to do this and it's even
considered bad practice, see e.g. https://stackoverflow.com/a/605858

This commit touches mostly test code, the only two functions used
in production are `secp256k1_context_{create,clone}`.

Instances were found manually via `$ git grep "malloc("`

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
memory safetycryptography-sensitive path
AI analysis · Informational 19/100

This commit is a straightforward code cleanup: it removes unnecessary type casts in front of memory allocation calls like malloc. In modern C, casting the result of malloc is not needed and is generally discouraged. The change does not alter program behavior, fix a bug, or address a security issue. It touches mostly test and benchmark code, with only two small changes in production functions that create or clone a cryptographic context.

Lower-prioritybuild: Add `-Wleading-whitespace=spaces` compiler flagby Hennadii Stepanov · 86cae58d · Feb 2, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

build: Add `-Wleading-whitespace=spaces` compiler flag

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit adds a new compiler warning flag that alerts developers when source code lines begin with spaces instead of tabs. It is a code-style/build-hygiene change only and does not alter any runtime behavior, fix any vulnerability, or change how the library processes cryptographic data.

Lower-prioritybuild: Add `-Wtrailing-whitespace=any` compiler flagby Hennadii Stepanov · fb229e76 · Feb 2, 2026 · 3 filesMessage 62 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

build: Add `-Wtrailing-whitespace=any` compiler flag

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds a new compiler warning flag that flags trailing whitespace in source code. It is a code-quality/build-hygiene change, not a security fix. The only functional code change is a pragma to suppress that warning around a system header (Valgrind's memcheck.h) that may contain trailing whitespace. There is no vulnerability being patched.

Security candidaterefactor: Remove trailing whitespaceby Hennadii Stepanov · 13e3bee5 · Feb 2, 2026 · 3 filesMessage 47 · ThinInformational 15Details
Commit message · Hennadii Stepanov

refactor: Remove trailing whitespace

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit only removes invisible trailing spaces at the ends of three lines across three source files. It does not change any program logic, function behavior, or security properties. There is no security relevance.

Lower-priorityci: Add weekly scheduleby Hennadii Stepanov · 2ccff6eb · Feb 2, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · Hennadii Stepanov

ci: Add weekly schedule

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit adds a weekly timer to the project's GitHub Actions CI workflow so tests run automatically every Monday morning. It is purely an infrastructure/maintenance change and does not modify any cryptographic code, build scripts, or user-facing behavior.

Lower-priorityci: Rotate Docker cache keys every 4 weeksby Hennadii Stepanov · 2f18567d · Feb 2, 2026 · 2 filesMessage 84 · StrongInformational 15Details
Commit message · Hennadii Stepanov

ci: Rotate Docker cache keys every 4 weeks

This forces a periodic clean build to ensure we do not rely on stale
cache layers indefinitely.

84/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit changes how Bitcoin Core's libsecp256k1 project manages its automated build cache for Docker images. It makes the cache key include the current week number divided by 4, so the cache is effectively thrown away and rebuilt about once a month. This is a routine maintenance improvement to avoid relying on stale cached build layers forever. It is not a security fix and does not change any cryptographic or network code.

Security candidateci, docker: Fix LLVM repository signature failureby Hennadii Stepanov · 0ffb1749 · Feb 1, 2026 · 1 fileMessage 91 · StrongInformational 16Details
Commit message · Hennadii Stepanov

ci, docker: Fix LLVM repository signature failure

The LLVM apt repository uses legacy SHA1 signatures which are now
rejected by the stricter Sequoia PGP policy.

This change extends the 'sha1.second_preimage_resistance' cutoff date to
9999-01-01 in the default Sequoia config. This effectively whitelists
the legacy signature algorithm, preventing "OpenPGP signature
verification failed" errors during `apt-get update`.

See https://github.com/llvm/llvm-project/issues/153385.

91/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarydefensive validation
AI analysis · Informational 16/100

This commit changes a CI Docker build script so that an older SHA-1-based PGP signature from the LLVM apt repository is still accepted. It is a build-infrastructure workaround, not a change to the secp256k1 cryptographic code, and it does not introduce a vulnerability in the library itself.

Lower-priorityrelease process: mention the `[Unreleased]` link clearlyby Jonas Nick · 0267b655 · Jan 30, 2026 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Jonas Nick

release process: mention the `[Unreleased]` link clearly

Adding this link was forgotten in the first version of the 0.7.1 release PR but
caught in PR review.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a one-line update to the project's internal release-process documentation. It reminds maintainers to add a matching '[Unreleased]' hyperlink at the bottom of the changelog, not just the section header. There is no code change, no cryptographic change, and no security relevance.

Lower-priorityrelease cleanup: bump version after 0.7.1by Jonas Nick · ae7eb729 · Jan 26, 2026 · 3 filesMessage 45 · ThinInformational 15Details
Commit message · Jonas Nick

release cleanup: bump version after 0.7.1

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a routine post-release housekeeping change. It bumps the project's version number from 0.7.1 to 0.7.2, marks the current code as an unreleased development snapshot, and updates the changelog accordingly. There are no code behavior changes, no bug fixes, and no security implications.

Lower-priorityrelease: prepare for 0.7.1by Jonas Nick · 20a209f1 · Jan 26, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · Jonas Nick

release: prepare for 0.7.1

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is purely a release bookkeeping change. It renames the 'Unreleased' section in the changelog to version 0.7.1, adds an ABI compatibility note, and flips a build flag from 'not a release' to 'is a release'. No code behavior changes and no security fix is introduced here.

Lower-prioritychangelog: update in preparation for the v0.7.1 releaseby Jonas Nick · c4b6a81a · Jan 26, 2026 · 1 fileMessage 50 · ThinInformational 18Details
Commit message · Jonas Nick

changelog: update in preparation for the v0.7.1 release

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 18/100

This commit only updates the project's CHANGELOG.md file in preparation for a release. It documents two prior fixes: one that tries harder to scrub cryptographic secrets from memory, and one that fixes a build configuration issue where strict compiler flags could accidentally disable optimized assembly code. The commit itself does not change any source code, so it cannot introduce or fix a vulnerability directly.

Lower-prioritybench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERSby kevkevinpal · c09215f7 · Jan 23, 2026 · 4 filesMessage 73 · AdequateInformational 16Details
Commit message · kevkevinpal

bench: fail early if user inputs invalid value for SECP256K1_BENCH_ITERS

In this change the get_iters function was updated to print an error
message and then return 0. In the functions that use get_iters they
print the help text and then EXIT_FAILURE

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 16/100

This commit improves error handling in the benchmark programs only. It makes the benchmark tools reject invalid or non-positive values for the SECP256K1_BENCH_ITERS environment variable instead of silently using a bad value. This is a hardening/robustness fix for developer tooling, not a security fix for the cryptographic library itself.

Lower-prioritytest: show both Autotools and CMake usage for ctime_testsby 8144225309 · 1bc74a22 · Jan 22, 2026 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · 8144225309

test: show both Autotools and CMake usage for ctime_tests

The existing message only shows the libtool command, which is
specific to Autotools builds.

Fixes #1697

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This commit only changes the wording of an error/help message in a test program. It tells users how to run a test under valgrind for both CMake and Autotools builds. There is no security issue here.

Lower-prioritycmake: Set `LABELS` property for testsby Hennadii Stepanov · 8354618e · Jan 20, 2026 · 2 filesMessage 55 · ThinInformational 15Details
Commit message · Hennadii Stepanov

cmake: Set `LABELS` property for tests

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only adds descriptive labels to test cases in the project's CMake build configuration. It does not change any cryptographic code, runtime behavior, or security-sensitive logic. There is no security issue here.

Lower-prioritycmake: Integrate DiscoverTests and normalize test namesby Hennadii Stepanov · 29f26ec3 · Jan 20, 2026 · 2 filesMessage 83 · StrongInformational 15Details
Commit message · Hennadii Stepanov

cmake: Integrate DiscoverTests and normalize test names

Updates the build system to use the new DiscoverTests module.
This also standardizes test names to use dot-separated parts for
consistency.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a routine build-system cleanup. It changes how CMake names and discovers test cases, switching from underscores to dots in test names and using a helper module to automatically find individual tests inside test executables. There is no change to the cryptographic code, no bug fix, and no security relevance.

Lower-prioritysage: verify Eisenstein integer connection for GLV constantsby Justsomebuddy · 29ac4d84 · Jan 14, 2026 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Justsomebuddy

sage: verify Eisenstein integer connection for GLV constants

Add assertions to verify that the GLV decomposition constants arise
from the Eisenstein integer factorization of the group order N.

The group order factors as N = pi * conj(pi) in Z[w], where pi = A - B*w
is an Eisenstein prime. The GLV eigenvalue LAMBDA = B/A mod N, which is
the image of w^2 under the isomorphism Z[w]/(pi) -> Z/NZ.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit adds mathematical self-checks (assertions) to a SageMath script used to generate internal constants for Bitcoin's secp256k1 library. It does not change any runtime code, cryptographic operations, or user-facing behavior. It only verifies that precomputed GLV constants correctly relate to a known algebraic factorization involving Eisenstein integers. There is no security vulnerability or fix here.

Lower-prioritycmake: Add DiscoverTests moduleby Hennadii Stepanov · f95b263f · Jan 13, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Hennadii Stepanov

cmake: Add DiscoverTests module

Co-authored-by: Daniel Pfeifer <daniel@pfeifer-mail.de>

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit adds a new CMake helper file used to automatically find and register test cases during the build process. It does not change any cryptographic code, wallet handling, network logic, or user-facing behavior. It is purely a build/test infrastructure addition.

Lower-prioritycmake, refactor: Deduplicate test-related codeby Hennadii Stepanov · 4ac65114 · Jan 13, 2026 · 1 fileMessage 70 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

cmake, refactor: Deduplicate test-related code

Co-authored-by: furszy <matiasfurszyfer@protonmail.com>

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a straightforward cleanup of the project's build instructions. It replaces two nearly identical blocks of CMake code with a single reusable function that creates test programs. There is no change to the actual cryptographic code, no change to what tests are run, and no indication of any security issue being fixed.

Lower-prioritydoc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmultby kevkevinpal · bd5ced1f · Jan 7, 2026 · 1 fileMessage 75 · AdequateInformational 15Details
Commit message · kevkevinpal

doc/bench: added help text for SECP256K1_BENCH_ITERS env var for bench_ecmult

In addition a print message saying some tests were skipped was added

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only updates the help text and a printed message in a benchmark program. It does not change any cryptographic code, library behavior, or security-sensitive logic. There is no security issue here.

Lower-priorityecmult: Use size_t for array indices in _odd_multiplies_tableby Tim Ruffing · 47eb7095 · Jan 7, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Tim Ruffing

ecmult: Use size_t for array indices in _odd_multiplies_table

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit changes two variable types from signed integers (int) to unsigned size types (size_t) inside a low-level elliptic-curve multiplication helper. It is a code-quality/correctness cleanup with no observable security effect: the values are always non-negative and small, and the change does not fix a bug that could be triggered by an attacker.

Lower-priorityecmult: Use size_t for array indices into tablesby Tim Ruffing · bb1d199d · Jan 7, 2026 · 4 filesMessage 45 · ThinLow 28Details
Commit message · Tim Ruffing

ecmult: Use size_t for array indices into tables

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Low 28/100

This commit changes several loop counters and a macro from signed 'int' or 'long' types to unsigned 'size_t' when indexing into precomputed elliptic-curve multiplication tables. The main practical effect is to avoid undefined behavior or incorrect results on platforms where the table size calculation could overflow a signed type, and to make the code's intent clearer. There is no direct evidence in the commit that this fixes an exploitable vulnerability in normal Bitcoin Core usage, but it is a defensive correctness improvement in low-level cryptographic code.

Security candidatedoc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmakeby kevkevinpal · 0406cfc4 · Dec 19, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · kevkevinpal

doc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmake

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This is a one-line documentation update in a header file comment. It adds the CMake equivalent of an existing Autotools build option so developers know how to enable external default callbacks when building with CMake. No code behavior changes.

Lower-prioritytest: split monolithic ellswift test into independent casesby furszy · d822b290 · Dec 15, 2025 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · furszy

test: split monolithic ellswift test into independent cases

No behavior changes.

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

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

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

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

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

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

- master: 9.5 seconds.
- this PR: 5.9 seconds.
(~1.61× speedup, ~38% reduction)

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a pure test-code refactoring. It takes one large ElligatorSwift test function and splits it into eight smaller, independent test functions so the test runner can execute them in parallel. The commit message explicitly says 'No behavior changes,' and the diff only moves existing loops and checks into separate functions without altering the test logic, constants, or production code. There is no security issue here.

Security candidateAdd VERIFY_CHECKs that flags are 0 or 1by John Moffett · ae00c552 · Dec 15, 2025 · 11 filesMessage 78 · AdequateLow 36Details
Commit message · John Moffett

Add VERIFY_CHECKs that flags are 0 or 1

Flags for constant-time masking rely
on the values being exactly 0 or 1 rather
than 0 or true. Add VERIFY_CHECKs to enforce
in VERIFY builds as a preventative
measure and add documentation where relevant.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
constant-time or timing behavior
AI analysis · Low 36/100

This commit adds safety checks and documentation to ensure that 'flag' values used in secret-handling code are exactly 0 or 1, not just any 'true' value. These flags control constant-time selection and memory wiping. If a caller passed a different non-zero value, the masking math could behave incorrectly and potentially leak secret information through timing or produce wrong results. The new checks only fire in special VERIFY builds, so they are a defensive hardening measure rather than a fix for an active bug.