pub enum HeaderSpec {
Structured {
fields: Vec<HeaderField>,
},
RawPrefix {
prefix_hex: String,
randomize_indices: Vec<usize>,
},
}Expand description
Header Specification for dynamic per-packet header generation
Instead of storing fixed header bytes, HeaderSpec declares how to generate headers dynamically. This solves Issue #30 (WireGuard detection) by ensuring each packet has a unique but protocol-valid header.
Variants§
Structured
Structured header semantics expressed as typed fields.
Fields
§
fields: Vec<HeaderField>RawPrefix
Raw prefix with per-packet randomization Uses fixed bytes with optional random positions
Implementations§
Source§impl HeaderSpec
impl HeaderSpec
pub fn structured(fields: Vec<HeaderField>) -> Self
pub fn stun_binding() -> Self
pub fn quic_initial(version: u32, dcid_len: u8) -> Self
pub fn dns_query(flags: u16) -> Self
pub fn tls_record(content_type: u8, version: u16) -> Self
pub fn fields(&self) -> Vec<HeaderField>
Sourcepub fn generate<R: Rng>(&self, rng: &mut R) -> Vec<u8> ⓘ
pub fn generate<R: Rng>(&self, rng: &mut R) -> Vec<u8> ⓘ
Generate a header from this specification Returns different bytes on each call for randomizable fields
Sourcepub fn min_length(&self) -> usize
pub fn min_length(&self) -> usize
Get the minimum header length for this spec
Sourcepub fn generate_static(&self) -> Vec<u8> ⓘ
pub fn generate_static(&self) -> Vec<u8> ⓘ
Generate a static header template for legacy compatibility Uses a seeded RNG for deterministic output
Trait Implementations§
Source§impl Clone for HeaderSpec
impl Clone for HeaderSpec
Source§fn clone(&self) -> HeaderSpec
fn clone(&self) -> HeaderSpec
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for HeaderSpec
impl Debug for HeaderSpec
Source§impl<'de> Deserialize<'de> for HeaderSpec
impl<'de> Deserialize<'de> for HeaderSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for HeaderSpec
impl RefUnwindSafe for HeaderSpec
impl Send for HeaderSpec
impl Sync for HeaderSpec
impl Unpin for HeaderSpec
impl UnsafeUnpin for HeaderSpec
impl UnwindSafe for HeaderSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more