X-Git-Url: http://git.euphorik.ch/index.cgi?a=blobdiff_plain;f=src%2Fmain.rs;fp=src%2Fmain.rs;h=e64323fa60ef62994e51436d957bdea23fcf2baa;hb=aee28ef5d1be59c0db218d7130fd1ae2314cc970;hp=0000000000000000000000000000000000000000;hpb=73730f083cb2d305a039d49d9e34ff9978fe20be;p=crypto_lab1.git diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..e64323f --- /dev/null +++ b/src/main.rs @@ -0,0 +1,56 @@ +extern crate openssl; + +use std::io; +use std::os; + +mod crypto; +mod command; +mod client; +mod server; + +/* +TODO + * Comment stocker les clefs? à quels critères doivent elle répondre? + * +*/ + +const PORT: u16 = 4221; + +fn print_usage() { + println!("{} | ...", os::args()[0]); +} + +fn main() { + let args = os::args(); + + if args.iter().any(|a| a.as_slice() == "--help" || a.as_slice() == "-h") { + print_usage(); + } else if args.len() > 1 && args[1].as_slice() == "genkey" { + match crypto::generate_key(256 / 8) { + Ok(key) => println!("key: {}", key), + Err(e) => println!("Unable to generate a key. Error: {}", e) + } + } else { + match server::Server::new(PORT) { + Ok(mut server) => { + println!("Server started"); + + match client::Client::new("127.0.0.1", PORT) { + Ok(mut client) => { + client.start_tests(); + client.close(); + }, + Err(e) => { + println!("Unable to create a client. Error: {}", e); + return + } + } + + println!("Press any key to quit"); + io::stdin().read_line().ok().expect("Failed to read line"); + server.close().ok().expect("Failed to close the server"); + }, + Err(e) => println!("Unable to create a new server. Error: {}", e) + } + } +}