pub struct SECP256K1 { /* private fields */ }
Expand description
Global Secp256k1 context object
Methods from Deref<Target = Secp256k1<All>>§
Sourcepub fn sign_recoverable(
&self,
msg: &Message,
sk: &SecretKey,
) -> RecoverableSignature
👎Deprecated since 0.21.0: Use sign_ecdsa_recoverable instead.
pub fn sign_recoverable( &self, msg: &Message, sk: &SecretKey, ) -> RecoverableSignature
Constructs a signature for msg
using the secret key sk
and RFC6979 nonce.
Requires a signing-capable context.
Sourcepub fn sign_ecdsa_recoverable(
&self,
msg: &Message,
sk: &SecretKey,
) -> RecoverableSignature
pub fn sign_ecdsa_recoverable( &self, msg: &Message, sk: &SecretKey, ) -> RecoverableSignature
Constructs a signature for msg
using the secret key sk
and RFC6979 nonce
Requires a signing-capable context.
Sourcepub fn recover(
&self,
msg: &Message,
sig: &RecoverableSignature,
) -> Result<PublicKey, Error>
👎Deprecated since 0.21.0: Use recover_ecdsa instead.
pub fn recover( &self, msg: &Message, sig: &RecoverableSignature, ) -> Result<PublicKey, Error>
Determines the public key for which sig
is a valid signature for
msg
. Requires a verify-capable context.
Sourcepub fn recover_ecdsa(
&self,
msg: &Message,
sig: &RecoverableSignature,
) -> Result<PublicKey, Error>
pub fn recover_ecdsa( &self, msg: &Message, sig: &RecoverableSignature, ) -> Result<PublicKey, Error>
Determines the public key for which sig
is a valid signature for
msg
. Requires a verify-capable context.
Sourcepub fn sign(&self, msg: &Message, sk: &SecretKey) -> Signature
👎Deprecated since 0.21.0: Use sign_ecdsa instead.
pub fn sign(&self, msg: &Message, sk: &SecretKey) -> Signature
Constructs a signature for msg
using the secret key sk
and RFC6979 nonce
Requires a signing-capable context.
Sourcepub fn sign_ecdsa(&self, msg: &Message, sk: &SecretKey) -> Signature
pub fn sign_ecdsa(&self, msg: &Message, sk: &SecretKey) -> Signature
Constructs a signature for msg
using the secret key sk
and RFC6979 nonce
Requires a signing-capable context.
Sourcepub fn sign_grind_r(
&self,
msg: &Message,
sk: &SecretKey,
bytes_to_grind: usize,
) -> Signature
👎Deprecated since 0.21.0: Use sign_ecdsa_grind_r instead.
pub fn sign_grind_r( &self, msg: &Message, sk: &SecretKey, bytes_to_grind: usize, ) -> Signature
Constructs a signature for msg
using the secret key sk
, RFC6979 nonce
and “grinds” the nonce by passing extra entropy if necessary to produce
a signature that is less than 71 - bytes_to_grind
bytes. The number
of signing operation performed by this function is exponential in the
number of bytes grinded.
Requires a signing capable context.
Sourcepub fn sign_ecdsa_grind_r(
&self,
msg: &Message,
sk: &SecretKey,
bytes_to_grind: usize,
) -> Signature
pub fn sign_ecdsa_grind_r( &self, msg: &Message, sk: &SecretKey, bytes_to_grind: usize, ) -> Signature
Constructs a signature for msg
using the secret key sk
, RFC6979 nonce
and “grinds” the nonce by passing extra entropy if necessary to produce
a signature that is less than 71 - bytes_to_grind
bytes. The number
of signing operation performed by this function is exponential in the
number of bytes grinded.
Requires a signing capable context.
Sourcepub fn sign_low_r(&self, msg: &Message, sk: &SecretKey) -> Signature
👎Deprecated since 0.21.0: Use sign_ecdsa_grind_r instead.
pub fn sign_low_r(&self, msg: &Message, sk: &SecretKey) -> Signature
Constructs a signature for msg
using the secret key sk
, RFC6979 nonce
and “grinds” the nonce by passing extra entropy if necessary to produce
a signature that is less than 71 bytes and compatible with the low r
signature implementation of bitcoin core. In average, this function
will perform two signing operations.
Requires a signing capable context.
Sourcepub fn sign_ecdsa_low_r(&self, msg: &Message, sk: &SecretKey) -> Signature
pub fn sign_ecdsa_low_r(&self, msg: &Message, sk: &SecretKey) -> Signature
Constructs a signature for msg
using the secret key sk
, RFC6979 nonce
and “grinds” the nonce by passing extra entropy if necessary to produce
a signature that is less than 71 bytes and compatible with the low r
signature implementation of bitcoin core. In average, this function
will perform two signing operations.
Requires a signing capable context.
Sourcepub fn verify(
&self,
msg: &Message,
sig: &Signature,
pk: &PublicKey,
) -> Result<(), Error>
👎Deprecated since 0.21.0: Use verify_ecdsa instead
pub fn verify( &self, msg: &Message, sig: &Signature, pk: &PublicKey, ) -> Result<(), Error>
Checks that sig
is a valid ECDSA signature for msg
using the public
key pubkey
. Returns Ok(())
on success. Note that this function cannot
be used for Bitcoin consensus checking since there may exist signatures
which OpenSSL would verify but not libsecp256k1, or vice-versa. Requires a
verify-capable context.
let message = Message::from_slice(&[0xab; 32]).expect("32 bytes");
let sig = secp.sign(&message, &secret_key);
assert_eq!(secp.verify(&message, &sig, &public_key), Ok(()));
let message = Message::from_slice(&[0xcd; 32]).expect("32 bytes");
assert_eq!(secp.verify(&message, &sig, &public_key), Err(Error::IncorrectSignature));
Sourcepub fn verify_ecdsa(
&self,
msg: &Message,
sig: &Signature,
pk: &PublicKey,
) -> Result<(), Error>
pub fn verify_ecdsa( &self, msg: &Message, sig: &Signature, pk: &PublicKey, ) -> Result<(), Error>
Checks that sig
is a valid ECDSA signature for msg
using the public
key pubkey
. Returns Ok(())
on success. Note that this function cannot
be used for Bitcoin consensus checking since there may exist signatures
which OpenSSL would verify but not libsecp256k1, or vice-versa. Requires a
verify-capable context.
let message = Message::from_slice(&[0xab; 32]).expect("32 bytes");
let sig = secp.sign_ecdsa(&message, &secret_key);
assert_eq!(secp.verify_ecdsa(&message, &sig, &public_key), Ok(()));
let message = Message::from_slice(&[0xcd; 32]).expect("32 bytes");
assert_eq!(secp.verify_ecdsa(&message, &sig, &public_key), Err(Error::IncorrectSignature));
Sourcepub fn schnorrsig_sign_no_aux_rand(
&self,
msg: &Message,
keypair: &KeyPair,
) -> Signature
👎Deprecated since 0.21.0: Use sign_schnorr_no_aux_rand instead.
pub fn schnorrsig_sign_no_aux_rand( &self, msg: &Message, keypair: &KeyPair, ) -> Signature
Create a schnorr signature without using any auxiliary random data.
Sourcepub fn sign_schnorr_no_aux_rand(
&self,
msg: &Message,
keypair: &KeyPair,
) -> Signature
pub fn sign_schnorr_no_aux_rand( &self, msg: &Message, keypair: &KeyPair, ) -> Signature
Create a schnorr signature without using any auxiliary random data.
Sourcepub fn schnorrsig_sign_with_aux_rand(
&self,
msg: &Message,
keypair: &KeyPair,
aux_rand: &[u8; 32],
) -> Signature
👎Deprecated since 0.21.0: Use sign_schnorr_with_aux_rand instead.
pub fn schnorrsig_sign_with_aux_rand( &self, msg: &Message, keypair: &KeyPair, aux_rand: &[u8; 32], ) -> Signature
Create a Schnorr signature using the given auxiliary random data.
Sourcepub fn sign_schnorr_with_aux_rand(
&self,
msg: &Message,
keypair: &KeyPair,
aux_rand: &[u8; 32],
) -> Signature
pub fn sign_schnorr_with_aux_rand( &self, msg: &Message, keypair: &KeyPair, aux_rand: &[u8; 32], ) -> Signature
Create a Schnorr signature using the given auxiliary random data.
Sourcepub fn schnorrsig_verify(
&self,
sig: &Signature,
msg: &Message,
pubkey: &XOnlyPublicKey,
) -> Result<(), Error>
👎Deprecated since 0.21.0: Use verify_schnorr instead.
pub fn schnorrsig_verify( &self, sig: &Signature, msg: &Message, pubkey: &XOnlyPublicKey, ) -> Result<(), Error>
Verify a Schnorr signature.
Sourcepub fn verify_schnorr(
&self,
sig: &Signature,
msg: &Message,
pubkey: &XOnlyPublicKey,
) -> Result<(), Error>
pub fn verify_schnorr( &self, sig: &Signature, msg: &Message, pubkey: &XOnlyPublicKey, ) -> Result<(), Error>
Verify a Schnorr signature.