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
impl Mnemonic
sourcepub fn new(mtype: MnemonicType, lang: Language) -> Mnemonic
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);
sourcepub fn from_entropy(entropy: &[u8], lang: Language) -> Result<Mnemonic, Error>
pub fn from_entropy(entropy: &[u8], lang: Language) -> Result<Mnemonic, Error>
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));
sourcepub fn from_phrase(phrase: &str, lang: Language) -> Result<Mnemonic, Error>
pub fn from_phrase(phrase: &str, lang: Language) -> Result<Mnemonic, Error>
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());
sourcepub fn validate(phrase: &str, lang: Language) -> Result<(), Error>
pub fn validate(phrase: &str, lang: Language) -> Result<(), Error>
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());
sourcepub fn into_phrase(self) -> String
pub fn into_phrase(self) -> String
Consume the Mnemonic
and return the phrase as a String
.
sourcepub fn entropy(&self) -> &[u8] ⓘ
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
.