Skip to content

Commit 176ee98

Browse files
committed
Merge rust-bitcoin/rust-bitcoin#1118: Use infallible conversions: Hash -> secp256k1::Message
aeede12 Infallible conversions: `Hash` -> `Message` (Arturo Marquez) Pull request description: Replaces all instances of `secp256k1::Message::from_slice(_).expect(_)` with `secp256k1::Message::from(_)`. This also implements `ThirtyTwoByteHash` for `TapSighashHash`. Closes rust-bitcoin/rust-bitcoin#824 ACKs for top commit: Kixunil: ACK aeede12 tcharding: ACK aeede12 apoelstra: ACK aeede12 Tree-SHA512: cd392f0e93e2560680c579a889a46f7e4484380058b2d8d03b6ecec351d880efa9beea5e3be128158e9e26243b7dfcef1f48a448028d9155958a5af62bcc9ec2
2 parents 9ee7b33 + 4bdf194 commit 176ee98

File tree

4 files changed

+10
-5
lines changed

4 files changed

+10
-5
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ rustdoc-args = ["--cfg", "docsrs"]
3535
[dependencies]
3636
bech32 = { version = "0.8.1", default-features = false }
3737
bitcoin_hashes = { version = "0.11.0", default-features = false }
38-
secp256k1 = { version = "0.24.0", default-features = false }
38+
secp256k1 = { version = "0.24.0", default-features = false, features = ["bitcoin_hashes"] }
3939
core2 = { version = "0.3.0", optional = true, default-features = false }
4040

4141
base64 = { version = "0.13.0", optional = true }

src/util/misc.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,7 @@ mod message_signing {
141141
secp_ctx: &secp256k1::Secp256k1<C>,
142142
msg_hash: sha256d::Hash
143143
) -> Result<PublicKey, MessageSignatureError> {
144-
let msg = secp256k1::Message::from_slice(&msg_hash[..])
145-
.expect("cannot fail");
144+
let msg = secp256k1::Message::from(msg_hash);
146145
let pubkey = secp_ctx.recover_ecdsa(&msg, &self.signature)?;
147146
Ok(PublicKey {
148147
inner: pubkey,
@@ -319,7 +318,7 @@ mod tests {
319318
let secp = secp256k1::Secp256k1::new();
320319
let message = "rust-bitcoin MessageSignature test";
321320
let msg_hash = super::signed_msg_hash(&message);
322-
let msg = secp256k1::Message::from_slice(&msg_hash).expect("message");
321+
let msg = secp256k1::Message::from(msg_hash);
323322

324323

325324
let privkey = secp256k1::SecretKey::new(&mut secp256k1::rand::thread_rng());

src/util/sighash.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1148,7 +1148,7 @@ mod tests {
11481148
hash_ty
11491149
).unwrap();
11501150

1151-
let msg = secp256k1::Message::from_slice(&sighash).unwrap();
1151+
let msg = secp256k1::Message::from(sighash);
11521152
let key_spend_sig = secp.sign_schnorr_with_aux_rand(&msg, &tweaked_keypair, &[0u8; 32]);
11531153

11541154
assert_eq!(expected_internal_pk, internal_key);

src/util/taproot.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ sha256t_hash_newtype!(TapSighashHash, TapSighashTag, MIDSTATE_TAPSIGHASH, 64,
6262
doc="Taproot-tagged hash for the taproot signature hash", false
6363
);
6464

65+
impl secp256k1::ThirtyTwoByteHash for TapSighashHash {
66+
fn into_32(self) -> [u8; 32] {
67+
self.into_inner()
68+
}
69+
}
70+
6571
impl TapTweakHash {
6672
/// Creates a new BIP341 [`TapTweakHash`] from key and tweak. Produces `H_taptweak(P||R)` where
6773
/// `P` is the internal key and `R` is the merkle root.

0 commit comments

Comments
 (0)