Take Into<secp256k1::PublicKey> in PublicKey constructors
We can make the API more ergonomic by taking a generic argument that implements `Into<secp256k1::PublicKey>` in the `bitcoin::PublicKey` constructors. The only thing than this is useful for is passing in `KeyPair` and the `From` implementation already exists. Add a unit test to verify. Fix: #1453
This commit is contained in:
parent
b13a76407b
commit
1d3d5a9c5b
|
@ -92,19 +92,19 @@ pub struct PublicKey {
|
||||||
|
|
||||||
impl PublicKey {
|
impl PublicKey {
|
||||||
/// Constructs compressed ECDSA public key from the provided generic Secp256k1 public key
|
/// Constructs compressed ECDSA public key from the provided generic Secp256k1 public key
|
||||||
pub fn new(key: secp256k1::PublicKey) -> PublicKey {
|
pub fn new(key: impl Into<secp256k1::PublicKey>) -> PublicKey {
|
||||||
PublicKey {
|
PublicKey {
|
||||||
compressed: true,
|
compressed: true,
|
||||||
inner: key,
|
inner: key.into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Constructs uncompressed (legacy) ECDSA public key from the provided generic Secp256k1
|
/// Constructs uncompressed (legacy) ECDSA public key from the provided generic Secp256k1
|
||||||
/// public key
|
/// public key
|
||||||
pub fn new_uncompressed(key: secp256k1::PublicKey) -> PublicKey {
|
pub fn new_uncompressed(key: impl Into<secp256k1::PublicKey>) -> PublicKey {
|
||||||
PublicKey {
|
PublicKey {
|
||||||
compressed: false,
|
compressed: false,
|
||||||
inner: key,
|
inner: key.into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -839,4 +839,16 @@ mod tests {
|
||||||
assert_eq!(vector.input, vector.expect);
|
assert_eq!(vector.input, vector.expect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(feature = "rand-std")]
|
||||||
|
fn public_key_constructors() {
|
||||||
|
use crate::secp256k1::rand;
|
||||||
|
|
||||||
|
let secp = Secp256k1::new();
|
||||||
|
let kp = KeyPair::new(&secp, &mut rand::thread_rng());
|
||||||
|
|
||||||
|
let _ = PublicKey::new(kp);
|
||||||
|
let _ = PublicKey::new_uncompressed(kp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue