BC
← All projectsBitcoin Core

libsecp256k1

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

BitcoinCryptographic librariesNormal
Repository coverage

176 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.

48security candidates5second-pass queue12AI analyses
50commits · 30 days
69commits · 60 days
94commits · 180 days
176commits · 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.

67/100 average clarity
39Strong · 80–100
76Adequate · 60–79
58Thin · 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 Falbesoner39155065
Hennadii Stepanov4561064
Tim Ruffing2260055
furszy1341087
josibake942066
Lőrinc1331077
kevkevinpal620064
John Moffett421069
copilot-swe-agent[bot]320074
Jonas Nick710053
merge-script210091
gzJx0DuTRHytnHe7P5RmMbPf3wKy2BztweVGXTf211078
Analysis record

Published AI watches

Last scanned 43 minutes ago

Informational 17 AI analysisMessage 83 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

ellswift: check test operation results

This commit fixes test code for the EllSwift module so that it actually checks whether encoding, decoding, and public-key loading operations succeed before using their outputs. Previously the tests silently ignored failure return values, w…

Missing return-value checks in cryptographic test codePotential silent test failures in EllSwift encode/decode roundtrip testsPotential silent test failures in public-key load operations
564afb0bby Lőrinc+10−102 files
No security note in commit
Informational 12 AI analysisMessage 78 · Adequate
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

tests: add constant time tests

This commit only adds new test code. It extends the project's constant-time test suite to also exercise the silent payments module, ensuring that secret key material is not accidentally leaked through timing side channels during those oper…

Adds constant-time (side-channel) test coverage for the silent payments moduleUses memory-secret marking macros (SECP256K1_CHECKMEM_UNDEFINE/DEFINE) to detect secret-dependent branchesNo functional or cryptographic code changes
936907b0by josibake+78−01 file
No security note in commit
Informational 15 AI analysisMessage 41 · Thin
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

silentpayments: sending

This commit adds a new feature to the secp256k1 cryptographic library: the sender-side logic for Bitcoin Silent Payments (BIP352). It lets a wallet create special one-time payment addresses for recipients without revealing which recipient …

New feature implementation for BIP352 Silent Payments sender sideExtensive input validation (ARG_CHECK) and test coverage for malformed keys and bad argumentsSensitive intermediate values (shared secrets, scalars) are explicitly cleared
b30ea3ebby josibake+719−14 files
No security note in commit
Low 36 AI analysisMessage 100 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

refactor: introduce `_ecmult_gen_ge` helper (preventing accidental gej leaks)

This is a defensive code cleanup in a Bitcoin cryptography library. It introduces a helper function that wraps a common three-step pattern when multiplying by the generator point, ensuring that temporary sensitive Jacobian coordinate data …

New helper ensures intermediate Jacobian coordinates are always cleared after generator multiplicationCommit message states goal is to prevent accidental gej leaks of secret scalar informationRefactors existing call sites in ECDSA sign, Schnorr sign, pubkey creation, and blinding setup
a3296d5eby Sebastian Falbesoner+14−165 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 55 · Thin
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

doc: correct API docs for ECDSA signing out-params (s/array/signature object/)

This commit only fixes wording in the API documentation comments. It changes the description of a function output parameter from 'pointer to an array' to 'pointer to a signature object' in two header files. No actual code behavior changed,…

40a0d874by Sebastian Falbesoner+2−22 files
No security note in commit
Low 34 AI analysisMessage 73 · Adequate
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

musig: always clear out secret key in `secp256k1_musig_nonce_gen_counter`

This is a small defensive cleanup in Bitcoin Core's libsecp256k1 MuSig code. The function that generates a cryptographic nonce could, in rare error cases, leave a temporary copy of the user's secret key in memory instead of wiping it. The …

secret-key material left uncleared on an error pathuse of explicit memory clearing (`secp256k1_memclear_explicit`) added to failure pathMuSig nonce generation function
8479eafaby Sebastian Falbesoner+2−41 file
Vendor flagged security relevance
Informational 15 AI analysisMessage 76 · Adequate
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

