2023-02-15 10:14:13 +00:00
|
|
|
//! Connection handling and send/receive queues
|
|
|
|
|
2023-02-15 14:50:54 +00:00
|
|
|
pub mod handshake;
|
2023-02-15 10:14:13 +00:00
|
|
|
mod packet;
|
2023-02-15 14:50:54 +00:00
|
|
|
|
|
|
|
use ::std::vec::Vec;
|
|
|
|
|
|
|
|
pub use handshake::Handshake;
|
|
|
|
pub use packet::ConnectionID as ID;
|
2023-02-25 14:36:14 +00:00
|
|
|
pub use packet::{Packet, PacketData};
|
2023-02-15 14:50:54 +00:00
|
|
|
|
|
|
|
/// Version of the fenrir protocol in use
|
|
|
|
#[derive(::num_derive::FromPrimitive, Debug, Copy, Clone)]
|
|
|
|
#[repr(u8)]
|
|
|
|
pub enum ProtocolVersion {
|
|
|
|
/// First Fenrir Protocol Version
|
|
|
|
V0 = 0,
|
|
|
|
}
|
2023-02-25 14:36:14 +00:00
|
|
|
impl ProtocolVersion {
|
|
|
|
/// actual length of the protocol version field
|
|
|
|
pub const fn len() -> usize {
|
|
|
|
1
|
|
|
|
}
|
|
|
|
/// Serialize into raw bytes
|
|
|
|
pub fn serialize(&self, out: &mut u8) {
|
|
|
|
*out = *self as u8;
|
|
|
|
}
|
|
|
|
}
|
2023-02-25 21:25:52 +00:00
|
|
|
|
|
|
|
/// A single connection and its data
|
|
|
|
#[derive(Debug)]
|
|
|
|
pub struct Connection {
|
|
|
|
/// Connection ID
|
|
|
|
pub id: ID,
|
|
|
|
/// The main hkdf used for all secrets in this connection
|
|
|
|
pub hkdf: crate::enc::hkdf::HkdfSha3,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Connection {
|
|
|
|
pub(crate) fn new(id: ID, hkdf: crate::enc::hkdf::HkdfSha3) -> Self {
|
|
|
|
Self { id, hkdf }
|
|
|
|
}
|
|
|
|
}
|