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.
Implementations§
Source§impl Mnemonic
impl Mnemonic
Sourcepub fn new(
mtype: MnemonicType,
lang: Language,
) -> Result<Mnemonic, UnspecifiedRandError>
pub fn new( mtype: MnemonicType, lang: Language, ) -> Result<Mnemonic, UnspecifiedRandError>
Generates a new Mnemonic
Use Mnemonic::phrase()
to get an str
slice of the generated phrase.
§Example
use dup_crypto::mnemonic::{Mnemonic, MnemonicType, Language};
let mnemonic = Mnemonic::new(MnemonicType::Words12, Language::English).expect("fail to generate random bytes");
let phrase = mnemonic.phrase();
println!("phrase: {}", phrase);
assert_eq!(phrase.split(" ").count(), 12);
Sourcepub fn from_entropy(
entropy: &[u8],
lang: Language,
) -> Result<Mnemonic, MnemonicError>
pub fn from_entropy( entropy: &[u8], lang: Language, ) -> Result<Mnemonic, MnemonicError>
Create a Mnemonic
from pre-generated entropy
§Example
use dup_crypto::mnemonic::{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<S>(
phrase: S,
lang: Language,
) -> Result<Mnemonic, MnemonicError>
pub fn from_phrase<S>( phrase: S, lang: Language, ) -> Result<Mnemonic, MnemonicError>
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 dup_crypto::mnemonic::{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<(), MnemonicError>
pub fn validate(phrase: &str, lang: Language) -> Result<(), MnemonicError>
Validate a mnemonic phrase
The phrase supplied will be checked for word length and validated according to the checksum specified in BIP0039.
§Example
use dup_crypto::mnemonic::{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 entropy(&self) -> &[u8] ⓘ
pub fn entropy(&self) -> &[u8] ⓘ
Get the original entropy value of the mnemonic phrase as a slice.
§Example
use dup_crypto::mnemonic::{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
.
Trait Implementations§
impl StructuralPartialEq for Mnemonic
Auto Trait Implementations§
impl Freeze for Mnemonic
impl RefUnwindSafe for Mnemonic
impl Send for Mnemonic
impl Sync for Mnemonic
impl Unpin for Mnemonic
impl UnwindSafe for Mnemonic
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more