pub struct MiniSecretKey(_);
Expand description

An EdDSA-like “secret” key seed.

These are seeds from which we produce a real SecretKey, which EdDSA itself calls an extended secret key by hashing. We require homomorphic properties unavailable from these seeds, so we renamed these and reserve SecretKey for what EdDSA calls an extended secret key.

Implementations§

Avoids importing ExpansionMode

Avoids importing ExpansionMode

Derive the SecretKey corresponding to this MiniSecretKey.

We caution that mode must always be chosen consistently. We slightly prefer ExpansionMode::Uniform here, but both remain secure under almost all situations. There exists deployed code using ExpansionMode::Ed25519, so you might require that for compatability.

use rand::{Rng, rngs::OsRng};
use schnorrkel::{MiniSecretKey, SecretKey, ExpansionMode};

let mini_secret_key: MiniSecretKey = MiniSecretKey::generate_with(OsRng);
let secret_key: SecretKey = mini_secret_key.expand(ExpansionMode::Uniform);

Derive the Keypair corresponding to this MiniSecretKey.

Derive the PublicKey corresponding to this MiniSecretKey.

Convert this secret key to a byte array.

View this secret key as a byte array.

Construct a MiniSecretKey from a slice of bytes.

Example
use schnorrkel::{MiniSecretKey, MINI_SECRET_KEY_LENGTH};

let secret_key_bytes: [u8; MINI_SECRET_KEY_LENGTH] = [
   157, 097, 177, 157, 239, 253, 090, 096,
   186, 132, 074, 244, 146, 236, 044, 196,
   068, 073, 197, 105, 123, 050, 105, 025,
   112, 059, 172, 003, 028, 174, 127, 096, ];

let secret_key: MiniSecretKey = MiniSecretKey::from_bytes(&secret_key_bytes).unwrap();
Returns

A Result whose okay value is an EdDSA MiniSecretKey or whose error value is an SignatureError wrapping the internal error that occurred.

Generate a MiniSecretKey from a csprng.

Example
use rand::{Rng, rngs::OsRng};
use schnorrkel::{PublicKey, MiniSecretKey, Signature};

let secret_key: MiniSecretKey = MiniSecretKey::generate_with(OsRng);
Input

A CSPRNG with a fill_bytes() method, e.g. rand_chacha::ChaChaRng

Generate a MiniSecretKey from rand’s thread_rng.

Example
use schnorrkel::{PublicKey, MiniSecretKey, Signature};

let secret_key: MiniSecretKey = MiniSecretKey::generate();

Afterwards, you can generate the corresponding public key.


let public_key: PublicKey = secret_key.expand_to_public(ExpansionMode::Ed25519);

Vaguely BIP32-like “hard” derivation of a MiniSecretKey from a SecretKey

We do not envision any “good reasons” why these “hard” derivations should ever be used after the soft Derivation trait. We similarly do not believe hard derivations make any sense for ChainCodes or ExtendedKeys types. Yet, some existing BIP32 workflows might do these things, due to BIP32’s de facto stnadardization and poor design. In consequence, we provide this method to do “hard” derivations in a way that should work with all BIP32 workflows and any permissible mutations of SecretKey. This means only that we hash the SecretKey’s scalar, but not its nonce becuase the secret key remains valid if the nonce is changed.

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Determine if two items are equal. Read more
Formats the value using the given formatter. Read more
Executes the destructor for this type. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more
Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.