chacha20_poly1305: bump version to 0.2.1
What changed, and why it matters
This commit is a version bump for the chacha20-poly1305 sub-crate from 0.2.0 to 0.2.1. The changelog notes that the release fixes Poly1305 tag verification to use constant-time equality, which is a security-relevant change because non-constant-time comparison can leak information to an attacker. However, the actual code change is not present in this commit; it only updates version numbers, lock files, and changelog links. The lock-file changes also pull in an older bitcoin_hashes version (0.12.0) for a dependency, which is a routine dependency-resolution side effect and not a code change in this crate.
Review pull request #6125 to confirm the constant-time equality implementation is correct and comprehensive. If using chacha20-poly1305 0.2.0, upgrade to 0.2.1 or later. Verify that the lock-file dependency downgrade to bitcoin_hashes 0.12.0 does not introduce compatibility or security issues in downstream crates.
Security signals we found
Changelog describes a security-relevant fix: constant-time equality for Poly1305 tag verification
AEAD tag verification is a classic timing side-channel target
No source-code changes are present in the commit; fix is only referenced by changelog and PR number
Version bump and lock-file updates are the only mechanical changes visible
Evidence from the diff
The diff updates Cargo.toml version, CHANGELOG.md, and both Cargo-minimal.lock and Cargo-recent.lock to reflect chacha20-poly1305 0.2.1. The changelog explicitly states: ‘Use constant-time equality for Poly1305 tag verification #6125.’ Non-constant-time tag comparison in AEAD constructions can enable timing side-channel attacks that reveal information about the authentication tag. The lock-file additionally records registry versions of bitcoin-private 0.1.0 and bitcoin_hashes 0.12.0, and changes a secp256k1 dependency to resolve against bitcoin_hashes 0.12.0. No source code implementing the fix is included in this commit, so the security classification is based on the changelog description rather than direct diff evidence.
Changed components
chacha20-poly1305 crate (version 0.2.0 -> 0.2.1)Poly1305 tag verification routine (referenced in changelog, not shown in diff)Cargo-minimal.lock / Cargo-recent.lock dependency resolutionInspect captured patch +26 / −5
diff --git a/Cargo-minimal.lock b/Cargo-minimal.lock
index 38770007..5cbc4932 100644
--- a/Cargo-minimal.lock
+++ b/Cargo-minimal.lock
@@ -259,6 +259,12 @@ dependencies = [
"serde_json",
]
+[[package]]
+name = "bitcoin-private"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57"
+
[[package]]
name = "bitcoin-taproot-primitives"
version = "0.1.0"
@@ -294,6 +300,15 @@ dependencies = [
"serde_test",
]
+[[package]]
+name = "bitcoin_hashes"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501"
+dependencies = [
+ "bitcoin-private",
+]
+
[[package]]
name = "bitcoin_hashes"
version = "0.14.101"
@@ -353,7 +368,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chacha20-poly1305"
-version = "0.2.0"
+version = "0.2.1"
dependencies = [
"hex-conservative 1.1.0",
]
@@ -507,7 +522,7 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e0cc0f1cf93f4969faf3ea1c7d8a9faed25918d96affa959720823dfe86d4f3"
dependencies = [
- "bitcoin_hashes 0.14.101",
+ "bitcoin_hashes 0.12.0",
"secp256k1-sys 0.10.0",
"serde",
]
diff --git a/Cargo-recent.lock b/Cargo-recent.lock
index 37cbaf76..f8c76d6d 100644
--- a/Cargo-recent.lock
+++ b/Cargo-recent.lock
@@ -351,7 +351,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chacha20-poly1305"
-version = "0.2.0"
+version = "0.2.1"
dependencies = [
"hex-conservative 1.1.0",
]
diff --git a/chacha20_poly1305/CHANGELOG.md b/chacha20_poly1305/CHANGELOG.md
index 3c9ac3de..26609db4 100644
--- a/chacha20_poly1305/CHANGELOG.md
+++ b/chacha20_poly1305/CHANGELOG.md
@@ -2,6 +2,11 @@
## [Unreleased]
+## [0.2.1] - 2026-07-28
+
+* Use constant-time equality for Poly1305 tag verification [#6125](https://github.com/rust-bitcoin/rust-bitcoin/pull/6125).
+* Upgrade to the stabilized `hex-conservative` dependency, but no public API changes [#6148](https://github.com/rust-bitcoin/rust-bitcoin/pull/6148).
+
## [0.2.0] - 2026-04-03
* Add fuzzing support [#5854](https://github.com/rust-bitcoin/rust-bitcoin/pull/5854).
@@ -21,7 +26,8 @@
* Initial release to create the chacha20-poly1305 crate.
-[Unreleased]: https://github.com/rust-bitcoin/rust-bitcoin/compare/chacha20-poly1305-0.2.0...HEAD
+[Unreleased]: https://github.com/rust-bitcoin/rust-bitcoin/compare/chacha20-poly1305-0.2.1...HEAD
+[0.2.1]: https://github.com/rust-bitcoin/rust-bitcoin/compare/chacha20-poly1305-0.2.0...chacha20-poly1305-0.2.1
[0.2.0]: https://github.com/rust-bitcoin/rust-bitcoin/compare/chacha20-poly1305-0.1.2...chacha20-poly1305-0.2.0
[0.1.2]: https://github.com/rust-bitcoin/rust-bitcoin/compare/chacha20-poly1305-0.1.1...chacha20-poly1305-0.1.2
[0.1.1]: https://github.com/rust-bitcoin/rust-bitcoin/compare/chacha20-poly1305-0.1.0...chacha20-poly1305-0.1.1
diff --git a/chacha20_poly1305/Cargo.toml b/chacha20_poly1305/Cargo.toml
index f7e2b421..83e1f064 100644
--- a/chacha20_poly1305/Cargo.toml
+++ b/chacha20_poly1305/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "chacha20-poly1305"
-version = "0.2.0"
+version = "0.2.1"
authors = ["Nick Johnson <nick@yonson.dev>", "Robert Netzke <rustaceanrob@protonmail.com>"]
license = "CC0-1.0"
repository = "https://github.com/rust-bitcoin/rust-bitcoin/"
Why this scored 46/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.