What changed, and why it matters
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.
Review the rust-secp256k1 0.31.1 release notes for any security advisories, verify the lockfile changes do not introduce unexpected transitive dependencies, and run the full test suite to ensure cryptographic behavior is unchanged.
Security signals we found
Dependency upgrade of core cryptographic library (secp256k1 0.30.0 -> 0.31.1)
Transitive dependency updates including rand, getrandom, wasi
API migration from reference to value passing for Message/SecretKey
No explicit security fix or CVE reference in commit message or diff
Evidence from the diff
The change bumps the secp256k1 dependency to 0.31.1 and adapts call sites to API changes: Message and SecretKey arguments are now passed by value instead of by reference, and XOnlyPublicKey::from_byte_array now takes a copied array. Lock files are refreshed, pulling in newer rand/getrandom/wasi transitive dependencies. No security vulnerability in rust-bitcoin is patched in the diff; it is a compatibility update.
Changed components
bitcoin/Cargo.tomlbitcoin/src/bip32.rsbitcoin/src/crypto/key.rsbitcoin/src/psbt/mod.rsbitcoin/src/sign_message.rsbitcoin/examples/sign-tx-segwit-v0.rsbitcoin/src/merkle_tree/block.rsCargo-minimal.lockCargo-recent.lockInspect captured patch +165 / −65
diff --git a/Cargo-minimal.lock b/Cargo-minimal.lock
index 860f0dd3..d453e459 100644
--- a/Cargo-minimal.lock
+++ b/Cargo-minimal.lock
@@ -192,6 +192,12 @@ dependencies = [
"cc",
]
+[[package]]
+name = "bitflags"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+
[[package]]
name = "byteorder"
version = "1.3.0"
@@ -206,9 +212,9 @@ checksum = "bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749"
[[package]]
name = "cfg-if"
-version = "0.1.2"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chacha20-poly1305"
@@ -219,13 +225,14 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.2.0"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4"
+checksum = "71393ecc86efbf00e4ca13953979ba8b94cfe549a4b74cc26d8b62f4d8feac2b"
dependencies = [
"cfg-if",
"libc",
"wasi",
+ "windows-targets",
]
[[package]]
@@ -284,9 +291,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
-version = "0.2.143"
+version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edc207893e85c5d6be840e969b496b53d94cec8be2d501b214f50daa97fa8024"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "memmap2"
@@ -299,9 +306,9 @@ dependencies = [
[[package]]
name = "ppv-lite86"
-version = "0.2.8"
+version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea"
+checksum = "c3ca011bd0129ff4ae15cd04c4eef202cadf6c51c21e47aba319b4e0501db741"
[[package]]
name = "proc-macro2"
@@ -323,21 +330,20 @@ dependencies = [
[[package]]
name = "rand"
-version = "0.8.0"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a76330fb486679b4ace3670f117bbc9e16204005c4bde9c4bd372f45bed34f12"
+checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
dependencies = [
- "libc",
"rand_chacha",
"rand_core",
- "rand_hc",
+ "zerocopy",
]
[[package]]
name = "rand_chacha"
-version = "0.3.0"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
"rand_core",
@@ -345,20 +351,12 @@ dependencies = [
[[package]]
name = "rand_core"
-version = "0.6.2"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
+checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff"
dependencies = [
"getrandom",
-]
-
-[[package]]
-name = "rand_hc"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
-dependencies = [
- "rand_core",
+ "zerocopy",
]
[[package]]
@@ -378,9 +376,9 @@ checksum = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
[[package]]
name = "secp256k1"
-version = "0.30.0"
+version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252"
+checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2"
dependencies = [
"bitcoin_hashes 0.14.0",
"rand",
@@ -390,9 +388,9 @@ dependencies = [
[[package]]
name = "secp256k1-sys"
-version = "0.10.0"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1433bd67156263443f14d603720b082dd3121779323fce20cba2aa07b874bc1b"
+checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38"
dependencies = [
"cc",
]
@@ -462,6 +460,93 @@ checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
[[package]]
name = "wasi"
-version = "0.9.0+wasi-snapshot-preview1"
+version = "0.13.0+wasi-0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "652cd73449d0b957a2743b70c72d79d34a5fa505696488f4ca90b46f6da94118"
+dependencies = [
+ "bitflags",
+ "wit-bindgen-rt",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+
+[[package]]
+name = "wit-bindgen-rt"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "026d24a27f6712541fa534f2954bd9e0eb66172f033c2157c0f31d106255c497"
+
+[[package]]
+name = "zerocopy"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df7885ffcb82507a0f213c593e77c5f13d12cb96588d4e835ad7e9423ba034db"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "930ad75608219e8ffdb8962a5433cb2b30064c7ccb564d3b76c2963390b1e435"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/Cargo-recent.lock b/Cargo-recent.lock
index bc02789a..3a92d0ae 100644
--- a/Cargo-recent.lock
+++ b/Cargo-recent.lock
@@ -221,13 +221,14 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.2.15"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [
"cfg-if",
"libc",
- "wasi",
+ "r-efi",
+ "wasip2",
]
[[package]]
@@ -332,22 +333,27 @@ dependencies = [
"proc-macro2",
]
+[[package]]
+name = "r-efi"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
+
[[package]]
name = "rand"
-version = "0.8.5"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
dependencies = [
- "libc",
"rand_chacha",
"rand_core",
]
[[package]]
name = "rand_chacha"
-version = "0.3.1"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
"rand_core",
@@ -355,9 +361,9 @@ dependencies = [
[[package]]
name = "rand_core"
-version = "0.6.4"
+version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
dependencies = [
"getrandom",
]
@@ -379,9 +385,9 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
[[package]]
name = "secp256k1"
-version = "0.30.0"
+version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252"
+checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2"
dependencies = [
"bitcoin_hashes 0.14.0",
"rand",
@@ -391,9 +397,9 @@ dependencies = [
[[package]]
name = "secp256k1-sys"
-version = "0.10.1"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9"
+checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38"
dependencies = [
"cc",
]
@@ -469,10 +475,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
[[package]]
-name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+name = "wasip2"
+version = "1.0.1+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wit-bindgen"
+version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
[[package]]
name = "zerocopy"
diff --git a/bitcoin/Cargo.toml b/bitcoin/Cargo.toml
index a09076e2..91fb9779 100644
--- a/bitcoin/Cargo.toml
+++ b/bitcoin/Cargo.toml
@@ -33,7 +33,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"] }
+secp256k1 = { version = "0.31.1", default-features = false, features = ["hashes", "alloc"] }
units = { package = "bitcoin-units", path = "../units", version = "1.0.0-rc.2", default-features = false, features = ["alloc"] }
arbitrary = { version = "1.4.1", optional = true }
diff --git a/bitcoin/examples/sign-tx-segwit-v0.rs b/bitcoin/examples/sign-tx-segwit-v0.rs
index e0477070..a8c43042 100644
--- a/bitcoin/examples/sign-tx-segwit-v0.rs
+++ b/bitcoin/examples/sign-tx-segwit-v0.rs
@@ -70,7 +70,7 @@ fn main() {
// Sign the sighash using the secp256k1 library (exported by rust-bitcoin).
let msg = Message::from(sighash);
- let signature = secp.sign_ecdsa(&msg, &sk);
+ let signature = secp.sign_ecdsa(msg, &sk);
// Update the witness stack.
let signature = bitcoin::ecdsa::Signature { signature, sighash_type };
diff --git a/bitcoin/src/bip32.rs b/bitcoin/src/bip32.rs
index 1abebbf1..d8a470f6 100644
--- a/bitcoin/src/bip32.rs
+++ b/bitcoin/src/bip32.rs
@@ -721,7 +721,7 @@ impl Xpriv {
parent_fingerprint: Default::default(),
child_number: ChildNumber::ZERO_NORMAL,
private_key: secp256k1::SecretKey::from_byte_array(
- hmac.as_byte_array().split_array::<32, 32>().0,
+ *hmac.as_byte_array().split_array::<32, 32>().0,
)
.expect("cryptographically unreachable"),
chain_code: ChainCode::from_hmac(hmac),
@@ -800,7 +800,7 @@ impl Xpriv {
engine.input(&u32::from(i).to_be_bytes());
let hmac: Hmac<sha512::Hash> = engine.finalize();
let sk =
- secp256k1::SecretKey::from_byte_array(hmac.as_byte_array().split_array::<32, 32>().0)
+ secp256k1::SecretKey::from_byte_array(*hmac.as_byte_array().split_array::<32, 32>().0)
.expect("statistically impossible to hit");
let tweaked =
sk.add_tweak(&self.private_key.into()).expect("statistically impossible to hit");
@@ -837,7 +837,7 @@ impl Xpriv {
parent_fingerprint,
child_number,
chain_code,
- private_key: secp256k1::SecretKey::from_byte_array(private_key)?,
+ private_key: secp256k1::SecretKey::from_byte_array(*private_key)?,
})
}
@@ -944,7 +944,7 @@ impl Xpub {
let hmac = engine.finalize();
let private_key = secp256k1::SecretKey::from_byte_array(
- hmac.as_byte_array().split_array::<32, 32>().0,
+ *hmac.as_byte_array().split_array::<32, 32>().0,
)
.expect("cryptographically unreachable");
let chain_code = ChainCode::from_hmac(hmac);
diff --git a/bitcoin/src/crypto/key.rs b/bitcoin/src/crypto/key.rs
index 5b4cae89..60fefe7b 100644
--- a/bitcoin/src/crypto/key.rs
+++ b/bitcoin/src/crypto/key.rs
@@ -55,7 +55,7 @@ impl XOnlyPublicKey {
pub fn from_byte_array(
data: &[u8; constants::SCHNORR_PUBLIC_KEY_SIZE],
) -> Result<Self, ParseXOnlyPublicKeyError> {
- secp256k1::XOnlyPublicKey::from_byte_array(data)
+ secp256k1::XOnlyPublicKey::from_byte_array(*data)
.map(Self::new)
.map_err(|_| ParseXOnlyPublicKeyError::InvalidXCoordinate)
}
@@ -325,7 +325,7 @@ impl PublicKey {
msg: secp256k1::Message,
sig: ecdsa::Signature,
) -> Result<(), secp256k1::Error> {
- secp.verify_ecdsa(&msg, &sig.signature, &self.inner)
+ secp.verify_ecdsa(msg, &sig.signature, &self.inner)
}
}
@@ -467,7 +467,7 @@ impl CompressedPublicKey {
msg: secp256k1::Message,
sig: ecdsa::Signature,
) -> Result<(), secp256k1::Error> {
- Ok(secp.verify_ecdsa(&msg, &sig.signature, &self.0)?)
+ Ok(secp.verify_ecdsa(msg, &sig.signature, &self.0)?)
}
}
@@ -578,7 +578,7 @@ impl PrivateKey {
data: [u8; 32],
network: impl Into<NetworkKind>,
) -> Result<Self, secp256k1::Error> {
- Ok(Self::new(secp256k1::SecretKey::from_byte_array(&data)?, network))
+ Ok(Self::new(secp256k1::SecretKey::from_byte_array(data)?, network))
}
/// Deserializes a private key from a slice.
@@ -640,7 +640,7 @@ impl PrivateKey {
}
};
- Ok(Self { compressed, network, inner: secp256k1::SecretKey::from_byte_array(key)? })
+ Ok(Self { compressed, network, inner: secp256k1::SecretKey::from_byte_array(*key)? })
}
/// Returns a new private key with the negated secret value.
@@ -1851,7 +1851,7 @@ mod tests {
let key_bytes = &<[u8; 32]>::from_hex(
"5b1e57ec453cd33fdc7cfc901450a3931fd315422558f2fb7fefb064e6e7d60d",
).expect("Failed to convert hex string to byte array");
- let inner_key = secp256k1::XOnlyPublicKey::from_byte_array(key_bytes)
+ let inner_key = secp256k1::XOnlyPublicKey::from_byte_array(*key_bytes)
.expect("Failed to create a secp256k1 x-only public key from a byte array");
let btc_pubkey = XOnlyPublicKey::new(inner_key);
// Confirm that the into_inner() returns the same data that was initially wrapped
diff --git a/bitcoin/src/merkle_tree/block.rs b/bitcoin/src/merkle_tree/block.rs
index 55eee568..f06a3809 100644
--- a/bitcoin/src/merkle_tree/block.rs
+++ b/bitcoin/src/merkle_tree/block.rs
@@ -576,7 +576,7 @@ mod tests {
#[cfg(feature = "rand-std")]
fn pmt_test(tx_count: usize) {
- let mut rng = thread_rng();
+ let mut rng = secp256k1::rand::thread_rng();
// Create some fake tx ids
let tx_ids = (1..=tx_count)
.map(|i| format!("{:064x}", i).parse::<Txid>().unwrap())
diff --git a/bitcoin/src/psbt/mod.rs b/bitcoin/src/psbt/mod.rs
index c62c25d9..95aaf3b8 100644
--- a/bitcoin/src/psbt/mod.rs
+++ b/bitcoin/src/psbt/mod.rs
@@ -379,7 +379,7 @@ impl Psbt {
};
let sig = ecdsa::Signature {
- signature: secp.sign_ecdsa(&msg, &sk.inner),
+ signature: secp.sign_ecdsa(msg, &sk.inner),
sighash_type: sighash_ty,
};
diff --git a/bitcoin/src/sign_message.rs b/bitcoin/src/sign_message.rs
index 4468b0e3..d905cddb 100644
--- a/bitcoin/src/sign_message.rs
+++ b/bitcoin/src/sign_message.rs
@@ -139,7 +139,7 @@ mod message_signing {
msg_hash: sha256d::Hash,
) -> Result<PublicKey, MessageSignatureError> {
let msg = secp256k1::Message::from_digest(msg_hash.to_byte_array());
- let pubkey = secp_ctx.recover_ecdsa(&msg, &self.signature)?;
+ let pubkey = secp_ctx.recover_ecdsa(msg, &self.signature)?;
Ok(PublicKey { inner: pubkey, compressed: self.compressed })
}
@@ -224,7 +224,7 @@ pub fn sign<C: secp256k1::Signing>(
) -> MessageSignature {
let msg_hash = signed_msg_hash(msg);
let msg_to_sign = secp256k1::Message::from_digest(msg_hash.to_byte_array());
- let secp_sig = secp_ctx.sign_ecdsa_recoverable(&msg_to_sign, &privkey);
+ let secp_sig = secp_ctx.sign_ecdsa_recoverable(msg_to_sign, &privkey);
MessageSignature { signature: secp_sig, compressed: true }
}
@@ -253,7 +253,7 @@ mod tests {
let msg_hash = super::signed_msg_hash(message);
let msg = secp256k1::Message::from_digest(msg_hash.to_byte_array());
let privkey = secp256k1::SecretKey::new(&mut secp256k1::rand::thread_rng());
- let secp_sig = secp.sign_ecdsa_recoverable(&msg, &privkey);
+ let secp_sig = secp.sign_ecdsa_recoverable(msg, &privkey);
let signature = super::MessageSignature { signature: secp_sig, compressed: true };
assert_eq!(signature.to_string(), super::sign(&secp, message, privkey).to_string());
Why this scored 17/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.