RB
← All projectsRust Bitcoin

rust-bitcoin

Rust library for Bitcoin data structures, serialization, consensus encoding, and scripts.

BitcoinCryptographic librariesNormal
Repository coverage

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

459security candidates448second-pass queue1033AI analyses
188commits · 30 days
404commits · 60 days
1283commits · 180 days
2063commits · 365 days
Backfill bands
Aug 5 → Feb 6787 seen32 candidatesComplete
Feb 6 → Jun 6878 seen53 candidatesComplete
Jun 6 → Jul 6211 seen15 candidatesComplete
Jul 6 → Aug 5184 seen2 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.

64/100 average clarity
311Strong · 80–100
1054Adequate · 60–79
555Thin · 40–59
150Opaque · 0–39
20security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Mitchell Bagot640192359068
Tobin C. Harding40965156063
jrakibi944963068
Nick Johnson18920112059
Andrew Poelstra512035075
Jamil Lambert, PhD1141849061
Fmt Bot311422045
Trevor Arjeski111111069
Shing Him Ng31724056
Ismail Daif22612050
satsfy (Renato Britto)17612066
Martin Habovstiak27512069
Analysis record

Published AI watches

Last scanned 51 minutes ago

Informational 15 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6671: units: reword docs from height to count in relative locktime

This commit only changes documentation comments and variable names in the rust-bitcoin library. It rewords references to 'block height' as 'block count' for relative locktime, because a relative locktime measures elapsed blocks since a coi…

6ea4ff92by Andrew Poelstra+20−172 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6670: ci: fix labeller permissions

This is a routine GitHub Actions workflow fix. The change gives the automated PR labeler workflow permission to download artifacts and explicitly tells the GitHub CLI which repository to act on. It does not change the Bitcoin library code,…

CI workflow permission fixNo source code changesNo cryptographic or consensus changes
276e0a61by Andrew Poelstra+5−01 file
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6657: Release tracking PR: `base58ck 0.5.0`

This commit is a routine version bump for the base58ck crate from 0.4.0 to 0.5.0. It only updates version numbers in package manifests, lock files, and adds a changelog entry. There are no code changes and no security relevance.

9deb5de1by Andrew Poelstra+22−168 files
No security note in commit
Informational 21 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6440: base58: Introduce `decode_check_to_array` for alloc-less decoding

This commit is a routine feature addition to the rust-bitcoin base58 crate. It adds a new no-allocator function to decode short base58-check strings into fixed-size byte arrays, and renames the existing error type while keeping a deprecate…

No security-relevant bug fix is described in the commit message or diff.New decoding path uses a fixed 128-byte scratch buffer (`ArrayVec`) and rejects oversized inputs.Checksum verification and invalid-character handling are preserved from the existing alloc implementation.
c5fd1832by Andrew Poelstra+330−775 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6646: hashes: add several methods to `Midstate` and release 1.2.0

This commit is a routine feature release for the bitcoin_hashes crate. It adds new public methods and a constant to the SHA-256 Midstate type so developers can compute SHA-256 midstates in const contexts. There is no indication of a securi…

0f68fcb3by Andrew Poelstra+157−4210 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

units: reword docs to block count in relative locktime

This commit only rewords documentation comments and variable names in the codebase. It changes references from 'block height' to 'block count' for relative lock times, which is a terminology correction with no functional code changes. Ther…

8867fe2eby satsfy (Renato Britto)+20−172 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6667: Make the `WitnessesEncoder` private

This commit makes a small internal helper type called WitnessesEncoder private. It was previously exported as public API but is only used inside the transaction encoder. The change removes it from the public API surface and moves the code …

07d91f7fby Andrew Poelstra+54−1324 files
No security note in commit
Informational 12 AI analysisMessage 75 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

ci: fix labeller permissions

This commit adjusts a GitHub Actions workflow that automatically labels pull requests based on CI results. It adds a built-in repository token, tells the artifact download step to merge single-file artifacts, and explicitly sets the reposi…

Workflow-only change with no library code modificationsUses the default GITHUB_TOKEN rather than a custom secretRuns in workflow_run context, which already has elevated repository access by design
715f2bd6by Nick Johnson+5−01 file
No security note in commit
Informational 19 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6661: units: Remove `From<u16>` from `NumberOfBlocks`

