Skip to content

Commit 64f435e

Browse files
committed
Upgrade secp to 0.32.0
Based on the release tracking PR rust-bitcoin/rust-secp256k1#843 Just do the build errors, lint warnings done next.
1 parent 101caeb commit 64f435e

File tree

7 files changed

+21
-21
lines changed

7 files changed

+21
-21
lines changed

Cargo.toml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,5 @@
22
members = ["addresses", "base58", "bitcoin", "chacha20_poly1305", "consensus_encoding", "fuzz", "hashes", "internals", "io", "p2p", "primitives", "units"]
33
resolver = "2"
44

5-
# Keep this patch for hashes because secp256k1 depends on bitcoin-hashes via crates.io
6-
# This allows testing changes to hashes with secp256k1
7-
# See https://github.com/rust-bitcoin/rust-bitcoin/pull/4284#pullrequestreview-2714442229
8-
[patch.crates-io.bitcoin_hashes]
9-
path = "hashes"
5+
[patch.crates-io.secp256k1]
6+
path = "../rust-secp256k1"

bitcoin/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ hex = { package = "hex-conservative", version = "0.3.0", default-features = fals
3333
internals = { package = "bitcoin-internals", path = "../internals", features = ["alloc", "hex"] }
3434
io = { package = "bitcoin-io", path = "../io", default-features = false, features = ["alloc", "hashes"] }
3535
primitives = { package = "bitcoin-primitives", path = "../primitives", default-features = false, features = ["alloc", "hex"] }
36-
secp256k1 = { version = "0.31.1", default-features = false, features = ["hashes", "alloc", "rand"] }
36+
secp256k1 = { version = "0.32.0", default-features = false, features = ["alloc", "rand"] }
3737
units = { package = "bitcoin-units", path = "../units", default-features = false, features = ["alloc"] }
3838

3939
arbitrary = { version = "1.4.1", optional = true }

bitcoin/examples/taproot-psbt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -746,7 +746,7 @@ fn sign_psbt_taproot(
746746
sighash_type: TapSighashType,
747747
secp: &Secp256k1<secp256k1::All>,
748748
) {
749-
let keypair = secp256k1::Keypair::from_seckey_byte_array(secp, secret_key.secret_bytes()).unwrap();
749+
let keypair = secp256k1::Keypair::from_seckey_byte_array(secret_key.secret_bytes()).unwrap();
750750
let keypair = match leaf_hash {
751751
None => keypair.tap_tweak(secp, psbt_input.tap_merkle_root).to_keypair(),
752752
Some(_) => keypair, // no tweak for script spend

bitcoin/src/bip32.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,7 @@ impl Xpriv {
745745
/// Constructs a new BIP-0340 keypair for Schnorr signatures and Taproot use matching the internal
746746
/// secret key representation.
747747
pub fn to_keypair<C: secp256k1::Signing>(self, secp: &Secp256k1<C>) -> Keypair {
748-
Keypair::from_seckey_byte_array(secp, self.private_key.secret_bytes())
748+
Keypair::from_seckey_byte_array(self.private_key.secret_bytes())
749749
.expect("BIP-0032 internal private key representation is broken")
750750
}
751751

@@ -961,7 +961,7 @@ impl Xpub {
961961
) -> Result<Xpub, DerivationError> {
962962
let (sk, chain_code) = self.ckd_pub_tweak(i)?;
963963
let tweaked =
964-
self.public_key.add_exp_tweak(secp, &sk.into()).expect("cryptographically unreachable");
964+
self.public_key.add_exp_tweak(&sk.into()).expect("cryptographically unreachable");
965965

966966
Ok(Xpub {
967967
network: self.network,

bitcoin/src/crypto/key.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ impl PublicKey {
326326
msg: secp256k1::Message,
327327
sig: ecdsa::Signature,
328328
) -> Result<(), secp256k1::Error> {
329-
secp.verify_ecdsa(msg, &sig.signature, &self.inner)
329+
secp.verify_ecdsa(&sig.signature, msg, &self.inner)
330330
}
331331
}
332332

@@ -468,7 +468,7 @@ impl CompressedPublicKey {
468468
msg: secp256k1::Message,
469469
sig: ecdsa::Signature,
470470
) -> Result<(), secp256k1::Error> {
471-
Ok(secp.verify_ecdsa(msg, &sig.signature, &self.0)?)
471+
Ok(secp.verify_ecdsa(&sig.signature, msg, &self.0)?)
472472
}
473473
}
474474

bitcoin/src/sign_message.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ mod message_signing {
104104
pub fn serialize(&self) -> [u8; 65] {
105105
let (recid, raw) = self.signature.serialize_compact();
106106
let mut serialized = [0u8; 65];
107-
serialized[0] = i32::from(recid) as u8 + if self.compressed { 31 } else { 27 };
107+
serialized[0] = recid.to_u8() + if self.compressed { 31 } else { 27 };
108108
serialized[1..].copy_from_slice(&raw[..]);
109109
serialized
110110
}
@@ -139,7 +139,7 @@ mod message_signing {
139139
msg_hash: sha256d::Hash,
140140
) -> Result<PublicKey, MessageSignatureError> {
141141
let msg = secp256k1::Message::from_digest(msg_hash.to_byte_array());
142-
let pubkey = secp_ctx.recover_ecdsa(msg, &self.signature)?;
142+
let pubkey = self.signature.recover_ecdsa(msg)?;
143143
Ok(PublicKey { inner: pubkey, compressed: self.compressed })
144144
}
145145

@@ -217,14 +217,15 @@ pub fn signed_msg_hash(msg: impl AsRef<[u8]>) -> sha256d::Hash {
217217

218218
/// Sign message using Bitcoin's message signing format.
219219
#[cfg(feature = "secp-recovery")]
220-
pub fn sign<C: secp256k1::Signing>(
221-
secp_ctx: &secp256k1::Secp256k1<C>,
220+
pub fn sign(
222221
msg: impl AsRef<[u8]>,
223222
privkey: SecretKey,
224223
) -> MessageSignature {
224+
use secp256k1::ecdsa::RecoverableSignature;
225+
225226
let msg_hash = signed_msg_hash(msg);
226227
let msg_to_sign = secp256k1::Message::from_digest(msg_hash.to_byte_array());
227-
let secp_sig = secp_ctx.sign_ecdsa_recoverable(msg_to_sign, &privkey);
228+
let secp_sig = RecoverableSignature::sign_ecdsa_recoverable(msg_to_sign, &privkey);
228229
MessageSignature { signature: secp_sig, compressed: true }
229230
}
230231

@@ -244,17 +245,19 @@ mod tests {
244245
#[test]
245246
#[cfg(all(feature = "secp-recovery", feature = "base64", feature = "rand-std"))]
246247
fn message_signature() {
248+
use secp256k1::ecdsa::RecoverableSignature;
249+
247250
use crate::{Address, AddressType, Network, NetworkKind};
248251

249252
let secp = secp256k1::Secp256k1::new();
250253
let message = "rust-bitcoin MessageSignature test";
251254
let msg_hash = super::signed_msg_hash(message);
252255
let msg = secp256k1::Message::from_digest(msg_hash.to_byte_array());
253256
let privkey = secp256k1::SecretKey::new(&mut secp256k1::rand::rng());
254-
let secp_sig = secp.sign_ecdsa_recoverable(msg, &privkey);
257+
let secp_sig = RecoverableSignature::sign_ecdsa_recoverable(msg, &privkey);
255258
let signature = super::MessageSignature { signature: secp_sig, compressed: true };
256259

257-
assert_eq!(signature.to_string(), super::sign(&secp, message, privkey).to_string());
260+
assert_eq!(signature.to_string(), super::sign(message, privkey).to_string());
258261
assert_eq!(signature.to_base64(), signature.to_string());
259262
let signature2 = &signature.to_string().parse::<super::MessageSignature>().unwrap();
260263
let pubkey = signature2

bitcoin/tests/psbt-sign-taproot.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ fn psbt_sign_taproot() {
6060
let script3 = create_basic_single_sig_script(secp, sk_path[2].0); // m/86'/1'/0'/0/2
6161

6262
// Just use one of the secret keys for the key path spend.
63-
let kp = Keypair::from_seckey_str(secp, sk_path[2].0).expect("failed to create keypair");
63+
let kp = Keypair::from_seckey_str(sk_path[2].0).expect("failed to create keypair");
6464

6565
let internal_key = kp.x_only_public_key().0; // Ignore the parity.
6666

@@ -114,7 +114,7 @@ fn psbt_sign_taproot() {
114114
// script path spend
115115
{
116116
// use private key of path "m/86'/1'/0'/0/1" as signing key
117-
let kp = Keypair::from_seckey_str(secp, sk_path[1].0).expect("failed to create keypair");
117+
let kp = Keypair::from_seckey_str(sk_path[1].0).expect("failed to create keypair");
118118
let x_only_pubkey = kp.x_only_public_key().0;
119119
let signing_key_path = sk_path[1].1;
120120

@@ -167,7 +167,7 @@ fn psbt_sign_taproot() {
167167
}
168168

169169
fn create_basic_single_sig_script(secp: &Secp256k1<secp256k1::All>, sk: &str) -> TapScriptBuf {
170-
let kp = Keypair::from_seckey_str(secp, sk).expect("failed to create keypair");
170+
let kp = Keypair::from_seckey_str(sk).expect("failed to create keypair");
171171
let x_only_pubkey = kp.x_only_public_key().0;
172172
script::Builder::new()
173173
.push_slice(x_only_pubkey.serialize())

0 commit comments

Comments
 (0)