From 5ffe481ede4ef228344973f6dcc334709d55517a Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 19 Mar 2024 13:49:50 +0300 Subject: [PATCH 1/2] Updated bin to work without args and parse arguments with clap --- Cargo.toml | 3 ++- src/bin/bls_keypair_gen.rs | 29 ++++++++++++++++++++++------- 2 files changed, 24 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..d40934b 100644 --- a/src/bin/bls_keypair_gen.rs +++ b/src/bin/bls_keypair_gen.rs @@ -1,18 +1,33 @@ // 2022-2024 (c) Copyright Contributors to the GOSH DAO. All rights reserved. // +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; +use clap::Parser; + +#[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": "{}", From e624ff66bf294b228c55ea91456d396bc71f7a98 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 19 Mar 2024 13:53:09 +0300 Subject: [PATCH 2/2] fmt --- src/bin/bls_keypair_gen.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/bin/bls_keypair_gen.rs b/src/bin/bls_keypair_gen.rs index d40934b..ac35091 100644 --- a/src/bin/bls_keypair_gen.rs +++ b/src/bin/bls_keypair_gen.rs @@ -1,19 +1,18 @@ // 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; -use clap::Parser; #[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 + key_material: Option, } - fn main() { let args: Args = Args::parse();