wip
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
use crate::server_communication::generate_id;
|
||||
use crate::{
|
||||
cryptographic_signature::{CryptographicSignature, sign_message},
|
||||
server_communication::generate_id,
|
||||
};
|
||||
|
||||
const ID: usize = 4;
|
||||
const TYPE: usize = 5;
|
||||
@@ -19,25 +22,27 @@ const DATUM: u8 = 132;
|
||||
const NATTRAVERSALREQUEST: u8 = 4;
|
||||
const NATTRAVERSALREQUEST2: u8 = 5;
|
||||
|
||||
pub fn constructMessage(msgtype: u8, payload: Vec<u8>, id: &[u8]) {
|
||||
pub fn constructMessage(
|
||||
msgtype: u8,
|
||||
payload: Vec<u8>,
|
||||
id: i32,
|
||||
crypto_pair: &CryptographicSignature,
|
||||
) -> Option<Vec<u8>> {
|
||||
let mut message = Vec::new();
|
||||
|
||||
message.extend_from_slice(&id);
|
||||
message.push(msgtype);
|
||||
|
||||
match msgtype {
|
||||
HELLO => {
|
||||
let message: Vec<u8> = vec![0u8; LENGTH + EXTENSIONS + payload.len() + SIGNATURE];
|
||||
|
||||
message.extend_from_slice(id);
|
||||
message.extend_from_slice(0);
|
||||
|
||||
let name_vec = username.trim_end_matches(char::from(0)).as_bytes().to_vec();
|
||||
HandshakeMessage {
|
||||
id: id,
|
||||
msg_type: 1,
|
||||
length: length,
|
||||
extensions: 0,
|
||||
name: name_vec,
|
||||
signature: vec![0; 64],
|
||||
}
|
||||
HELLO | HELLOREPLY => {
|
||||
message.extend_from_slice(&payload);
|
||||
let signature = sign_message(crypto_pair, &message);
|
||||
message.extend_from_slice(&signature);
|
||||
return Some(message);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
pub struct UDPMessage {
|
||||
|
||||
Reference in New Issue
Block a user