bip39

Struct Mnemonic

source
pub struct Mnemonic { /* private fields */ }
Expand description

The primary type in this crate, most tasks require creating or using one.

To create a new Mnemonic from a randomly generated key, call Mnemonic::new().

To get a Mnemonic instance for an existing mnemonic phrase, including those generated by other software or hardware wallets, use Mnemonic::from_phrase().

You can get the HD wallet Seed from a Mnemonic by calling Seed::new(). From there you can either get the raw byte value with Seed::as_bytes(), or the hex representation using Rust formatting: format!("{:X}", seed).

You can also get the original entropy value back from a Mnemonic with Mnemonic::entropy(), but beware that the entropy value is not the same thing as an HD wallet seed, and should never be used that way.

Mnemonic implements [Zeroize][Zeroize], so it’s bytes will be zeroed when it’s dropped.

Implementations§

source§

impl Mnemonic

source

pub fn new(mtype: MnemonicType, lang: Language) -> Mnemonic

Generates a new Mnemonic

Use Mnemonic::phrase() to get an str slice of the generated phrase.

§Example
use bip39::{Mnemonic, MnemonicType, Language};

let mnemonic = Mnemonic::new(MnemonicType::Words12, Language::English);
let phrase = mnemonic.phrase();

println!("phrase: {}", phrase);

assert_eq!(phrase.split(' ').count(), 12);
source

pub fn from_entropy( entropy: &[u8], lang: Language, ) -> Result<Mnemonic, ErrorKind>

Create a Mnemonic from pre-generated entropy

§Example
use bip39::{Mnemonic, MnemonicType, Language};

let entropy = &[0x33, 0xE4, 0x6B, 0xB1, 0x3A, 0x74, 0x6E, 0xA4, 0x1C, 0xDD, 0xE4, 0x5C, 0x90, 0x84, 0x6A, 0x79];
let mnemonic = Mnemonic::from_entropy(entropy, Language::English).unwrap();

assert_eq!("crop cash unable insane eight faith inflict route frame loud box vibrant", mnemonic.phrase());
assert_eq!("33E46BB13A746EA41CDDE45C90846A79", format!("{:X}", mnemonic));
source

pub fn from_phrase(phrase: &str, lang: Language) -> Result<Mnemonic, ErrorKind>

Create a Mnemonic from an existing mnemonic phrase

The phrase supplied will be checked for word length and validated according to the checksum specified in BIP0039

§Example
use bip39::{Mnemonic, Language};

let phrase = "park remain person kitchen mule spell knee armed position rail grid ankle";
let mnemonic = Mnemonic::from_phrase(phrase, Language::English).unwrap();

assert_eq!(phrase, mnemonic.phrase());
source

pub fn validate(phrase: &str, lang: Language) -> Result<(), ErrorKind>

Validate a mnemonic phrase

The phrase supplied will be checked for word length and validated according to the checksum specified in BIP0039.

§Example
use bip39::{Mnemonic, Language};

let test_mnemonic = "park remain person kitchen mule spell knee armed position rail grid ankle";

assert!(Mnemonic::validate(test_mnemonic, Language::English).is_ok());
source

pub fn phrase(&self) -> &str

Get the mnemonic phrase as a string reference.

source

pub fn into_phrase(self) -> String

Consume the Mnemonic and return the phrase as a String.

source

pub fn entropy(&self) -> &[u8]

Get the original entropy value of the mnemonic phrase as a slice.

§Example
use bip39::{Mnemonic, Language};

let phrase = "park remain person kitchen mule spell knee armed position rail grid ankle";

let mnemonic = Mnemonic::from_phrase(phrase, Language::English).unwrap();

let entropy: &[u8] = mnemonic.entropy();

Note: You shouldn’t use the generated entropy as secrets, for that generate a new Seed from the Mnemonic.

source

pub fn language(&self) -> Language

Get the Language

Trait Implementations§

source§

impl AsRef<str> for Mnemonic

source§

fn as_ref(&self) -> &str

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Clone for Mnemonic

source§

fn clone(&self) -> Mnemonic

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Mnemonic

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Mnemonic

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Mnemonic> for String

source§

fn from(val: Mnemonic) -> String

Converts to this type from the input type.
source§

impl LowerHex for Mnemonic

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl UpperHex for Mnemonic

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V