Added deterministic keypair generation.

- The Account Manager has a new subcommand, allowing generation of deterministic keys given a particular validator index.
 - Split functionality in generate_deterministic_keypair function
 - Fixed up READMEs to reflect new functionality & correct naming.
This commit is contained in:
Luke Anderson
2019-04-08 15:02:11 +10:00
parent a46f676f89
commit 177a351462
8 changed files with 69 additions and 15 deletions

View File

@@ -3,6 +3,7 @@ use clap::{App, Arg, SubCommand};
use slog::{debug, info, o, Drain};
use std::path::PathBuf;
use validator_client::Config as ValidatorClientConfig;
use types::test_utils::generate_deterministic_keypair;
fn main() {
// Logging
@@ -29,6 +30,21 @@ fn main() {
.version("0.0.1")
.author("Sigma Prime <contact@sigmaprime.io>"),
)
.subcommand(
SubCommand::with_name("generate_deterministic")
.about("Generates a deterministic validator private key FOR TESTING")
.version("0.0.1")
.author("Sigma Prime <contact@sigmaprime.io>")
.arg(
Arg::with_name("validator index")
.long("index")
.short("i")
.value_name("index")
.help("The index of the validator, for which the test key is generated")
.takes_value(true)
.required(true)
)
)
.get_matches();
let config = ValidatorClientConfig::parse_args(&matches, &log)
@@ -50,7 +66,24 @@ fn main() {
keypair.identifier(),
key_path.to_string_lossy()
);
}
},
("generate_deterministic", Some(gen_d_matches)) => {
let validator_index = gen_d_matches
.value_of("validator index")
.expect("Validator index required.")
.parse::<u64>()
.expect("Invalid validator index.") as usize;
let keypair = generate_deterministic_keypair(validator_index);
let key_path: PathBuf = config
.save_key(&keypair)
.expect("Unable to save newly generated deterministic private key.");
debug!(
log,
"Deterministic Keypair generated {:?}, saved to: {:?}",
keypair.identifier(),
key_path.to_string_lossy()
);
},
_ => panic!(
"The account manager must be run with a subcommand. See help for more information."
),