This is a routine API cleanup, not a security fix. The developers removed a shortcut that let programmers create a 'number of blocks' value directly from any u16 number, replacing it with an existing named constructor called from_height. T…

ed5f1b68by Andrew Poelstra+18−358 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6668: Scrub the transaction encoding logic

This commit is a pure code reorganization (refactor) in the rust-bitcoin library. It moves transaction encoding and decoding definitions around within a single file so the code follows the project's preferred layout. No logic, behavior, or…

c5588ba5by Andrew Poelstra+57−571 file
No security note in commit
Informational 18 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6662: build(deps): bump actions/checkout from 6.0.2 to 6.0.3

This commit is a routine update to the GitHub Actions checkout tool used by the project's automated workflows. It changes the pinned version from 6.0.2 to 6.0.3 across many workflow files. The newer version fixes minor bugs related to SHA-…

Dependency bump of actions/checkout to a patch releaseUpstream fixes for SHA-256 repository checkout and merge commit regexAll affected workflows already disable persisted credentials
f7d364cdby Andrew Poelstra+29−2915 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6663: build(deps): bump taiki-e/install-action from 2.79.12 to 2.81.4

This is a routine Dependabot update that bumps the version of a third-party GitHub Action used only in automated testing workflows. The change does not touch the project's actual Bitcoin library code, and there is no indication it fixes or…

5c92c0b0by Andrew Poelstra+2−22 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Update the API text files

This commit only updates two generated API text files that list the public surface of the Rust crate. It removes entries for a `WitnessesEncoder` type, reflecting that the type is no longer part of the public API. There is no source code c…

9c391145by Tobin C. Harding+0−782 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Scrub the transaction encoding logic

This commit is a pure code reorganization: it moves existing transaction encoding and decoding definitions around within a single file so they follow the project's preferred layout. No logic was changed, no security bug was fixed, and no n…

80dcef15by Tobin C. Harding+57−571 file
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Make the WitnessesEncoder private

This commit simply hides an internal helper type called WitnessesEncoder from public view. It is a routine API-cleanup change with no security relevance visible in the code or commit message.

b37accc3by Tobin C. Harding+54−542 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

release bitcoin_hashes 1.2.0

This commit is a routine version bump for the bitcoin_hashes library from version 1.1.0 to 1.2.0. It only updates lock files, the package version number, and the changelog. There is no code change and no security relevance visible in the c…

8899dfd2by Andrew Poelstra+27−224 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump astral-sh/setup-uv from 8.1.0 to 8.2.0

This is a routine automated update by Dependabot that changes the pinned version of a GitHub Action used to install the 'uv' Python tool in two workflow files. The new commit hash corresponds to the legitimate 8.2.0 release of astral-sh/se…

1c438632by dependabot[bot]+2−22 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump github/codeql-action/upload-sarif

This is a routine automated update by Dependabot that changes the pinned version of a GitHub-provided security scanning helper used in a workflow. It does not modify the project's actual Bitcoin library code, its cryptographic logic, or an…

5293bee4by dependabot[bot]+1−11 file
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump taiki-e/install-action from 2.79.12 to 2.81.4

This is a routine Dependabot update that bumps a GitHub Actions helper used in automated testing workflows from version 2.79.12 to 2.81.4. It only changes which version of the action is invoked during CI runs; it does not modify the Rust B…

eb9544f9by dependabot[bot]+2−22 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump actions/checkout from 6.0.2 to 6.0.3

This is a routine automated update by Dependabot that bumps the GitHub Actions 'actions/checkout' dependency from version 6.0.2 to 6.0.3 across all project workflow files. It only changes pinned commit hashes and version comments for the a…

Routine patch-level dependency bumpNo changes to permissions, inputs, or workflow logicpersist-credentials: false already present on all checkout steps
ae935fadby dependabot[bot]+29−2915 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 candidateecdsa: Add to/from_signature, len, and iterby Tobin C. Harding · a098184e · Nov 23, 2025 · 2 filesMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

ecdsa: Add to/from_signature, len, and iter

To the `ecdsa` type add `to_signature`, `from_signature`, `len`, and
`iter` methods.

Change the implementation of `IntoIter` for a sig reference so we can
add `iter` method as done in `taproot`.

While we are at it fix up the docs and layout all the methods in the
same order for both types (`ecdsa` and `taproot`).

