1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#![feature(core, io, os)]

extern crate cryptoil;
use cryptoil::sha1;
use cryptoil::stdish::io::Digest;

pub fn digest_cmd(command: &str, message: &str) -> String {
    match command {
        "-sha1" => sha1::Sha1::new().hex_digest(message).unwrap(),
        _ => panic!("unknown hash algorithm"),
    }
}

pub fn main() {
    let mut reader = ::std::old_io::stdin();
    let msg: Vec<u8> = reader.read_to_end().unwrap();
    let message: &str = ::std::str::from_utf8(msg.as_slice()).unwrap();
    let args = ::std::os::args();
    let command: &str = args[1].as_slice();
    println!("{}", digest_cmd(command, message));
}