Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
d06aead691
75
src/bin/message.rs
Normal file
75
src/bin/message.rs
Normal file
@ -0,0 +1,75 @@
|
||||
const KEYLENGTH: u8 = 32;
|
||||
|
||||
pub enum PayloadType {
|
||||
//0-31 system messages (plaintext)
|
||||
Ping = 1,
|
||||
Pong = 2,
|
||||
Error = 3,
|
||||
//32 - 63 Serverside messages (currently plaintext)
|
||||
Init = 32,
|
||||
Join = 33,
|
||||
Exit = 34,
|
||||
//64 -95 initial setup messages(plaintext)
|
||||
DhSetup = 64,
|
||||
DhReturn = 65,
|
||||
//96 - 127 client-client setup messages(DH or old KEY encrypted)
|
||||
AUTHORIZE = 96,
|
||||
KeyCurrent = 97,
|
||||
KeyNew = 98,
|
||||
//128-159 main messages (shared KEY encrypted)
|
||||
Msg = 128,
|
||||
//160-255 reserved
|
||||
}
|
||||
|
||||
struct Message {
|
||||
// Eigenschaften der Klasse
|
||||
src_id: u32,
|
||||
dest_id: u32,
|
||||
size: u16,
|
||||
payload: Vec<u8>,
|
||||
}
|
||||
|
||||
impl Message {
|
||||
fn new(src_id: u32, dest_id: u32, size: u16, msg_type: PayloadType) -> Message {
|
||||
let mut msg = Message {
|
||||
src_id: src_id,
|
||||
dest_id: dest_id,
|
||||
size: size,
|
||||
payload: Vec::with_capacity(size.into()),
|
||||
};
|
||||
msg.payload[0] = msg_type as u8;
|
||||
msg
|
||||
}
|
||||
|
||||
fn recive(input: Vec<u8>) -> Message {
|
||||
let byte1 = input.get(0).expect("Fail to Read Byte 1");
|
||||
let byte2 = input.get(1).expect("Fail to Read Byte 2");
|
||||
let byte3 = input.get(2).expect("Fail to Read Byte 3");
|
||||
let byte4 = input.get(3).expect("Fail to Read Byte 4");
|
||||
|
||||
let src_id: u32 =
|
||||
(byte1 << 24) as u32 | (byte2 << 16) as u32 | (byte3 << 8) as u32 | (byte4 << 0) as u32;
|
||||
|
||||
let byte5 = input.get(5).expect("Fail to Read Byte 5");
|
||||
let byte6 = input.get(6).expect("Fail to Read Byte 6");
|
||||
let byte7 = input.get(7).expect("Fail to Read Byte 7");
|
||||
let byte8 = input.get(8).expect("Fail to Read Byte 8");
|
||||
|
||||
let dest_id: u32 =
|
||||
(byte5 << 24) as u32 | (byte6 << 16) as u32 | (byte7 << 8) as u32 | (byte8 << 0) as u32;
|
||||
|
||||
let byte9 = input.get(9).expect("Fail to Read byte 9");
|
||||
let byte10 = input.get(10).expect("Fail to Read byte 10");
|
||||
|
||||
let size = (byte9 << 8) as u16 | (byte10 << 0) as u16;
|
||||
assert!(size > 0, "Ungültige size größe size = {}", size);
|
||||
|
||||
Message {
|
||||
src_id: src_id,
|
||||
dest_id: dest_id,
|
||||
size: size,
|
||||
payload: (&input[11..]).to_vec(),
|
||||
}
|
||||
}
|
||||
// Methoden der Klasse
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user