This unifies the APIs of the two types `ecdsa::SerializedSignature`
and `taproot::SerializedSignature`.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit is a routine API cleanup for the rust-bitcoin library. It adds a few helper methods (to_signature, from_signature, len, iter) to the ECDSA serialized-signature type and reorders existing methods in the Taproot serialized-signature type so both types look the same. There is no security fix or behavior change that would affect users' funds or data.

Security candidateImport core typesby Tobin C. Harding · bbc57722 · Nov 23, 2025 · 2 filesMessage 43 · ThinInformational 15Details
Commit message · Tobin C. Harding

Import core types

Done in an effort to make the `ecdas` and `taproot` modules uniform.

Import and do so in both modules.

43/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit is a minor code cleanup. It imports two common Rust traits (`Borrow` and `Deref`) directly at the top of two source files, instead of referring to them with their full `core::...` module path inside the code. There is no functional change, no bug fix, and no security relevance.

Security candidateMove/add From<PushBytes> for SerializedSignatureby Tobin C. Harding · 39a50dd9 · Nov 23, 2025 · 2 filesMessage 60 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Move/add From<PushBytes> for SerializedSignature

Move the `ecdsa` impl to `script::push_bytes` and add one for the
`taproot` type.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit is a small internal code reorganization. It moves an existing conversion helper (so a serialized ECDSA signature can be viewed as a script 'push bytes' object) to a more central location, and adds an equivalent helper for Taproot signatures. There is no security fix or behavior change visible to users.

Security candidateOnly return valid data in sig sliceby Tobin C. Harding · c5f08f53 · Nov 23, 2025 · 2 filesMessage 68 · AdequateLow 41Details
Commit message · Tobin C. Harding

Only return valid data in sig slice

