From 38dcccd00174b7b5099ad13c076af322d8eb6589 Mon Sep 17 00:00:00 2001 From: Avril Date: Tue, 30 Mar 2021 19:06:19 +0100 Subject: [PATCH] rework how 'keygen' works slightly --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/main.rs | 25 +++++++++++++++---------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d6355ee..02c5ddd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -34,7 +34,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chacha20" -version = "1.1.1" +version = "2.0.0" dependencies = [ "base64", "getrandom", diff --git a/Cargo.toml b/Cargo.toml index 9d09f23..ef8e145 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "chacha20" description = "chacha20_poly1305 encryption tool" -version = "1.1.2" +version = "2.0.0" authors = ["Avril "] edition = "2018" license = "gpl-3.0-or-later" diff --git a/src/main.rs b/src/main.rs index 67606ca..ba986c9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -30,10 +30,7 @@ fn keys() -> Result<(Mode, Key, IV), base64::DecodeError> { Some('e') => Mode::Encrypt, Some('d') => Mode::Decrypt, - Some('k') => { - let (key, iv) = cha::keygen(); - return Ok((Mode::Keygen, key, iv)); - }, + Some('k') => Mode::Keygen, other => { eprintln!("{} (v{}) - chacha20_poly1305 command line encryption tool", env!("CARGO_PKG_NAME"), @@ -43,14 +40,14 @@ fn keys() -> Result<(Mode, Key, IV), base64::DecodeError> eprintln!(); eprintln!("Usage: {} encrypt [] []", prog_name); eprintln!("Usage: {} decrypt [] []", prog_name); - eprintln!("Usage: {} keygen", prog_name); + eprintln!("Usage: {} keygen [] []", prog_name); eprintln!("Usage: {} help", prog_name); eprintln!(); eprintln!("(Key size is {}, IV size is {})", cha::KEY_SIZE, cha::IV_SIZE); eprintln!("(requires OpenSSL 1.1.0 or newer)"); eprintln!("\nencrypt/decrypt:\n\tIf a key and/or IV are not provided, they are generated randomly and printed to stderr in order on one line each."); eprintln!("\tIf the key and/or IV provided's size is lower than the cipher's key/IV size, the rest of the key/IV is padded with 0s. If the size is higher, the extra bytes are ignored."); - eprintln!("\nkeygen:\n\tThe key/iv is printed in the same way as auto-generated keys for the en/decryption modes, but to stdout instead of stderr."); + eprintln!("\nkeygen:\n\tThe key/iv is printed in the same way as auto-generated keys for the en/decryption modes, but to stdout instead of stderr. If a key is given as parameter, the key is not printed. If the iv is given as a parameter also, nothing is printed."); eprintln!("\nhelp:\n\tPrint this message to stderr then exit with code 0"); std::process::exit(if other == Some('h') {0} else {1}) } @@ -60,7 +57,11 @@ fn keys() -> Result<(Mode, Key, IV), base64::DecodeError> Some(key) => key.parse()?, None => { let key = Key::new(); - eprintln!("{}", base64::encode(&key)); + if mode == Mode::Keygen { + println!("{}", base64::encode(&key)); + } else { + eprintln!("{}", base64::encode(&key)); + } key }, }; @@ -68,7 +69,11 @@ fn keys() -> Result<(Mode, Key, IV), base64::DecodeError> Some(iv) => iv.parse()?, None => { let iv = IV::new(); - eprintln!("{}", base64::encode(&iv)); + if mode == Mode::Keygen { + println!("{}", base64::encode(&iv)); + } else { + eprintln!("{}", base64::encode(&iv)); + } iv }, }; @@ -98,8 +103,8 @@ fn main() { output.flush().expect("Failed to flush stdout"); }, Mode::Keygen => { - println!("{}", base64::encode(&key)); - println!("{}", base64::encode(&iv)); + //println!("{}", base64::encode(&key)); + //println!("{}", base64::encode(&iv)); }, } }