pub struct SecretKey(_);
Expand description
Secret 256-bit key used as x
in an ECDSA signature.
Serde support
Implements de/serialization with the serde
feature enabled. We treat the byte value as a tuple
of 32 u8
s for non-human-readable formats. This representation is optimal for for some formats
(e.g. bincode
) however other formats may be less optimal (e.g. cbor
).
Examples
Basic usage:
use secp256k1::{rand, Secp256k1, SecretKey};
let secp = Secp256k1::new();
let secret_key = SecretKey::new(&mut rand::thread_rng());
Implementations§
source§impl SecretKey
impl SecretKey
sourcepub fn display_secret(&self) -> DisplaySecret
pub fn display_secret(&self) -> DisplaySecret
Formats the explicit byte value of the secret key kept inside the type as a little-endian hexadecimal string using the provided formatter.
This is the only method that outputs the actual secret key value, and, thus, should be used with extreme caution.
Examples
let key = secp256k1::ONE_KEY;
// Normal debug hides value (`Display` is not implemented for `SecretKey`).
// E.g., `format!("{:?}", key)` prints "SecretKey(#2518682f7819fb2d)".
// Here we explicitly display the secret value:
assert_eq!(
"0000000000000000000000000000000000000000000000000000000000000001",
format!("{}", key.display_secret())
);
// Also, we can explicitly display with `Debug`:
assert_eq!(
format!("{:?}", key.display_secret()),
format!("DisplaySecret(\"{}\")", key.display_secret())
);
source§impl SecretKey
impl SecretKey
sourcepub fn as_mut_ptr(&mut self) -> *mut u8
pub fn as_mut_ptr(&mut self) -> *mut u8
Converts the object to a mutable raw pointer for FFI interfacing
source§impl SecretKey
impl SecretKey
sourcepub fn from_slice(data: &[u8]) -> Result<SecretKey, Error>
pub fn from_slice(data: &[u8]) -> Result<SecretKey, Error>
Converts a SECRET_KEY_SIZE
-byte slice to a secret key.
Examples
use secp256k1::SecretKey;
let sk = SecretKey::from_slice(&[0xcd; 32]).expect("32 bytes, within curve order");
sourcepub fn from_keypair(keypair: &KeyPair) -> Self
pub fn from_keypair(keypair: &KeyPair) -> Self
sourcepub fn secret_bytes(&self) -> [u8; 32]
pub fn secret_bytes(&self) -> [u8; 32]
Returns the secret key as a byte value.
sourcepub fn negate_assign(&mut self)
👎Deprecated since 0.23.0: Use negate instead
pub fn negate_assign(&mut self)
Negates the secret key.
sourcepub fn add_assign(&mut self, other: &Scalar) -> Result<(), Error>
👎Deprecated since 0.23.0: Use add_tweak instead
pub fn add_assign(&mut self, other: &Scalar) -> Result<(), Error>
Adds one secret key to another, modulo the curve order.
Errors
Returns an error if the resulting key would be invalid.
sourcepub fn mul_assign(&mut self, other: &Scalar) -> Result<(), Error>
👎Deprecated since 0.23.0: Use mul_tweak instead
pub fn mul_assign(&mut self, other: &Scalar) -> Result<(), Error>
Multiplies one secret key by another, modulo the curve order. Will return an error if the resulting key would be invalid.
sourcepub fn sign_ecdsa(&self, msg: Message) -> Signature
pub fn sign_ecdsa(&self, msg: Message) -> Signature
Constructs an ECDSA signature for msg
using the global SECP256K1
context.
sourcepub fn keypair<C: Signing>(&self, secp: &Secp256k1<C>) -> KeyPair
pub fn keypair<C: Signing>(&self, secp: &Secp256k1<C>) -> KeyPair
Returns the KeyPair
for this SecretKey
.
This is equivalent to using KeyPair::from_secret_key
.
sourcepub fn public_key<C: Signing>(&self, secp: &Secp256k1<C>) -> PublicKey
pub fn public_key<C: Signing>(&self, secp: &Secp256k1<C>) -> PublicKey
Returns the PublicKey
for this SecretKey
.
This is equivalent to using PublicKey::from_secret_key
.
sourcepub fn x_only_public_key<C: Signing>(
&self,
secp: &Secp256k1<C>
) -> (XOnlyPublicKey, Parity)
pub fn x_only_public_key<C: Signing>( &self, secp: &Secp256k1<C> ) -> (XOnlyPublicKey, Parity)
Returns the XOnlyPublicKey
(and it’s Parity
) for this SecretKey
.
This is equivalent to XOnlyPublicKey::from_keypair(self.keypair(secp))
.
Trait Implementations§
source§impl Ord for SecretKey
impl Ord for SecretKey
source§impl PartialEq<SecretKey> for SecretKey
impl PartialEq<SecretKey> for SecretKey
source§impl PartialOrd<SecretKey> for SecretKey
impl PartialOrd<SecretKey> for SecretKey
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more