From 4f089418aa24b3a8eea01202c85247fd55963b44 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 19 Mar 2024 13:58:16 +0300 Subject: [PATCH] Bin updates (#2) * Updated bin to work without args and parse arguments with clap * fmt --- Cargo.toml | 3 ++- src/bin/bls_keypair_gen.rs | 28 +++++++++++++++++++++------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index dccf717..1d50531 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] edition = "2021" name = "gosh_bls_lib" -version = "0.3.0" +version = "0.3.1" [profile.profiling] debug = 1 @@ -27,6 +27,7 @@ strip = true # Automatically strip symbols from the binary. [dependencies] anyhow = "1.0.80" blst = { features = ["portable"], version = "0.3.5" } +clap = { version = "4.5.3", features = ["derive"] } criterion = "0.3" failure = "0.1" hex = "0.4.3" diff --git a/src/bin/bls_keypair_gen.rs b/src/bin/bls_keypair_gen.rs index b0a9473..ac35091 100644 --- a/src/bin/bls_keypair_gen.rs +++ b/src/bin/bls_keypair_gen.rs @@ -1,18 +1,32 @@ // 2022-2024 (c) Copyright Contributors to the GOSH DAO. All rights reserved. // +use clap::Parser; +use gosh_bls_lib::bls::gen_bls_key_pair; use gosh_bls_lib::bls::gen_bls_key_pair_based_on_key_material; use gosh_bls_lib::bls::BLS_SECRET_KEY_LEN; +#[derive(Parser)] +#[command(version, about, long_about = None)] +struct Args { + /// Hex string with 32 bytes of key material for bls + #[arg(short, long)] + key_material: Option, +} + fn main() { - let args: Vec = std::env::args().collect(); - assert!(args.len() > 1, "Secret key should be passed as an argument"); + let args: Args = Args::parse(); + + let (public, secret) = if let Some(key_material) = args.key_material { + let mut secret_key = [0_u8; BLS_SECRET_KEY_LEN]; + hex::decode_to_slice(key_material.trim_start_matches("0x"), &mut secret_key) + .expect("Failed to decode secret key from hex"); - let mut secret_key = [0_u8; BLS_SECRET_KEY_LEN]; - hex::decode_to_slice(args[1].trim_start_matches("0x"), &mut secret_key) - .expect("Failed to decode secret key from hex"); + gen_bls_key_pair_based_on_key_material(&secret_key) + .expect("Failed to generate BLS key pair") + } else { + gen_bls_key_pair().expect("Failed to generate BLS key pair") + }; - let (public, secret) = gen_bls_key_pair_based_on_key_material(&secret_key) - .expect("Failed to generate BLS key pair"); println!( r#"{{ "public": "{}",