use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct HandshakeInit {
pub version: u8,
pub ed25519_pubkey: [u8; 32],
pub x25519_ephemeral: [u8; 32],
pub timestamp: u64,
pub signature: Vec<u8>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct HandshakeReply {
pub ed25519_pubkey: [u8; 32],
pub x25519_ephemeral: [u8; 32],
pub signature: Vec<u8>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct HandshakeComplete {
pub confirmation: Vec<u8>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct FileHeader {
pub name: String,
pub size: u64,
pub sha256: [u8; 32],
pub chunk_size: u32,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum ProtocolMessage {
HandshakeInit(HandshakeInit),
HandshakeReply(HandshakeReply),
HandshakeComplete(HandshakeComplete),
FileHeader(FileHeader),
Data(Vec<u8>),
}