Merge rust-bitcoin/rust-secp256k1#588: Bump version to 0.27.0

45395190c2 Bump version to 0.27.0 (Tobin C. Harding)
8e772493dc Depend on bitcoin_hashes v0.12 (Tobin C. Harding)

Pull request description:

  Depend on the newly released `bitcoin_hashes` version 0.12, add changelog, and bump to v0.27.0

ACKs for top commit:
  Kixunil:
    ACK 45395190c2
  apoelstra:
    ACK 45395190c2

Tree-SHA512: 9ea99c88a90d0d34dfbbd3e467ea77a2981a7eae75c52163eed805381683e7555ea841d9c953787ab878ce8848d26fd9a593bb2eb52b5be28cee3930a373434c
This commit is contained in:
Andrew Poelstra 2023-03-15 14:04:07 +00:00
commit 1432fd144d
No known key found for this signature in database
GPG Key ID: C588D63CE41B97C1
6 changed files with 18 additions and 12 deletions

View File

@ -1,3 +1,9 @@
# 0.27.0 - 2023-13-15
* [Depend on newly release `bitcoin_hashes` v0.12](https://github.com/rust-bitcoin/rust-secp256k1/pull/588).
* [Implement `Debug` trait for `Scalar` type](https://github.com/rust-bitcoin/rust-secp256k1/pull/578).
* [Implement `insecure-erase`](https://github.com/rust-bitcoin/rust-secp256k1/pull/582).
# 0.26.0 - 2202-12-19 # 0.26.0 - 2202-12-19
* Update libsecp25k1 to v0.2.0 * Update libsecp25k1 to v0.2.0

View File

@ -1,6 +1,6 @@
[package] [package]
name = "secp256k1" name = "secp256k1"
version = "0.26.0" version = "0.27.0"
authors = [ "Dawid Ciężarkiewicz <dpc@ucore.info>", authors = [ "Dawid Ciężarkiewicz <dpc@ucore.info>",
"Andrew Poelstra <apoelstra@wpsoftware.net>" ] "Andrew Poelstra <apoelstra@wpsoftware.net>" ]
license = "CC0-1.0" license = "CC0-1.0"
@ -42,7 +42,7 @@ serde = { version = "1.0", default-features = false, optional = true }
# You likely only want to enable these if you explicitly do not want to use "std", otherwise enable # You likely only want to enable these if you explicitly do not want to use "std", otherwise enable
# the respective -std feature e.g., bitcoin-hashes-std # the respective -std feature e.g., bitcoin-hashes-std
bitcoin_hashes = { version = "0.11", default-features = false, optional = true } bitcoin_hashes = { version = "0.12", default-features = false, optional = true }
rand = { version = "0.8", default-features = false, optional = true } rand = { version = "0.8", default-features = false, optional = true }
[dev-dependencies] [dev-dependencies]

View File

@ -11,7 +11,7 @@ fn verify<C: Verification>(
pubkey: [u8; 33], pubkey: [u8; 33],
) -> Result<bool, Error> { ) -> Result<bool, Error> {
let msg = sha256::Hash::hash(msg); let msg = sha256::Hash::hash(msg);
let msg = Message::from_slice(&msg)?; let msg = Message::from_slice(msg.as_ref())?;
let sig = ecdsa::Signature::from_compact(&sig)?; let sig = ecdsa::Signature::from_compact(&sig)?;
let pubkey = PublicKey::from_slice(&pubkey)?; let pubkey = PublicKey::from_slice(&pubkey)?;
@ -24,7 +24,7 @@ fn sign<C: Signing>(
seckey: [u8; 32], seckey: [u8; 32],
) -> Result<ecdsa::Signature, Error> { ) -> Result<ecdsa::Signature, Error> {
let msg = sha256::Hash::hash(msg); let msg = sha256::Hash::hash(msg);
let msg = Message::from_slice(&msg)?; let msg = Message::from_slice(msg.as_ref())?;
let seckey = SecretKey::from_slice(&seckey)?; let seckey = SecretKey::from_slice(&seckey)?;
Ok(secp.sign_ecdsa(&msg, &seckey)) Ok(secp.sign_ecdsa(&msg, &seckey))
} }

View File

@ -11,7 +11,7 @@ fn recover<C: Verification>(
recovery_id: u8, recovery_id: u8,
) -> Result<PublicKey, Error> { ) -> Result<PublicKey, Error> {
let msg = sha256::Hash::hash(msg); let msg = sha256::Hash::hash(msg);
let msg = Message::from_slice(&msg)?; let msg = Message::from_slice(msg.as_ref())?;
let id = ecdsa::RecoveryId::from_i32(recovery_id as i32)?; let id = ecdsa::RecoveryId::from_i32(recovery_id as i32)?;
let sig = ecdsa::RecoverableSignature::from_compact(&sig, id)?; let sig = ecdsa::RecoverableSignature::from_compact(&sig, id)?;
@ -24,7 +24,7 @@ fn sign_recovery<C: Signing>(
seckey: [u8; 32], seckey: [u8; 32],
) -> Result<ecdsa::RecoverableSignature, Error> { ) -> Result<ecdsa::RecoverableSignature, Error> {
let msg = sha256::Hash::hash(msg); let msg = sha256::Hash::hash(msg);
let msg = Message::from_slice(&msg)?; let msg = Message::from_slice(msg.as_ref())?;
let seckey = SecretKey::from_slice(&seckey)?; let seckey = SecretKey::from_slice(&seckey)?;
Ok(secp.sign_ecdsa_recoverable(&msg, &seckey)) Ok(secp.sign_ecdsa_recoverable(&msg, &seckey))
} }

View File

@ -260,7 +260,7 @@ mod tests {
engine.input(&xy.as_ref()[..32]); engine.input(&xy.as_ref()[..32]);
let secret_bh = sha256::Hash::from_engine(engine); let secret_bh = sha256::Hash::from_engine(engine);
assert_eq!(secret_bh.as_inner(), secret_sys.as_ref()); assert_eq!(secret_bh.as_byte_array(), secret_sys.as_ref());
} }
#[test] #[test]

View File

@ -216,19 +216,19 @@ pub trait ThirtyTwoByteHash {
#[cfg(feature = "bitcoin_hashes")] #[cfg(feature = "bitcoin_hashes")]
#[cfg_attr(docsrs, doc(cfg(feature = "bitcoin-hashes")))] #[cfg_attr(docsrs, doc(cfg(feature = "bitcoin-hashes")))]
impl ThirtyTwoByteHash for hashes::sha256::Hash { impl ThirtyTwoByteHash for hashes::sha256::Hash {
fn into_32(self) -> [u8; 32] { self.into_inner() } fn into_32(self) -> [u8; 32] { self.to_byte_array() }
} }
#[cfg(feature = "bitcoin_hashes")] #[cfg(feature = "bitcoin_hashes")]
#[cfg_attr(docsrs, doc(cfg(feature = "bitcoin-hashes")))] #[cfg_attr(docsrs, doc(cfg(feature = "bitcoin-hashes")))]
impl ThirtyTwoByteHash for hashes::sha256d::Hash { impl ThirtyTwoByteHash for hashes::sha256d::Hash {
fn into_32(self) -> [u8; 32] { self.into_inner() } fn into_32(self) -> [u8; 32] { self.to_byte_array() }
} }
#[cfg(feature = "bitcoin_hashes")] #[cfg(feature = "bitcoin_hashes")]
#[cfg_attr(docsrs, doc(cfg(feature = "bitcoin-hashes")))] #[cfg_attr(docsrs, doc(cfg(feature = "bitcoin-hashes")))]
impl<T: hashes::sha256t::Tag> ThirtyTwoByteHash for hashes::sha256t::Hash<T> { impl<T: hashes::sha256t::Tag> ThirtyTwoByteHash for hashes::sha256t::Hash<T> {
fn into_32(self) -> [u8; 32] { self.into_inner() } fn into_32(self) -> [u8; 32] { self.to_byte_array() }
} }
/// A (hashed) message input to an ECDSA signature. /// A (hashed) message input to an ECDSA signature.
@ -1046,12 +1046,12 @@ mod tests {
let hash = hashes::sha256::Hash::hash(test_bytes); let hash = hashes::sha256::Hash::hash(test_bytes);
let msg = Message::from(hash); let msg = Message::from(hash);
assert_eq!(msg.0, hash.into_inner()); assert_eq!(msg.0, hash.to_byte_array());
assert_eq!(msg, Message::from_hashed_data::<hashes::sha256::Hash>(test_bytes)); assert_eq!(msg, Message::from_hashed_data::<hashes::sha256::Hash>(test_bytes));
let hash = hashes::sha256d::Hash::hash(test_bytes); let hash = hashes::sha256d::Hash::hash(test_bytes);
let msg = Message::from(hash); let msg = Message::from(hash);
assert_eq!(msg.0, hash.into_inner()); assert_eq!(msg.0, hash.to_byte_array());
assert_eq!(msg, Message::from_hashed_data::<hashes::sha256d::Hash>(test_bytes)); assert_eq!(msg, Message::from_hashed_data::<hashes::sha256d::Hash>(test_bytes));
} }
} }