Skip to main content

RawPacket

Struct RawPacket 

Source
pub struct RawPacket {
    pub payload: Vec<u8>,
    pub extensions: Vec<u8>,
    /* private fields */
}
Available on crate feature std only.
Expand description

A partially-decoded v6 packet: the cleartext envelope with the entire 15-byte header-protected region (version included) left opaque, plus the payload (the message remainder). The recv path produces this from the raw wire bytes before it has the per-session HP key — it locates the ciphertext sample (payload, at the fixed offset 15) and calls RawPacket::unmask_header with the mask computed from payload to recover the PacketHeader (including its version byte; the off-wire session_id is then set by Session::parse_protected). This is the codec half of header protection; the mask itself is computed by the session’s HeaderProtector (this module stays crypto-free). Routing is by the outer (rotating) ConnId.

WIRE v6: no cleartext version byte and no length prefixes — the version is inside masked_header, and payload is everything after the 15-byte header.

Fields§

§payload: Vec<u8>

AEAD ciphertext = the message remainder after the 15-byte header (cleartext on the wire; the payload itself is the AEAD ciphertext).

§extensions: Vec<u8>

Forward-compat headroom — always empty on the v6 data-plane wire (retained for the AAD/codec shape; see PhantomPacket::to_wire).

Implementations§

Source§

impl RawPacket

Source

pub fn from_wire(bytes: &[u8]) -> Result<Self, WireError>

Parse the cleartext envelope of a v6 wire packet, leaving the whole 15-byte HP-masked header region opaque and taking payload as the remainder. Bounds-checked exactly like PhantomPacket::from_wire — a short / hostile buffer yields WireError::Truncated, never a panic.

Source

pub fn unmask_header(&self, mask: &[u8]) -> Result<PacketHeader, WireError>

Recover the full cleartext PacketHeader by XOR-ing the masked region with the caller-supplied HP mask (the session’s HeaderProtector::mask_recv over self.payload). A mask shorter than HP_PROTECTED_LEN is rejected as WireError::Truncated rather than panicking (the session always supplies a full 16-byte mask).

Source

pub fn into_packet(self, header: PacketHeader) -> PhantomPacket

Reassemble a full PhantomPacket from this raw envelope plus a recovered header, moving out payload / extensions.

Trait Implementations§

Source§

impl Clone for RawPacket

Source§

fn clone(&self) -> RawPacket

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RawPacket

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> CompatExt for T

Source§

fn compat(self) -> Compat<T>
where T: Sized,

Applies the Compat adapter by value. Read more
Source§

fn compat_ref(&self) -> Compat<&T>

Applies the Compat adapter by shared reference. Read more
Source§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the Compat adapter by mutable reference. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

Source§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
Source§

unsafe fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
Source§

unsafe fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<> Read more
Source§

unsafe fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more