(Re)apply local modifications

This commit is contained in:
Christian Reitter 2025-07-07 21:05:51 +02:00
commit bd863cc5aa
3 changed files with 25 additions and 4 deletions

View File

@ -1,3 +1,15 @@
# Unsafe Fast Fork
## DO NOT USE THIS LIBRARY
This is an experimental fork with extreme changes that **intentionally break important security mechanisms and functionality** in favor of speed for certain security research workloads.
The forked library version is **completely unsuitable for any type of production use** and receives no support or maintenance of any kind.
It is published primarily as a reference for other researchers. You have been warned.
The original documentation content and other references are kept as-is to limit the repository differences to upstream. However, be aware that none of the contact information, usage guidance or security guarantees still applies since this is a deliberately broken variant of the project.
----
<div align="center">
<h1>Rust Bitcoin</h1>

View File

@ -1,6 +1,7 @@
[package]
name = "bitcoin"
version = "0.33.0-alpha.0"
# fake version for vendoring
version = "0.99.0"
authors = ["Andrew Poelstra <apoelstra@wpsoftware.net>"]
license = "CC0-1.0"
repository = "https://github.com/rust-bitcoin/rust-bitcoin/"
@ -33,7 +34,7 @@ hex = { package = "hex-conservative", version = "0.3.0", default-features = fals
internals = { package = "bitcoin-internals", path = "../internals", features = ["alloc", "hex"] }
io = { package = "bitcoin-io", path = "../io", default-features = false, features = ["alloc", "hashes"] }
primitives = { package = "bitcoin-primitives", path = "../primitives", default-features = false, features = ["alloc", "hex"] }
secp256k1 = { version = "0.30.0", default-features = false, features = ["hashes", "alloc", "rand"] }
secp256k1 = { version = "0.99.0", default-features = false, features = ["hashes", "alloc", "rand"] } # ensure the internal version is actually used
units = { package = "bitcoin-units", path = "../units", default-features = false, features = ["alloc"] }
arbitrary = { version = "1.4", optional = true }

View File

@ -805,10 +805,14 @@ impl Xpriv {
let tweaked =
sk.add_tweak(&self.private_key.into()).expect("statistically impossible to hit");
// BREAKING CHANGE
// parent_fingerprint: self.fingerprint(secp),
// this brings a strong performance improvement
// TODO check performance impact of error handling
Ok(Xpriv {
network: self.network,
depth: self.depth.checked_add(1).ok_or(DerivationError::MaximumDepthExceeded)?,
parent_fingerprint: self.fingerprint(secp),
parent_fingerprint: Default::default(),
child_number: i,
private_key: tweaked,
chain_code: ChainCode::from_hmac(hmac),
@ -963,10 +967,14 @@ impl Xpub {
let tweaked =
self.public_key.add_exp_tweak(secp, &sk.into()).expect("cryptographically unreachable");
// BREAKING CHANGE
// parent_fingerprint: self.fingerprint(),
// this brings less of a performance improvement
// TODO check performance impact of error handling
Ok(Xpub {
network: self.network,
depth: self.depth.checked_add(1).ok_or(DerivationError::MaximumDepthExceeded)?,
parent_fingerprint: self.fingerprint(),
parent_fingerprint: Default::default(),
child_number: i,
public_key: tweaked,
chain_code,