util: introduce and use `ARRAY_SIZE` macro

This commit is a simple code cleanup: it introduces a standard ARRAY_SIZE macro and replaces repeated manual array-size calculations with that macro. It does not change any behavior, fix any bug, or alter any security-sensitive logic. Ther…

921b9711by Sebastian Falbesoner+42−388 files
No security note in commit
Moderate 62 AI analysisMessage 100 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

ellswift: fix overflow flag handling in secp256k1_ellswift_xdh

This commit fixes a bug in the ElligatorSwift-based ECDH key exchange function. The function was supposed to reject secret keys that are invalid (zero or greater than or equal to the curve order), but due to a one-character bug it only che…

Cryptographic secret-key validation bypassSilent modular reduction instead of rejection for out-of-range secretsInconsistency with documented/referenced ECDH overflow handling
307b49f1by gzJx0DuTRHytnHe7P5RmMbPf3wKy2BztweVGXTf+1−11 file
Vendor flagged security relevance
Informational 19 AI analysisMessage 100 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

refactor: remove unnecessary `malloc` result casts

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 alt…

97b3c478by Sebastian Falbesoner+17−173 files
No security note in commit
Informational 16 AI analysisMessage 91 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

ci, docker: Fix LLVM repository signature failure

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 …

Configuration relaxation of PGP signature policy in CI environmentUse of SHA-1 signature algorithm whitelisted by date extensionBuild-infrastructure-only change with no effect on shipped library
0ffb1749by Hennadii Stepanov+3−01 file
No security note in commit
Low 36 AI analysisMessage 78 · Adequate
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

Add VERIFY_CHECKs that flags are 0 or 1

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 d…

constant-time masking invariant enforcementVERIFY_CHECK hardening for secret-dependent flag valuesdocumentation update clarifying 0/1 flag contract
ae00c552by John Moffett+30−811 files
No security note in commit
Informational 15 AI analysisMessage 95 · Strong
BC Bitcoin Corelibsecp256k1 BitcoinCryptographic libraries

test: introduce (mini) unit test framework

This commit is a pure test-infrastructure change. It introduces a small internal unit-test framework for the secp256k1 cryptographic library, replacing a long hand-written main() function with a registry of test cases and adding optional p…

48789dafby furszy+674−1436 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.

Security candidateIntroduce hash context to support pluggable SHA256 compressionby furszy · fdb6a91a · Mar 3, 2026 · 21 filesMessage 73 · AdequateTriage 15Details
Commit message · furszy

Introduce hash context to support pluggable SHA256 compression

This is purely a mechanical change with no behavior change.

It introduces a secp256k1_hash_ctx struct inside secp256k1_context
and propagates it to all SHA256-related operations.

This sets up the ability to provide a hardware-optimized SHA256
compression function at runtime in a follow-up commit.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
Security candidateRevert "ci, docker: Fix LLVM repository signature failure"by Hennadii Stepanov · 76e92cfe · Feb 20, 2026 · 1 fileMessage 70 · AdequateTriage 18Details
Commit message · Hennadii Stepanov

Revert "ci, docker: Fix LLVM repository signature failure"

This reverts commit 0ffb1749a5811bb63902f00c9fa73b49588d0557.

70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
signing boundary
Security candidateutil: introduce and use `ARRAY_SIZE` macroby Sebastian Falbesoner · 921b9711 · Feb 16, 2026 · 8 filesMessage 76 · AdequateInformational 15Details
Commit message · Sebastian Falbesoner

util: introduce and use `ARRAY_SIZE` macro

