From 82251a8de455e9112d2d5f0388c9168c74aa8dbe Mon Sep 17 00:00:00 2001 From: Alekos Filini Date: Thu, 24 Sep 2020 15:59:46 +0200 Subject: [PATCH] [keys] Fix entropy generation --- src/keys/bip39.rs | 11 +++++++++++ src/keys/mod.rs | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/keys/bip39.rs b/src/keys/bip39.rs index c737ec01..96a5c3ef 100644 --- a/src/keys/bip39.rs +++ b/src/keys/bip39.rs @@ -154,4 +154,15 @@ mod test { assert_eq!(generated_mnemonic.valid_networks, any_network()); assert_eq!(generated_mnemonic.to_string(), "primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary fetch primary foster"); } + + #[test] + fn test_keys_generate_bip39_random() { + let generated_mnemonic: GeneratedKey<_, miniscript::Segwitv0> = + Mnemonic::generate((MnemonicType::Words12, Language::English)).unwrap(); + assert_eq!(generated_mnemonic.valid_networks, any_network()); + + let generated_mnemonic: GeneratedKey<_, miniscript::Segwitv0> = + Mnemonic::generate((MnemonicType::Words24, Language::English)).unwrap(); + assert_eq!(generated_mnemonic.valid_networks, any_network()); + } } diff --git a/src/keys/mod.rs b/src/keys/mod.rs index bc7c04e6..a647699d 100644 --- a/src/keys/mod.rs +++ b/src/keys/mod.rs @@ -389,7 +389,11 @@ pub trait GeneratableKey: Sized { use rand::{thread_rng, Rng}; let mut entropy = Vec::::with_capacity(Self::ENTROPY_LENGTH); - thread_rng().fill(&mut entropy[..]); + for _ in 0..Self::ENTROPY_LENGTH { + entropy.push(0x00); + } + + thread_rng().fill(&mut entropy[..Self::ENTROPY_LENGTH]); Self::generate_with_entropy(options, &entropy) }