From 6faf4492c9895b59ade302dcc5d90cc288c31f56 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 1 Aug 2018 12:27:40 +0200 Subject: [PATCH 1/2] Fix the --key generation --- substrate/keystore/src/lib.rs | 15 +++++++++++++-- substrate/service/src/lib.rs | 14 +++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/substrate/keystore/src/lib.rs b/substrate/keystore/src/lib.rs index 97210b29ef015..9a58ded3404f5 100644 --- a/substrate/keystore/src/lib.rs +++ b/substrate/keystore/src/lib.rs @@ -156,8 +156,19 @@ impl Store { // TODO: Remove this pub fn generate_from_seed(&mut self, seed: &str) -> Result { let mut s: [u8; 32] = [' ' as u8; 32]; - let len = ::std::cmp::min(32, seed.len()); - &mut s[..len].copy_from_slice(&seed.as_bytes()[..len]); + + let was_hex = if seed.len() == 66 && &seed[0..2] == "0x" { + if let Ok(d) = hex::decode(&seed[2..]) { + s.copy_from_slice(&d); + true + } else { false } + } else { false }; + + if !was_hex { + let len = ::std::cmp::min(32, seed.len()); + &mut s[..len].copy_from_slice(&seed.as_bytes()[..len]); + } + let pair = Pair::from_seed(&s); self.additional.insert(pair.public(), s); Ok(pair) diff --git a/substrate/service/src/lib.rs b/substrate/service/src/lib.rs index fca2c4d05834e..c42026f0af253 100644 --- a/substrate/service/src/lib.rs +++ b/substrate/service/src/lib.rs @@ -208,7 +208,7 @@ impl Service chain, author, rpc_config.clone(), - ) + ) }; ( maybe_start_server(config.rpc_http, |address| rpc::start_http(address, handler()))?, @@ -227,12 +227,12 @@ impl Service url: url, on_connect: Box::new(move || { telemetry!("system.connected"; - "name" => name.clone(), - "implementation" => impl_name.clone(), - "version" => version.clone(), - "config" => "", - "chain" => chain_name.clone(), - ); + "name" => name.clone(), + "implementation" => impl_name.clone(), + "version" => version.clone(), + "config" => "", + "chain" => chain_name.clone(), + ); }), })) }, From ae782503c1481b4c1cbcae24c16e0e503a742e66 Mon Sep 17 00:00:00 2001 From: chevdor Date: Wed, 1 Aug 2018 13:05:54 +0200 Subject: [PATCH 2/2] Add unit tests Ref #474 --- substrate/keystore/src/lib.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/substrate/keystore/src/lib.rs b/substrate/keystore/src/lib.rs index 9a58ded3404f5..14033b4109556 100644 --- a/substrate/keystore/src/lib.rs +++ b/substrate/keystore/src/lib.rs @@ -156,7 +156,7 @@ impl Store { // TODO: Remove this pub fn generate_from_seed(&mut self, seed: &str) -> Result { let mut s: [u8; 32] = [' ' as u8; 32]; - + let was_hex = if seed.len() == 66 && &seed[0..2] == "0x" { if let Ok(d) = hex::decode(&seed[2..]) { s.copy_from_slice(&d); @@ -271,4 +271,22 @@ mod tests { assert_eq!(store.contents().unwrap()[0], key.public()); } + + #[test] + fn test_generate_from_seed() { + let temp_dir = TempDir::new("keystore").unwrap(); + let mut store = Store::open(temp_dir.path().to_owned()).unwrap(); + + let pair = store.generate_from_seed("0x1").unwrap(); + assert_eq!("5GqhgbUd2S9uc5Tm7hWhw29Tw2jBnuHshmTV1fDF4V1w3G2z", pair.public().to_ss58check()); + + let pair = store.generate_from_seed("0x3d97c819d68f9bafa7d6e79cb991eebcd77d966c5334c0b94d9e1fa7ad0869dc").unwrap(); + assert_eq!("5DKUrgFqCPV8iAXx9sjy1nyBygQCeiUYRFWurZGhnrn3HBL8", pair.public().to_ss58check()); + + let pair = store.generate_from_seed("12345678901234567890123456789022").unwrap(); + assert_eq!("5DscZvfjnM5im7oKRXXP9xtCG1SEwfMb8J5eGLmw5EHhoHR3", pair.public().to_ss58check()); + + let pair = store.generate_from_seed("1").unwrap(); + assert_eq!("5DYnksEZFc7kgtfyNM1xK2eBtW142gZ3Ho3NQubrF2S6B2fq", pair.public().to_ss58check()); + } }