5f2fdf93df305e1e64b90692ee699c8ce30cf831
[crypto_lab1.git] / src / main.rs
1 #![feature(macro_rules)]
2
3 extern crate openssl;
4 extern crate serialize;
5
6 use std::io;
7 use std::os;
8
9 use end_point::{ Client, Server };
10
11 mod crypto;
12 mod packet;
13 mod end_point;
14
15 /*
16 TODO
17 * Comment stocker les clefs? à quels critères doivent elle répondre?
18 *
19 */
20
21 const PORT: u16 = 4221;
22
23 fn print_usage() {
24 println!("{} <genkey> | <tests> | ...", os::args()[0]);
25 }
26
27 fn main() {
28 let args = os::args();
29
30 if args.iter().any(|a| a.as_slice() == "--help" || a.as_slice() == "-h") {
31 print_usage();
32 } else if args.len() > 1 && args[1].as_slice() == "genkey" {
33 match crypto::generate_key(256 / 8) {
34 Ok(key) => println!("key: {}", key),
35 Err(e) => println!("Unable to generate a key. Error: {}", e)
36 }
37 } else {
38 println!("Starting server..., Press any key to quit");
39
40 match Server::new("::1", PORT) {
41 Ok(mut server) => {
42 println!("Server started");
43 Client::start_tests("::1", PORT);
44 io::stdin().read_line().ok().expect("Failed to read line");
45 server.close().ok().expect("Failed to close the server");
46 },
47 Err(e) =>
48 println!("Unable to create a new server. Error: {}", e)
49 }
50 }
51 }