This commit is contained in:
TIBERGHIEN corentin
2026-01-08 19:12:07 +01:00
parent dc1767abe4
commit cd2f87cb81
4 changed files with 34 additions and 21 deletions

View File

@@ -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 {