X-Git-Url: http://git.euphorik.ch/?p=rup.git;a=blobdiff_plain;f=src%2Fmain.rs;h=b86ce5762185ed4e6c7683037f2b692f9620cf7d;hp=c5a7dc1cae7c9e3a6fb3e520fd00855794d1ec42;hb=b1f2c5b803a7e85a3b0c8d999cf9a13d28c6c6c2;hpb=98687ed0454061c7164ab64e8bd5d25b18896a39 diff --git a/src/main.rs b/src/main.rs index c5a7dc1..b86ce57 100644 --- a/src/main.rs +++ b/src/main.rs @@ -62,11 +62,10 @@ fn get_exe_name() -> String { fn print_usage() { println!("Usage:"); - println!(" {} [--help] [--encrypt ]", get_exe_name()); + println!(" {} [--help] [--encrypt |--decrypt ]", get_exe_name()); } fn read_key() -> String { - use url::percent_encoding::percent_decode; let mut key = String::new(); File::open(consts::FILE_KEY) .expect(&format!("Failed to open key file: {}", consts::FILE_KEY)) @@ -74,7 +73,7 @@ fn read_key() -> String { .expect(&format!("Failed to read key file: {}", consts::FILE_KEY)); String::from( - percent_decode(key.as_bytes()) + url::percent_encoding::percent_decode(key.as_bytes()) .decode_utf8() .expect(&format!("Failed to decode key file: {}", consts::FILE_KEY)) ) @@ -91,8 +90,21 @@ fn main() -> std::io::Result<()> { } else if let Some((position_arg_encrypt, _)) = args.iter().find_position(|arg| arg == &"--encrypt") { match args.iter().nth(position_arg_encrypt + 1) { Some(mess_to_encrypt) => { + let encrypted_mess = crypto::encrypt(&key, mess_to_encrypt); - println!("Encrypted message: {}", encrypted_mess); + let encrypted_mess_encoded = url::percent_encoding::utf8_percent_encode(&encrypted_mess, url::percent_encoding::DEFAULT_ENCODE_SET).to_string(); + println!("Encrypted message percent-encoded: {}", encrypted_mess_encoded); + } + None => print_usage() + } + + return Ok(()); + } else if let Some((position_arg_decrypt, _)) = args.iter().find_position(|arg| arg == &"--decrypt") { + match args.iter().nth(position_arg_decrypt + 1) { + Some(cipher_text) => { + let cipher_text_decoded = url::percent_encoding::percent_decode(cipher_text.as_bytes()).decode_utf8().expect("Unable to decode encoded cipher text"); + let plain_text = crypto::decrypt(&key, &cipher_text_decoded).unwrap(); + println!("Decrypted message: {}", plain_text); } None => print_usage() }