What changed, and why it matters
This commit is a routine release preparation: it bumps the version number of the `bitcoin-crypto` crate from 0.2.0 to 0.3.0, updates the changelog, and adjusts dependency references in related crates' configuration files and lock files. There are no code changes, bug fixes, or security patches in the diff.
No security action required. Treat as a normal release-management commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit only modifies metadata files (Cargo.toml, Cargo.lock, CHANGELOG.md). It updates the bitcoin-crypto version requirement from 0.2.0 to 0.3.0 across dependent crates (addresses, bitcoin, key_expression, taproot_primitives) and records the 0.3.0 release notes. No source code, logic, or cryptographic implementation is changed.
Changed components
bitcoin-crypto crate versioningCargo.toml dependency declarationsCargo.lock filescrypto/CHANGELOG.mdInspect captured patch +26 / −8
### Cargo-minimal.lock
@@ -141,7 +141,7 @@ dependencies = [
[[package]]
name = "bitcoin-crypto"
-version = "0.2.0"
+version = "0.3.0"
dependencies = [
"arbitrary",
"base58ck 0.5.0",
### Cargo-recent.lock
@@ -140,7 +140,7 @@ dependencies = [
[[package]]
name = "bitcoin-crypto"
-version = "0.2.0"
+version = "0.3.0"
dependencies = [
"arbitrary",
"base58ck 0.5.0",
### addresses/Cargo.toml
@@ -21,7 +21,7 @@ alloc = ["base58/alloc", "bech32/alloc", "crypto/alloc", "hashes/alloc", "intern
[dependencies]
base58 = { package = "base58ck", path = "../base58", version = "0.5.0", default-features = false, features = [] }
bech32 = { version = "0.11.0", default-features = false, features = [] }
-crypto = { package = "bitcoin-crypto", path = "../crypto", version = "0.2.0", default-features = false, features = ["hex"] }
+crypto = { package = "bitcoin-crypto", path = "../crypto", version = "0.3.0", default-features = false, features = ["hex"] }
hashes = { package = "bitcoin_hashes", path = "../hashes", version = "1.0.0", default-features = false, features = ["hex"] }
internals = { package = "bitcoin-internals", path = "../internals", version = "0.6.0" }
taproot_primitives = { package = "bitcoin-taproot-primitives", path = "../taproot_primitives", version = "0.1.0", default-features = false, features = [] }
### bitcoin/Cargo.toml
@@ -29,7 +29,7 @@ arbitrary = ["crypto/arbitrary", "dep:arbitrary", "units/arbitrary", "primitives
addresses = { package = "bitcoin-addresses", path = "../addresses", version = "0.0.0", default-features = false, features = ["alloc"] }
base58 = { package = "base58ck", path = "../base58", version = "0.5.0", default-features = false, features = ["alloc"] }
bech32 = { version = "0.11.0", default-features = false, features = ["alloc"] }
-crypto = { package = "bitcoin-crypto", path = "../crypto", version = "0.2.0", default-features = false, features = ["alloc", "hex"] }
+crypto = { package = "bitcoin-crypto", path = "../crypto", version = "0.3.0", default-features = false, features = ["alloc", "hex"] }
hashes = { package = "bitcoin_hashes", path = "../hashes", version = "1.1.0", default-features = false, features = ["alloc", "hex"] }
key-expression = { package = "bitcoin-key-expression", path = "../key_expression", version = "0.1.0", default-features = false, features = ["alloc"] }
encoding = { package = "bitcoin-consensus-encoding", path = "../consensus_encoding", version = "1.1.0", default-features = false, features = ["alloc", "hex"] }
### crypto/CHANGELOG.md
@@ -2,6 +2,23 @@
## [Unreleased]
+## [0.3.0] - 2026-07-30
+
+- Remove `PrivateKeyExt` and make `PrivateKey::as_inner` private [#6345](https://github.com/rust-bitcoin/rust-bitcoin/pull/6345)
+- Remove `XOnlyPublicKey::as_inner` and make `to_inner` private for public keys [#5619](https://github.com/rust-bitcoin/rust-bitcoin/pull/5619)
+- Remove Verification re-exports [#6319](https://github.com/rust-bitcoin/rust-bitcoin/pull/6319)
+- Improve sighash errors [#6318](https://github.com/rust-bitcoin/rust-bitcoin/pull/6318)
+- Add `XOnlyPublicKey::verify` [#6261](https://github.com/rust-bitcoin/rust-bitcoin/pull/6261)
+- Extend ECDSA `Signature` [#6260](https://github.com/rust-bitcoin/rust-bitcoin/pull/6260)
+- Split `key::encapsulate` and rename `LegacyPublicKey::to_bytes` [#6238](https://github.com/rust-bitcoin/rust-bitcoin/pull/6238)
+- Introduce new errors to remove `secp256k1::Error` [#6183](https://github.com/rust-bitcoin/rust-bitcoin/pull/6183)
+- Remove alloc feature gate from taproot module [#6155](https://github.com/rust-bitcoin/rust-bitcoin/pull/6155)
+- Add `with_compressedness` to `LegacyPublicKey` [#6119](https://github.com/rust-bitcoin/rust-bitcoin/pull/6119)
+- Clean up key module [#6118](https://github.com/rust-bitcoin/rust-bitcoin/pull/6118)
+- Remove `with_serialized` from `LegacyPublicKey` [#6116](https://github.com/rust-bitcoin/rust-bitcoin/pull/6116)
+- Move `taproot` module to `crypto` [#6097](https://github.com/rust-bitcoin/rust-bitcoin/pull/6097)
+- Gate all usage of `hex-conservative` behind `hex` feature [#6043](https://github.com/rust-bitcoin/rust-bitcoin/pull/6043)
+
## [0.2.0] - 2026-04-27
- Re-export types and extern crates [#5858](https://github.com/rust-bitcoin/rust-bitcoin/pull/5858)
@@ -19,5 +36,6 @@
- Empty crate to reserve the name on crates.io
-[Unreleased]: https://github.com/rust-bitcoin/rust-bitcoin/compare/bitcoin-crypto-0.2.0...HEAD
+[Unreleased]: https://github.com/rust-bitcoin/rust-bitcoin/compare/bitcoin-crypto-0.3.0...HEAD
+[0.3.0]: https://github.com/rust-bitcoin/rust-bitcoin/compare/bitcoin-crypto-0.2.0...bitcoin-crypto-0.3.0
[0.2.0]: https://github.com/rust-bitcoin/rust-bitcoin/compare/bitcoin-crypto-0.1.0...bitcoin-crypto-0.2.0
### crypto/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "bitcoin-crypto"
-version = "0.2.0"
+version = "0.3.0"
authors = ["Andrew Poelstra <apoelstra@wpsoftware.net>"]
license = "CC0-1.0"
repository = "https://github.com/rust-bitcoin/rust-bitcoin"
### key_expression/Cargo.toml
@@ -22,7 +22,7 @@ arbitrary = ["crypto/arbitrary", "dep:arbitrary", "hashes/arbitrary", "secp256k1
[dependencies]
base58 = { package = "base58ck", path = "../base58", version = "0.5.0", default-features = false }
-crypto = { package = "bitcoin-crypto", path = "../crypto", version = "0.2.0", default-features = false }
+crypto = { package = "bitcoin-crypto", path = "../crypto", version = "0.3.0", default-features = false }
hashes = { package = "bitcoin_hashes", path = "../hashes", version = "1.0.0", default-features = false, features = ["hex"] }
hex = { package = "hex-conservative", version = "1.1.0", default-features = false, features = ["alloc"] }
internals = { package = "bitcoin-internals", path = "../internals", version = "0.6.0" }
### taproot_primitives/Cargo.toml
@@ -21,7 +21,7 @@ arbitrary = ["dep:arbitrary", "crypto/arbitrary", "secp256k1/arbitrary"]
hex = ["crypto/hex", "encoding/hex", "hashes/hex"]
[dependencies]
-crypto = { package = "bitcoin-crypto", path = "../crypto", version = "0.2.0", default-features = false }
+crypto = { package = "bitcoin-crypto", path = "../crypto", version = "0.3.0", default-features = false }
encoding = { package = "bitcoin-consensus-encoding", path = "../consensus_encoding", version = "1.1.0", default-features = false, features = [] }
hashes = { package = "bitcoin_hashes", path = "../hashes", version = "1.0.0", default-features = false }
internals = { package = "bitcoin-internals", path = "../internals", version = "0.6.0" }Why this scored 15/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.