The `SerializedSignature` types have an internal buffer and we track
the length of valid data in the buffer. However in `AsRef` and friends
we are returning a slice of the whole buffer. This is confusing and a
potential footgun (eg `sig.as_ref()l.en()` isn't be meaningful).

Make the impls that get a byte slice reference only return valid data.
Done for both `ecdsa` and `taproot` type.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Low 41/100

This commit fixes a bug in how serialized Bitcoin signatures expose their byte content. Previously, code asking for the signature bytes could receive the entire internal buffer, including leftover or uninitialized bytes beyond the actual signature length. Now only the valid, used portion is returned. This prevents accidental misuse where someone might hash, encode, or transmit extra garbage bytes as if they were part of the signature.

Security candidateRemove mutable impls from ecdsa SerializedSignatureby Tobin C. Harding · 8eb36454 · Nov 23, 2025 · 1 fileMessage 90 · StrongInformational 20Details
Commit message · Tobin C. Harding

Remove mutable impls from ecdsa SerializedSignature

We do not want users to be able to arbitrarily mutate a serialized
signature because doing so is meaningless. Also the `taproot` type
does not support mutatable references.

90/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 20/100

This commit removes the ability for outside code to directly modify the raw bytes of an ECDSA serialized signature object in the rust-bitcoin library. Previously, callers could obtain a mutable reference to the internal byte buffer and change it, which the developers consider meaningless because a signature is supposed to be a fixed cryptographic result. The change makes the type consistent with the taproot signature type, which already did not allow mutation. It is a hardening/correctness change rather than a fix for a known exploitable vulnerability.

Security candidateMove ecdsa reference implsby Tobin C. Harding · ff0841ae · Nov 23, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Tobin C. Harding

Move ecdsa reference impls

Move the impls so they are in the same order as in the `taproot`
module.

Code move only.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit simply reorders existing code in a Rust source file. It moves two blocks of code (implementations of Deref and DerefMut for SerializedSignature) to a different location within the same file so the order matches another module. No code behavior is changed, no bugs are fixed, and no security issue is introduced.

Security candidateAdd equality impls to ecdsa::SerializedSignatureby Tobin C. Harding · e903d12d · Nov 23, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Add equality impls to ecdsa::SerializedSignature

Done as part of an effort to make the `SerializedSignature` types in
`ecdsa` and `taproot` have the same APIs.

Copy the impls from the `taproot` type.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit adds standard Rust comparison traits (equality and ordering) to a type that wraps a raw ECDSA signature byte array. It simply lets programmers compare these signature objects more conveniently; it does not change signature validation or introduce a security vulnerability.

Security candidateAdd Lower/UperHex impls for taproot::SerializedSignatureby Tobin C. Harding · a2a69cef · Nov 23, 2025 · 1 fileMessage 65 · AdequateInformational 16Details
Commit message · Tobin C. Harding

Add Lower/UperHex impls for taproot::SerializedSignature

Done in an effort to make the `ecdsa` and `taproot`
`SerializedSignature`s have the same API.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 16/100

This commit adds two new ways to display a taproot serialized signature as hexadecimal text (lowercase and uppercase). It is a pure API-consistency change to make taproot signatures match the existing ecdsa signature API. There is no security issue visible in the diff.

Security candidateMove the SerializedSignature to cryto moduleby Tobin C. Harding · df89db76 · Nov 23, 2025 · 3 filesMessage 88 · StrongInformational 18Details
Commit message · Tobin C. Harding

Move the SerializedSignature to cryto module

There was no good reason for putting it where it is, at least from
what I found on the original PR

> I don't remember exactly but I think I thought it wouldn't work in
> the other taproot module. I have no idea now if it's actually an
> issue

ref: https://github.com/rust-bitcoin/rust-bitcoin/pull/2156#issuecomment-1790295634

Anyways, in order to split the `crypto` module out into a separate
crate it makes sense to have the `SerializedSignature` as well.

88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
signing boundarycryptography-sensitive pathsigning or wallet path
AI analysis · Informational 18/100

This commit is a straightforward internal code reorganization. It moves the SerializedSignature type from one module to another within the same crate, without changing its behavior or public API. There is no security fix or vulnerability here.

Security candidateMove ecdsa::SerializedSignature implsby Tobin C. Harding · fa57e889 · Nov 23, 2025 · 2 filesMessage 58 · ThinInformational 15Details
Commit message · Tobin C. Harding

Move ecdsa::SerializedSignature impls

In an effort to make the `ecdsa` and `taproot` modules look the same
so it is easier to tell exactly where they differ move some
`SelializedSignature` impls. Elect to use the layout in the `taproot`
one.

Except in `taproot` move the `Eq` impl to be grouped with the
`PartialEq` impls.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit is purely a code cleanup: it moves some trait implementation blocks for the ECDSA SerializedSignature type to a different location in the same file and reorders the Taproot Eq impl to sit next to PartialEq. No logic, behavior, or signatures changed.

Security candidatecrypto: Fix taproot module docsby Tobin C. Harding · dba9d487 · Nov 23, 2025 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Tobin C. Harding

crypto: Fix taproot module docs

The docs are just plain wrong, this module contains `Signature` only,
nothing to do with keys.

65/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit only fixes a documentation comment in the source code. It changes the module description from incorrectly saying it contains Taproot keys to correctly saying it contains Taproot signatures. There is no code change and no security impact.

Security candidatecrypto: Re-order taproot::Signature methodsby Tobin C. Harding · b906245b · Nov 23, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Tobin C. Harding

crypto: Re-order taproot::Signature methods

The `taproot::Signature` and `ecdsa::Signature` are similar, lets make
the code look similar so its more clear exactly where the APIs differ.

Move the `taproot` code to mirror the `ecdsa` code.

Code move only, no logic change.

73/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit simply reorders two methods inside the same Rust source file so that the taproot signature code matches the layout of the ECDSA signature code. No code behavior, logic, or public API changed. It is a cosmetic cleanup only.

Security candidateDrop rand-std feature flagby Nick Johnson · 85fccd64 · Nov 21, 2025 · 11 filesMessage 68 · AdequateInformational 18Details
Commit message · Nick Johnson

Drop rand-std feature flag

With underlying secp256k1 updates, this flag is essentially a duplicate
with the "rand" feature flag. Dropping this one for user clarity.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 18/100

This commit removes a redundant feature flag called 'rand-std' from the rust-bitcoin library and replaces its use with the combination of 'rand' and 'std'. It is a cleanup change to make feature selection clearer for users. There is no security vulnerability or bug fix in the code itself.

Security candidateRemove the secp contextby Tobin C. Harding · 648e5f86 · Nov 19, 2025 · 22 filesMessage 28 · OpaqueInformational 17Details
Commit message · Tobin C. Harding

Remove the secp context

BOOM!

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 17/100

This commit is a large API refactoring in the rust-bitcoin library. It removes the need for callers to pass an explicit secp256k1 cryptographic context object to many functions. Instead, the library now uses a global or internally-managed context. The change touches examples, tests, and core modules for addresses, BIP32 key derivation, scripts, PSBT signing, message signing, and Taproot. There is no direct evidence in the commit that this fixes a security vulnerability; it appears to be a usability and maintainability improvement.

Security candidateFix lint warnings after upgrade to secp-0.32.0-beta.2by Tobin C. Harding · 9a1b408f · Nov 19, 2025 · 12 filesMessage 83 · StrongInformational 15Details
Commit message · Tobin C. Harding

Fix lint warnings after upgrade to secp-0.32.0-beta.2

- Use new secret key API
- Remove deprecated Keypair calls
- Use new `ecdsa::verify` function
- Use new `secp256k1::ecdsa::sign` stand alone function
- Use new `secp256k1::schnorr::sign` stand alone function
- Use new `secp256k1::ecdsa::sign_recoverable` function
- Use `RecoverableSignature` methods
- Use new `secp256k1::schnorr::sign_with_aux_rand` function
- Use the new `secp256k::schnoor::sign_no_aux_rand` function
- Use the new `secp256k1 crate level generate_keypair` function

Don't remove the secp context yet, that will be done next.

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
secret or key materialsigning boundarycryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit is a routine code cleanup that updates rust-bitcoin to match a newer version of the secp256k1 cryptographic library. It only renames function calls (for example, switching from older methods like `secp.sign_ecdsa` to newer standalone functions like `secp256k1::ecdsa::sign`) and does not change any security logic, fix a bug, or alter how secrets are handled.

Security candidateDepend on secp256k1-0.32.0-beta.2by Tobin C. Harding · 2328da56 · Nov 19, 2025 · 14 filesMessage 60 · AdequateLow 32Details
Commit message · Tobin C. Harding

Depend on secp256k1-0.32.0-beta.2

Upgrade to the latest and greatest secp. Only do build errors,
warnings will be done separately to assist review.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Low 32/100

This commit updates the rust-bitcoin library to use a new beta version of its underlying secp256k1 cryptographic library (0.32.0-beta.2). It is a routine dependency upgrade that adjusts many internal calls to match the new library's simpler API. There is no direct evidence in the commit that this fixes a known security vulnerability, but it does remove an old, separately-patched version of a hashing dependency and moves to a newer cryptographic release. The main risk is that any upgrade of core crypto code could introduce subtle bugs or break downstream users who rely on the old API.

Security candidateconsensus_encoding: implement batched allocation for VecDecoder and `ByteVecDecoder`by jrakibi · 0452a937 · Nov 17, 2025 · 1 fileMessage 73 · AdequateModerate 60Details
Commit message · jrakibi

consensus_encoding: implement batched allocation for VecDecoder and `ByteVecDecoder`

`VecDecoder` and `ByteVecDecoder` only checks that the element count/byte < 4,000,000.
This still allows an attacker to claims a large size without providing the data.

In this patch we allocates in 1 MB batches so an attacker now needs to provide
X MB of data to make us allocate X+1 MB of memory

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
explicit security languageparser or protocol path
AI analysis · Moderate 60/100

This commit fixes a denial-of-service weakness in how the library reads length-prefixed byte and element lists from untrusted data. Previously, the library would reserve up to 4 million bytes or elements immediately after seeing a length number, even if the actual data never arrived. Now it reserves memory in 1 MB chunks only as data actually comes in, so an attacker must send data to make the program use memory. The commit message and code comments explicitly describe this as a DoS-prevention change.

Security candidateCreate an empty crypto crateby Tobin C. Harding · 7d8172e2 · Nov 13, 2025 · 9 filesMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Create an empty crypto crate

In preparation for crate smashing the `crypto` module create an empty
crate so we can grab the name on crates.io.

I don't currently know whats the pros and cons of moving just keys to
moving everything in the `crypto` module. So the manifest description
is a bit vague.

FTR `bitcoin-keys` and `bitcoin_keys` are both taken on crates.io

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit creates a brand-new, empty placeholder Rust crate named `bitcoin-crypto` inside the rust-bitcoin workspace. It contains no executable code, no cryptographic logic, and no changes to existing crates. The sole purpose is to reserve the package name on crates.io before someone else takes it. There is nothing here that could affect security.

Security candidateFix lint warnings after upgrade to secp 0.31by Tobin C. Harding · df02be71 · Nov 11, 2025 · 11 filesMessage 60 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Fix lint warnings after upgrade to secp 0.31

- Remove rand deprecated stuff
- Use new Keypair API
- Remove unnecessary import

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit is a routine maintenance patch that updates example code and tests to match a newer version of the underlying secp256k1 cryptography library. It replaces deprecated random-number calls with their modern equivalents and switches to a renamed key-construction function. There is no indication of a security vulnerability being fixed.

Security candidateUpgrade secp to 0.31.1by Tobin C. Harding · 3c490723 · Nov 10, 2025 · 9 filesMessage 73 · AdequateInformational 17Details
Commit message · Tobin C. Harding

Upgrade secp to 0.31.1

Upgrade to the latest released version of `rust-secp256k1`. Do just
the build errors. Note one deprecated call to `thread_rng()` is added,
I'm not sure why this line was building before but anyways the `rand`
stuff will be done next.

73/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 17/100

This commit updates the underlying cryptographic library (rust-secp256k1) from version 0.30.0 to 0.31.1 and makes the small code changes needed to keep the project compiling. The newer library version may include its own bug fixes, but the commit itself is a routine dependency upgrade rather than a direct fix for a known security flaw in rust-bitcoin.

Security candidateDelete empty fileby Tobin C. Harding · e85045eb · Nov 10, 2025 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · Tobin C. Harding

Delete empty file

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit removes a single empty example file named 'ecdsa-psbt' from the rust-bitcoin repository. The file contained only a blank line and had no executable code, so the change cannot affect software behavior or introduce any security issue.

Security candidateci: fix default permissions to noneby Jose Storopoli · 594327b5 · Nov 3, 2025 · 16 filesMessage 57 · ThinLow 37Details
Commit message · Jose Storopoli

ci: fix default permissions to none

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
credential or privilege stateboot or update path
AI analysis · Low 37/100

This commit tightens the security settings on the project's GitHub Actions workflows. Previously, these automated scripts likely ran with broad default permissions that could let a compromised action read or modify code, open pull requests, or access secrets. The change sets the default permission to 'none' and then explicitly grants each workflow only the minimum permissions it actually needs (mostly just reading the repository, with write access only where required). This is a defensive hardening measure rather than a fix for an active attack.

Security candidateci: actions/checkout with persist-credentials falseby Jose Storopoli · bbe1b79b · Nov 3, 2025 · 15 filesMessage 62 · AdequateLow 42Details
Commit message · Jose Storopoli

ci: actions/checkout with persist-credentials false

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
credential or privilege stateboot or update path
AI analysis · Low 42/100

This commit changes the project's GitHub Actions CI workflows so that after checking out the source code, the temporary GitHub authentication token is no longer kept in memory for later steps. This is a defensive hardening change: it reduces the risk that a compromised third-party action or malicious build step could steal the token and modify the repository or release artifacts. It does not fix an active bug in the Bitcoin library code itself.

Security candidateci: pin actions to tagged hashesby Jose Storopoli · 106a8a98 · Nov 3, 2025 · 16 filesMessage 57 · ThinInformational 15Details
Commit message · Jose Storopoli

ci: pin actions to tagged hashes

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
access controlboot or update path
AI analysis · Informational 15/100

This commit only changes how GitHub Actions automation is configured. It replaces floating version tags like @v5 with exact commit hashes (plus a comment showing the version). This is a standard hardening practice to prevent a compromised third-party action from silently updating under the same tag. It does not change any of the project's actual Bitcoin/Rust code, so it cannot directly introduce or fix a vulnerability in the library users depend on.

Security candidateAdd tests for XOnlyPublicKey functionsby Mitchell Bagot · bae0c57c · Nov 1, 2025 · 1 fileMessage 78 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Add tests for XOnlyPublicKey functions

These tests sanity check the implementations of the from_byte_array
and into_inner functions in the XOnlyPublicKey struct implementation.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit only adds two new unit tests for existing XOnlyPublicKey functions. It does not change any production code, fix bugs, or alter behavior. There is no security issue here.