mirror of
https://github.com/rosenpass/rosenpass.git
synced 2025-12-12 15:49:22 -08:00
Merge pull request #197 from guhitb/main
Add backwards compatibility for keygen command
This commit is contained in:
@@ -87,6 +87,15 @@ pub enum Cli {
|
|||||||
force: bool,
|
force: bool,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/// Deprecated - use gen-keys instead
|
||||||
|
#[allow(rustdoc::broken_intra_doc_links)]
|
||||||
|
#[allow(rustdoc::invalid_html_tags)]
|
||||||
|
Keygen {
|
||||||
|
// NOTE yes, the legacy keygen argument initially really accepted "privet-key", not "secret-key"!
|
||||||
|
/// public-key <PATH> private-key <PATH>
|
||||||
|
args: Vec<String>,
|
||||||
|
},
|
||||||
|
|
||||||
/// Validate a configuration
|
/// Validate a configuration
|
||||||
Validate { config_files: Vec<PathBuf> },
|
Validate { config_files: Vec<PathBuf> },
|
||||||
|
|
||||||
@@ -119,6 +128,40 @@ impl Cli {
|
|||||||
config::Rosenpass::example_config().store(config_file)?;
|
config::Rosenpass::example_config().store(config_file)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deprecated - use gen-keys instead
|
||||||
|
Keygen { args } => {
|
||||||
|
log::warn!("The 'keygen' command is deprecated. Please use the 'gen-keys' command instead.");
|
||||||
|
|
||||||
|
let mut public_key: Option<PathBuf> = None;
|
||||||
|
let mut secret_key: Option<PathBuf> = None;
|
||||||
|
|
||||||
|
// Manual arg parsing, since clap wants to prefix flags with "--"
|
||||||
|
let mut args = args.into_iter();
|
||||||
|
loop {
|
||||||
|
match (args.next().as_ref().map(String::as_str), args.next()) {
|
||||||
|
(Some("private-key"), Some(opt)) | (Some("secret-key"), Some(opt)) => {
|
||||||
|
secret_key = Some(opt.into());
|
||||||
|
}
|
||||||
|
(Some("public-key"), Some(opt)) => {
|
||||||
|
public_key = Some(opt.into());
|
||||||
|
}
|
||||||
|
(Some(flag), _) => {
|
||||||
|
bail!("Unknown option `{}`", flag);
|
||||||
|
}
|
||||||
|
(_, _) => break,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if secret_key.is_none() {
|
||||||
|
bail!("private-key is required");
|
||||||
|
}
|
||||||
|
if public_key.is_none() {
|
||||||
|
bail!("public-key is required");
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_and_save_keypair(secret_key.unwrap(), public_key.unwrap())?;
|
||||||
|
}
|
||||||
|
|
||||||
GenKeys {
|
GenKeys {
|
||||||
config_file,
|
config_file,
|
||||||
public_key,
|
public_key,
|
||||||
@@ -160,12 +203,7 @@ impl Cli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// generate the keys and store them in files
|
// generate the keys and store them in files
|
||||||
let mut ssk = crate::protocol::SSk::random();
|
generate_and_save_keypair(skf, pkf)?;
|
||||||
let mut spk = crate::protocol::SPk::random();
|
|
||||||
StaticKem::keygen(ssk.secret_mut(), spk.secret_mut())?;
|
|
||||||
|
|
||||||
ssk.store_secret(skf)?;
|
|
||||||
spk.store_secret(pkf)?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ExchangeConfig { config_file } => {
|
ExchangeConfig { config_file } => {
|
||||||
@@ -246,3 +284,12 @@ impl Cli {
|
|||||||
srv.event_loop()
|
srv.event_loop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// generate secret and public keys, store in files according to the paths passed as arguments
|
||||||
|
fn generate_and_save_keypair(secret_key: PathBuf, public_key: PathBuf) -> anyhow::Result<()> {
|
||||||
|
let mut ssk = crate::protocol::SSk::random();
|
||||||
|
let mut spk = crate::protocol::SPk::random();
|
||||||
|
StaticKem::keygen(ssk.secret_mut(), spk.secret_mut())?;
|
||||||
|
ssk.store_secret(secret_key)?;
|
||||||
|
spk.store_secret(public_key)
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ use std::process::exit;
|
|||||||
|
|
||||||
/// Catches errors, prints them through the logger, then exits
|
/// Catches errors, prints them through the logger, then exits
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
env_logger::init();
|
// default to displaying warning and error log messages only
|
||||||
|
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("warn")).init();
|
||||||
|
|
||||||
let res = attempt!({
|
let res = attempt!({
|
||||||
rosenpass_sodium::init()?;
|
rosenpass_sodium::init()?;
|
||||||
|
|||||||
Reference in New Issue
Block a user