Skip to content

Commit 75312fa

Browse files
committed
Merge #807: 0.31.x: update deprecation versions and bump minor version
8701365 bump version to 0.31.1 (Andrew Poelstra) 666d3c6 update unit tests and examples to remove deprecated functions (Andrew Poelstra) 47ab5af deprecations: replace all TBDs with 0.30.0 (Andrew Poelstra) Pull request description: We accidentally released a bunch of deprecations with `since` set to `TBD`. Update these. ACKs for top commit: tcharding: ACK 8701365 Tree-SHA512: e63fcedc9928cc9b2175aa61231c80b619619a6525b17255fcf4e8f67afdea77507801680b97a566d0997341eb44c46c3a9fbd253f7f79a12f46a331ecc23b48
2 parents 7758313 + 8701365 commit 75312fa

File tree

12 files changed

+71
-64
lines changed

12 files changed

+71
-64
lines changed

Cargo-minimal.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"
222222

223223
[[package]]
224224
name = "secp256k1"
225-
version = "0.31.0"
225+
version = "0.31.1"
226226
dependencies = [
227227
"bincode",
228228
"bitcoin_hashes",

Cargo-recent.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
213213

214214
[[package]]
215215
name = "secp256k1"
216-
version = "0.31.0"
216+
version = "0.31.1"
217217
dependencies = [
218218
"bincode",
219219
"bitcoin_hashes",

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "secp256k1"
3-
version = "0.31.0"
3+
version = "0.31.1"
44
authors = [ "Dawid Ciężarkiewicz <[email protected]>",
55
"Andrew Poelstra <[email protected]>" ]
66
license = "CC0-1.0"

examples/sign_verify.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn verify<C: Verification>(
1111
pubkey: [u8; 33],
1212
) -> Result<bool, Error> {
1313
let msg = sha256::Hash::hash(msg);
14-
let msg = Message::from_digest_slice(msg.as_ref())?;
14+
let msg = Message::from_digest(msg.to_byte_array());
1515
let sig = ecdsa::Signature::from_compact(&sig)?;
1616
let pubkey = PublicKey::from_slice(&pubkey)?;
1717

@@ -24,8 +24,8 @@ fn sign<C: Signing>(
2424
seckey: [u8; 32],
2525
) -> Result<ecdsa::Signature, Error> {
2626
let msg = sha256::Hash::hash(msg);
27-
let msg = Message::from_digest_slice(msg.as_ref())?;
28-
let seckey = SecretKey::from_slice(&seckey)?;
27+
let msg = Message::from_digest(msg.to_byte_array());
28+
let seckey = SecretKey::from_byte_array(seckey)?;
2929
Ok(secp.sign_ecdsa(msg, &seckey))
3030
}
3131

examples/sign_verify_recovery.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn recover<C: Verification>(
1111
recovery_id: u8,
1212
) -> Result<PublicKey, Error> {
1313
let msg = sha256::Hash::hash(msg);
14-
let msg = Message::from_digest_slice(msg.as_ref())?;
14+
let msg = Message::from_digest(msg.to_byte_array());
1515
let id = ecdsa::RecoveryId::try_from(i32::from(recovery_id))?;
1616
let sig = ecdsa::RecoverableSignature::from_compact(&sig, id)?;
1717

@@ -24,8 +24,8 @@ fn sign_recovery<C: Signing>(
2424
seckey: [u8; 32],
2525
) -> Result<ecdsa::RecoverableSignature, Error> {
2626
let msg = sha256::Hash::hash(msg);
27-
let msg = Message::from_digest_slice(msg.as_ref())?;
28-
let seckey = SecretKey::from_slice(&seckey)?;
27+
let msg = Message::from_digest(msg.to_byte_array());
28+
let seckey = SecretKey::from_byte_array(seckey)?;
2929
Ok(secp.sign_ecdsa_recoverable(msg, &seckey))
3030
}
3131

src/ecdh.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ impl SharedSecret {
6464
pub fn from_bytes(bytes: [u8; SHARED_SECRET_SIZE]) -> SharedSecret { SharedSecret(bytes) }
6565

6666
/// Creates a shared secret from `bytes` slice.
67-
#[deprecated(since = "TBD", note = "Use `from_bytes` instead.")]
67+
#[deprecated(since = "0.30.0", note = "Use `from_bytes` instead.")]
6868
#[inline]
6969
pub fn from_slice(bytes: &[u8]) -> Result<SharedSecret, Error> {
7070
match bytes.len() {
@@ -178,7 +178,7 @@ impl<'de> ::serde::Deserialize<'de> for SharedSecret {
178178
} else {
179179
d.deserialize_bytes(super::serde_util::BytesVisitor::new(
180180
"raw 32 bytes SharedSecret",
181-
SharedSecret::from_slice,
181+
|x| x.try_into().map(SharedSecret::from_bytes),
182182
))
183183
}
184184
}
@@ -263,7 +263,7 @@ mod tests {
263263
];
264264
static STR: &str = "01010101010101010001020304050607ffff0000ffff00006363636363636363";
265265

266-
let secret = SharedSecret::from_slice(&BYTES).unwrap();
266+
let secret = SharedSecret::from_bytes(BYTES);
267267

268268
assert_tokens(&secret.compact(), &[Token::BorrowedBytes(&BYTES[..])]);
269269
assert_tokens(&secret.compact(), &[Token::Bytes(&BYTES)]);

src/ecdsa/recovery.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ mod tests {
261261
let full = Secp256k1::new();
262262

263263
let msg = crate::random_32_bytes(&mut rand::rng());
264-
let msg = Message::from_digest_slice(&msg).unwrap();
264+
let msg = Message::from_digest(msg);
265265

266266
// Try key generation
267267
let (sk, pk) = full.generate_keypair(&mut rand::rng());
@@ -292,8 +292,8 @@ mod tests {
292292
let mut s = Secp256k1::new();
293293
s.randomize(&mut rand::rng());
294294

295-
let sk = SecretKey::from_slice(&ONE).unwrap();
296-
let msg = Message::from_digest_slice(&ONE).unwrap();
295+
let sk = SecretKey::from_byte_array(ONE).unwrap();
296+
let msg = Message::from_digest(ONE);
297297

298298
let sig = s.sign_ecdsa_recoverable(msg, &sk);
299299

@@ -317,8 +317,8 @@ mod tests {
317317
let mut s = Secp256k1::new();
318318
s.randomize(&mut rand::rng());
319319

320-
let sk = SecretKey::from_slice(&ONE).unwrap();
321-
let msg = Message::from_digest_slice(&ONE).unwrap();
320+
let sk = SecretKey::from_byte_array(ONE).unwrap();
321+
let msg = Message::from_digest(ONE);
322322
let noncedata = [42u8; 32];
323323

324324
let sig = s.sign_ecdsa_recoverable_with_noncedata(msg, &sk, &noncedata);
@@ -342,15 +342,15 @@ mod tests {
342342
s.randomize(&mut rand::rng());
343343

344344
let msg = crate::random_32_bytes(&mut rand::rng());
345-
let msg = Message::from_digest_slice(&msg).unwrap();
345+
let msg = Message::from_digest(msg);
346346

347347
let (sk, pk) = s.generate_keypair(&mut rand::rng());
348348

349349
let sigr = s.sign_ecdsa_recoverable(msg, &sk);
350350
let sig = sigr.to_standard();
351351

352352
let msg = crate::random_32_bytes(&mut rand::rng());
353-
let msg = Message::from_digest_slice(&msg).unwrap();
353+
let msg = Message::from_digest(msg);
354354
assert_eq!(s.verify_ecdsa(msg, &sig, &pk), Err(Error::IncorrectSignature));
355355

356356
let recovered_key = s.recover_ecdsa(msg, &sigr).unwrap();
@@ -364,7 +364,7 @@ mod tests {
364364
s.randomize(&mut rand::rng());
365365

366366
let msg = crate::random_32_bytes(&mut rand::rng());
367-
let msg = Message::from_digest_slice(&msg).unwrap();
367+
let msg = Message::from_digest(msg);
368368

369369
let (sk, pk) = s.generate_keypair(&mut rand::rng());
370370

@@ -380,7 +380,7 @@ mod tests {
380380
s.randomize(&mut rand::rng());
381381

382382
let msg = crate::random_32_bytes(&mut rand::rng());
383-
let msg = Message::from_digest_slice(&msg).unwrap();
383+
let msg = Message::from_digest(msg);
384384

385385
let noncedata = [42u8; 32];
386386

@@ -397,7 +397,7 @@ mod tests {
397397
let mut s = Secp256k1::new();
398398
s.randomize(&mut rand::rng());
399399

400-
let msg = Message::from_digest_slice(&[0x55; 32]).unwrap();
400+
let msg = Message::from_digest([0x55; 32]);
401401

402402
// Zero is not a valid sig
403403
let sig = RecoverableSignature::from_compact(&[0; 64], RecoveryId::Zero).unwrap();
@@ -468,8 +468,8 @@ mod benches {
468468
pub fn bench_recover(bh: &mut Bencher) {
469469
let s = Secp256k1::new();
470470
let msg = crate::random_32_bytes(&mut rand::rng());
471-
let msg = Message::from_digest_slice(&msg).unwrap();
472-
let (sk, _) = s.generate_keypair(&mut rand::rng());
471+
let msg = Message::from_digest(msg);
472+
let (sk, _) = s.generate_keypair(&mut rand::thread_rng());
473473
let sig = s.sign_ecdsa_recoverable(&msg, &sk);
474474

475475
bh.iter(|| {

src/ellswift.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ mod tests {
378378
// Test that we can round trip an ElligatorSwift encoding
379379
let secp = crate::Secp256k1::new();
380380
let public_key =
381-
PublicKey::from_secret_key(&secp, &SecretKey::from_slice(&[1u8; 32]).unwrap());
381+
PublicKey::from_secret_key(&secp, &SecretKey::from_byte_array([1u8; 32]).unwrap());
382382

383383
let ell = ElligatorSwift::from_pubkey(public_key);
384384
let pk = PublicKey::from_ellswift(ell);
@@ -391,9 +391,11 @@ mod tests {
391391
let secp = crate::Secp256k1::new();
392392
let rand32 = [1u8; 32];
393393
let priv32 = [1u8; 32];
394-
let ell = ElligatorSwift::from_seckey(&secp, SecretKey::from_slice(&rand32).unwrap(), None);
394+
let ell =
395+
ElligatorSwift::from_seckey(&secp, SecretKey::from_byte_array(rand32).unwrap(), None);
395396
let pk = PublicKey::from_ellswift(ell);
396-
let expected = PublicKey::from_secret_key(&secp, &SecretKey::from_slice(&priv32).unwrap());
397+
let expected =
398+
PublicKey::from_secret_key(&secp, &SecretKey::from_byte_array(priv32).unwrap());
397399

398400
assert_eq!(pk, expected);
399401
}
@@ -406,13 +408,13 @@ mod tests {
406408
let priv32 = [2u8; 32];
407409
let ell = ElligatorSwift::from_seckey(
408410
&secp,
409-
SecretKey::from_slice(&rand32).unwrap(),
411+
SecretKey::from_byte_array(rand32).unwrap(),
410412
Some(rand32),
411413
);
412414
let pk = ElligatorSwift::shared_secret_with_hasher(
413415
ell,
414416
ell,
415-
SecretKey::from_slice(&priv32).unwrap(),
417+
SecretKey::from_byte_array(priv32).unwrap(),
416418
Party::Initiator,
417419
|_, _, _| ElligatorSwiftSharedSecret([0xff; 32]),
418420
);
@@ -626,7 +628,7 @@ mod tests {
626628
ElligatorSwift::from_array(ellswift_theirs),
627629
)
628630
};
629-
let sec_key = SecretKey::from_slice(&my_secret).unwrap();
631+
let sec_key = SecretKey::from_byte_array(my_secret).unwrap();
630632
let initiator = if initiator == 0 { Party::Responder } else { Party::Initiator };
631633

632634
let shared = ElligatorSwift::shared_secret(el_a, el_b, sec_key, initiator, None);

src/key.rs

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ impl SecretKey {
219219
/// use secp256k1::SecretKey;
220220
/// let sk = SecretKey::from_slice(&[0xcd; 32]).expect("32 bytes, within curve order");
221221
/// ```
222-
#[deprecated(since = "TBD", note = "Use `from_byte_array` instead.")]
222+
#[deprecated(since = "0.30.0", note = "Use `from_byte_array` instead.")]
223223
#[inline]
224224
pub fn from_slice(data: &[u8]) -> Result<SecretKey, Error> {
225225
match <[u8; constants::SECRET_KEY_SIZE]>::try_from(data) {
@@ -401,10 +401,10 @@ impl<'de> serde::Deserialize<'de> for SecretKey {
401401
"a hex string representing 32 byte SecretKey",
402402
))
403403
} else {
404-
let visitor =
405-
super::serde_util::Tuple32Visitor::new("raw 32 bytes SecretKey", |bytes| {
406-
SecretKey::from_byte_array(bytes)
407-
});
404+
let visitor = super::serde_util::Tuple32Visitor::new(
405+
"raw 32 bytes SecretKey",
406+
SecretKey::from_byte_array,
407+
);
408408
d.deserialize_tuple(constants::SECRET_KEY_SIZE, visitor)
409409
}
410410
}
@@ -790,10 +790,10 @@ impl<'de> serde::Deserialize<'de> for PublicKey {
790790
"an ASCII hex string representing a public key",
791791
))
792792
} else {
793-
let visitor =
794-
super::serde_util::Tuple33Visitor::new("33 bytes compressed public key", |bytes| {
795-
PublicKey::from_byte_array_compressed(bytes)
796-
});
793+
let visitor = super::serde_util::Tuple33Visitor::new(
794+
"33 bytes compressed public key",
795+
PublicKey::from_byte_array_compressed,
796+
);
797797
d.deserialize_tuple(constants::PUBLIC_KEY_SIZE, visitor)
798798
}
799799
}
@@ -860,7 +860,7 @@ impl Keypair {
860860
///
861861
/// [`Error::InvalidSecretKey`] if the slice is not exactly 32 bytes long,
862862
/// or if the encoded number is an invalid scalar.
863-
#[deprecated(since = "TBD", note = "Use `from_seckey_byte_array` instead.")]
863+
#[deprecated(since = "0.31.0", note = "Use `from_seckey_byte_array` instead.")]
864864
#[inline]
865865
pub fn from_seckey_slice<C: Signing>(
866866
secp: &Secp256k1<C>,
@@ -1239,7 +1239,7 @@ impl XOnlyPublicKey {
12391239
///
12401240
/// Returns [`Error::InvalidPublicKey`] if the length of the data slice is not 32 bytes or the
12411241
/// slice does not represent a valid Secp256k1 point x coordinate.
1242-
#[deprecated(since = "TBD", note = "Use `from_byte_array` instead.")]
1242+
#[deprecated(since = "0.30.0", note = "Use `from_byte_array` instead.")]
12431243
#[inline]
12441244
pub fn from_slice(data: &[u8]) -> Result<XOnlyPublicKey, Error> {
12451245
match <[u8; constants::SCHNORR_PUBLIC_KEY_SIZE]>::try_from(data) {
@@ -1634,6 +1634,7 @@ mod test {
16341634
use crate::{constants, from_hex, to_hex, Scalar};
16351635

16361636
#[test]
1637+
#[allow(deprecated)]
16371638
fn skey_from_slice() {
16381639
let sk = SecretKey::from_slice(&[1; 31]);
16391640
assert_eq!(sk, Err(InvalidSecretKey));
@@ -1668,7 +1669,7 @@ mod test {
16681669
let s = Secp256k1::new();
16691670

16701671
let (sk1, pk1) = s.generate_keypair(&mut rand::rng());
1671-
assert_eq!(SecretKey::from_slice(&sk1[..]), Ok(sk1));
1672+
assert_eq!(SecretKey::from_byte_array(sk1.secret_bytes()), Ok(sk1));
16721673
assert_eq!(PublicKey::from_slice(&pk1.serialize()[..]), Ok(pk1));
16731674
assert_eq!(PublicKey::from_slice(&pk1.serialize_uncompressed()[..]), Ok(pk1));
16741675
}
@@ -1688,22 +1689,22 @@ mod test {
16881689
#[rustfmt::skip]
16891690
fn invalid_secret_key() {
16901691
// Zero
1691-
assert_eq!(SecretKey::from_slice(&[0; 32]), Err(InvalidSecretKey));
1692+
assert_eq!(SecretKey::from_byte_array([0; 32]), Err(InvalidSecretKey));
16921693
assert_eq!(
16931694
SecretKey::from_str("0000000000000000000000000000000000000000000000000000000000000000"),
16941695
Err(InvalidSecretKey)
16951696
);
16961697
// -1
1697-
assert_eq!(SecretKey::from_slice(&[0xff; 32]), Err(InvalidSecretKey));
1698+
assert_eq!(SecretKey::from_byte_array([0xff; 32]), Err(InvalidSecretKey));
16981699
// Top of range
1699-
assert!(SecretKey::from_slice(&[
1700+
assert!(SecretKey::from_byte_array([
17001701
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
17011702
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
17021703
0xBA, 0xAE, 0xDC, 0xE6, 0xAF, 0x48, 0xA0, 0x3B,
17031704
0xBF, 0xD2, 0x5E, 0x8C, 0xD0, 0x36, 0x41, 0x40,
17041705
]).is_ok());
17051706
// One past top of range
1706-
assert!(SecretKey::from_slice(&[
1707+
assert!(SecretKey::from_byte_array([
17071708
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
17081709
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
17091710
0xBA, 0xAE, 0xDC, 0xE6, 0xAF, 0x48, 0xA0, 0x3B,
@@ -1772,6 +1773,7 @@ mod test {
17721773
}
17731774

17741775
#[test]
1776+
#[allow(deprecated)]
17751777
fn test_seckey_from_bad_slice() {
17761778
// Bad sizes
17771779
assert_eq!(
@@ -1825,7 +1827,7 @@ mod test {
18251827

18261828
#[cfg(not(secp256k1_fuzz))]
18271829
let s = Secp256k1::signing_only();
1828-
let sk = SecretKey::from_slice(&SK_BYTES).expect("sk");
1830+
let sk = SecretKey::from_byte_array(SK_BYTES).expect("sk");
18291831

18301832
// In fuzzing mode secret->public key derivation is different, so
18311833
// hard-code the expected result.
@@ -2180,7 +2182,7 @@ mod test {
21802182

21812183
#[cfg(not(secp256k1_fuzz))]
21822184
let s = Secp256k1::new();
2183-
let sk = SecretKey::from_slice(&SK_BYTES).unwrap();
2185+
let sk = SecretKey::from_byte_array(SK_BYTES).unwrap();
21842186

21852187
// In fuzzing mode secret->public key derivation is different, so
21862188
// hard-code the expected result.
@@ -2320,10 +2322,11 @@ mod test {
23202322
pk_bytes[0] = 0x02; // Use positive Y co-ordinate.
23212323
pk_bytes[1..].clone_from_slice(&PK_BYTES);
23222324

2323-
let sk = SecretKey::from_slice(&SK_BYTES).expect("failed to parse sk bytes");
2325+
let sk = SecretKey::from_byte_array(SK_BYTES).expect("failed to parse sk bytes");
23242326
let pk = PublicKey::from_slice(&pk_bytes).expect("failed to create pk from iterator");
23252327
let kp = Keypair::from_secret_key(&secp, &sk);
2326-
let xonly = XOnlyPublicKey::from_slice(&PK_BYTES).expect("failed to get xonly from slice");
2328+
let xonly =
2329+
XOnlyPublicKey::from_byte_array(PK_BYTES).expect("failed to get xonly from slice");
23272330

23282331
(sk, pk, kp, xonly)
23292332
}

0 commit comments

Comments
 (0)