The macro definition matches the one used in Linux, see e.g.
https://github.com/torvalds/linux/blob/9702969978695d9a699a1f34771580cdbb153b33/include/linux/array_size.h#L11
(without the additional check rejecting pointers, as we would need
GNU C for that, see e.g. https://stackoverflow.com/a/19455169)

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
memory safety
AI analysis · Informational 15/100

This commit is a simple code cleanup: it introduces a standard ARRAY_SIZE macro and replaces repeated manual array-size calculations with that macro. It does not change any behavior, fix any bug, or alter any security-sensitive logic. There is no security issue here.

Security candidateellswift: fix overflow flag handling in secp256k1_ellswift_xdhby gzJx0DuTRHytnHe7P5RmMbPf3wKy2BztweVGXTf · 307b49f1 · Feb 16, 2026 · 1 fileMessage 100 · StrongModerate 62Details
Commit message · gzJx0DuTRHytnHe7P5RmMbPf3wKy2BztweVGXTf

ellswift: fix overflow flag handling in secp256k1_ellswift_xdh

The secp256k1_ellswift_xdh function uses overflow = secp256k1_scalar_is_zero(&s) which overwrites the overflow flag from the preceding secp256k1_scalar_set_b32 call. This means secret keys >= the curve order are silently accepted (reduced mod n) instead of being rejected.

The fix changes = to |=, matching the correct pattern already used in secp256k1_ecdh (main_impl.h, line 51).

The ECDH module's test suite explicitly tests overflow rejection (passes secp256k1_group_order_bytes as a key and checks the function returns 0). The ellswift test suite has no corresponding test, which is why this went undetected.

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
secret or key materialmemory safety
AI analysis · Moderate 62/100

This commit fixes a bug in the ElligatorSwift-based ECDH key exchange function. The function was supposed to reject secret keys that are invalid (zero or greater than or equal to the curve order), but due to a one-character bug it only checked for zero keys and silently accepted too-large keys by reducing them modulo the curve order. The fix makes it reject both invalid cases, matching the behavior of the regular ECDH function. There is no evidence this was exploited or that it caused real-world harm, but it is a genuine cryptographic correctness issue.

Security candidatetest: add unit tests for secp256k1_scalar_check_overflowby Rohit Yadav · f47bbc07 · Feb 4, 2026 · 1 fileMessage 72 · AdequateTriage 20Details
Commit message · Rohit Yadav

test: add unit tests for secp256k1_scalar_check_overflow

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
memory safety
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.

Security candidaterefactor: Remove trailing whitespaceby Hennadii Stepanov · 13e3bee5 · Feb 2, 2026 · 3 filesMessage 47 · ThinTriage 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
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.

Security candidatedoc: include arg -DUSE_EXTERNAL_DEFAULT_CALLBACKS=1 for cmakeby kevkevinpal · 0406cfc4 · Dec 19, 2025 · 1 fileMessage 50 · ThinTriage 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
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.

Security candidaterefactor: remove ret from secp256k1_ec_pubkey_serializeby kevkevinpal · 3daab83a · Dec 9, 2025 · 1 fileMessage 62 · AdequateTriage 15Details
Commit message · kevkevinpal

refactor: remove ret from secp256k1_ec_pubkey_serialize

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
Security candidateAdd ARG_CHECKs to ensure "array of pointers" elements are non-NULLby Sebastian Falbesoner · 5a08c1bc · Dec 6, 2025 · 3 filesMessage 62 · AdequateTriage 15Details
Commit message · Sebastian Falbesoner

Add ARG_CHECKs to ensure "array of pointers" elements are non-NULL

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Explains rationale or failure mode! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
Security candidateautotools: Rename `build-aux` to `autotools-aux`by Hennadii Stepanov · 7eb86bdb · Nov 20, 2025 · 5 filesMessage 68 · AdequateTriage 15Details
Commit message · Hennadii Stepanov

autotools: Rename `build-aux` to `autotools-aux`

This change improves separation from CMake build directories, which
typically use the "build" prefix.

Additionally, corresponding `.gitignore` entries have been refactored.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
Security candidateuse new `_eckey_pubkey_serialize{33,65}` functions in public APIby Sebastian Falbesoner · adb76f82 · Nov 17, 2025 · 1 fileMessage 50 · ThinTriage 15Details
Commit message · Sebastian Falbesoner

use new `_eckey_pubkey_serialize{33,65}` functions in public API

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
Security candidatetest: introduce (mini) unit test frameworkby furszy · 48789daf · Oct 1, 2025 · 6 filesMessage 95 · StrongInformational 15Details
Commit message · furszy

test: introduce (mini) unit test framework

Lightweight unit testing framework, providing a structured way to define,
execute, and report tests. It includes a central test registry, a flexible
command-line argument parser of the form "--key=value" / "-k=value" /
"-key=value" (facilitating future framework extensions), ability to run
tests in parallel and accumulated test time logging reports.

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

Compatibility Note:
To stay compatible with previous versions, the framework also supports
the two original positional arguments: the iterations count and the
RNG seed (in that order).

95/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomness
AI analysis · Informational 15/100

This commit is a pure test-infrastructure change. It introduces a small internal unit-test framework for the secp256k1 cryptographic library, replacing a long hand-written main() function with a registry of test cases and adding optional parallel test execution. It does not change any cryptographic code, public API, or production behavior, and it does not fix or introduce any security vulnerability.

Security candidatedocs: Improve API docs of _context_set_illegal_callbackby Tim Ruffing · 4d90585f · Sep 22, 2025 · 1 fileMessage 62 · AdequateTriage 15Details
Commit message · Tim Ruffing

docs: Improve API docs of _context_set_illegal_callback

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
Security candidatedocs: Clarify that callback can be called more than onceby Tim Ruffing · 895f53d1 · Sep 22, 2025 · 1 fileMessage 62 · AdequateTriage 15Details
Commit message · Tim Ruffing

docs: Clarify that callback can be called more than once

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
Security candidatebuild: Fix warnings in x86_64 assembly checkby Hennadii Stepanov · ab560078 · Sep 18, 2025 · 2 filesMessage 72 · AdequateTriage 15Details
Commit message · Hennadii Stepanov

build: Fix warnings in x86_64 assembly check

This change fixes:
- `-Wuninitialized` in both Autotools and CMake;
- `-Wreturn-type` in CMake only.

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
cryptography-sensitive path
Security candidatedoc: clarify API doc of `secp256k1_ecdsa_recover` return valueby Jonas Nick · 7321bdf2 · Sep 16, 2025 · 1 fileMessage 70 · AdequateTriage 15Details
Commit message · Jonas Nick

doc: clarify API doc of `secp256k1_ecdsa_recover` return value

Co-authored-by: Tim Ruffing <me@real-or-random.org>

70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
cryptography-sensitive path
Security candidateSplit memclear into two versionsby John Moffett · 399b582a · Sep 8, 2025 · 11 filesMessage 68 · AdequateTriage 15Details
Commit message · John Moffett

Split memclear into two versions

secp256k1_memclear has the side effect of undefining bytes for
valgrind checks. In some cases, we may want to zero bytes
but allow subsequent reads. So we split memclear into
memclear_explicit, which makes no guarantees about the content
of the buffer on return, and memzero_explicit, which guarantees
zero value on return.

Change the memset in partial_sign to use memzero_explicit.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
Security candidatedoc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)by Sebastian Falbesoner · 806de38b · Sep 5, 2025 · 1 fileMessage 50 · ThinTriage 15Details
Commit message · Sebastian Falbesoner

doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
Security candidatedoc: Recommend clang-cl when building on Windowsby Hennadii Stepanov · 7379a5be · Aug 24, 2025 · 175 filesMessage 45 · ThinTriage 15Details
Commit message · Hennadii Stepanov

doc: Recommend clang-cl when building on Windows

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
Security candidatetests: refactor tagged hash testsby josibake · 5153cf1c · Aug 20, 2025 · 4 filesMessage 83 · StrongTriage 18Details
Commit message · josibake

tests: refactor tagged hash tests

Move the sha256_tag_test_internal function out of the musig module
into tests.c. This makes it available to other modules wishing to verify tagged
hashes without needing to duplicate the function.

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

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

Update tests in the ellswift and schnorrsig modules to use the
sha256_tag_test_internal helper function.

83/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
signing boundary