X-Git-Url: http://git.euphorik.ch/?p=crypto_lab1.git;a=blobdiff_plain;f=lab1_rust%2Fsrc%2Fpacket.rs;h=ff6aa716f88117c8fc4ac54b3d626ec3bf6a7fc0;hp=f45332434fb620744ffe5ddb8b834822ec712857;hb=63bf602df7a7a6e584c1479c1496e12a96fabcd0;hpb=4d892f864a1f47eb1aab23f1c70ccb143081849c diff --git a/lab1_rust/src/packet.rs b/lab1_rust/src/packet.rs index f453324..ff6aa71 100644 --- a/lab1_rust/src/packet.rs +++ b/lab1_rust/src/packet.rs @@ -6,6 +6,7 @@ use serialize::hex::{ ToHex }; use self::PacketType::{ Command, Answer, Error }; use crypto; +#[deriving(Show, Copy)] pub enum Variant { Weak, // The MAC is computed on data without padding. Fixed // The MAC is computed on data and padding. @@ -77,12 +78,12 @@ pub enum PacketType { /// 0x0A: Decrypt error /// 0x0B: Authentication error /// TTTTTTTT: Timestamp (64 bits) -/// D...D: Encrypted data (AES-256 CBC mode) of: -/// |I|C...C|P...P| for command and answer packet: -/// I: Command ID -/// C: Command payload (from 7 to 39 bytes) -/// P: Padding from 1 to 16, |I|C...C|P...P| size must be a multiple of 16 -/// |0000000000000000| for error packet (16 bytes length) +/// D...D: Encrypted data (AES-256 CBC mode) of: +/// |I|C...C|P...P| for command and answer packet: +/// I: Command ID +/// C: Command payload (from 7 to 39 bytes) +/// P: Padding from 1 to 16, |I|C...C|P...P| size must be a multiple of 16 +/// |0000000000000000| for error packet (16 bytes length) /// MMMMMMMMMM: first 10 bytes (most significant) of the HMAC-SHA256 of: /// for command and answer packet: /// |I|C...C| for weak variant @@ -102,7 +103,7 @@ impl fmt::Show for PacketType { match self { &Command(ref data) => write!(formatter, "Command {{ {} }}", data_to_str(data)), &Answer(ref data) => write!(formatter, "Answer {{ {} }}", data_to_str(data)), - &Error(error_type) => write!(formatter, "Error {{ errorType: {} }}", error_type) + &Error(ref error_type) => write!(formatter, "Error {{ errorType: {} }}", error_type) } } } @@ -273,5 +274,5 @@ fn iv_from_timestamp(timestamp: u64) -> Vec { let mut iv = io::MemWriter::with_capacity(16); let _ = iv.write_be_u64(0u64); let _ = iv.write_be_u64(timestamp); - iv.unwrap() + iv.into_inner() }