Merge pull request #294 from LNP-BP/feat/from_secret_key

Adding schnorrsig::KeyPair::from_secret_key convenience function
This commit is contained in:
Andrew Poelstra 2021-06-08 18:05:20 +00:00 committed by GitHub
commit a5dfd09e94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 0 deletions

View File

@ -139,6 +139,26 @@ impl KeyPair {
&mut self.0 &mut self.0
} }
/// Creates a Schnorr KeyPair directly from generic Secp256k1 secret key
///
/// Panics if internal representation of the provided [`SecretKey`] does not
/// holds correct secret key value obtained from Secp256k1 library
/// previously
#[inline]
pub fn from_secret_key<C: Signing>(
secp: &Secp256k1<C>,
sk: ::key::SecretKey,
) -> KeyPair {
unsafe {
let mut kp = ffi::KeyPair::new();
if ffi::secp256k1_keypair_create(secp.ctx, &mut kp, sk.as_c_ptr()) == 1 {
KeyPair(kp)
} else {
panic!("the provided secret key is invalid: it is corrupted or was not produced by Secp256k1 library")
}
}
}
/// Creates a Schnorr KeyPair directly from a secret key slice /// Creates a Schnorr KeyPair directly from a secret key slice
#[inline] #[inline]
pub fn from_seckey_slice<C: Signing>( pub fn from_seckey_slice<C: Signing>(