pub enum OnionCircuitEffect {
DecryptCell {
from: Did,
bucket: OnionCellBucket,
sealed: AeadCiphertext,
},
DecryptForward {
from: Did,
received_at_ms: u128,
bucket: OnionCellBucket,
circuit_id: OnionCircuitId,
payload: AeadCiphertext,
},
SealAndSend {
to: Did,
recipient: PublicKey<33>,
bucket: OnionCellBucket,
encoded_message: Bytes,
},
Exit {
from: Did,
circuit_id: OnionCircuitId,
return_peer: Did,
return_session_public_key: PublicKey<33>,
client: OnionClientReturn,
forward_nonce: OnionForwardNonce,
forward_sequence: OnionForwardSequence,
payload: OnionCircuitPayload,
},
DecryptClient {
from: Did,
circuit_id: OnionCircuitId,
payload: AeadCiphertext,
},
}Expand description
Effects emitted by the route-aware circuit reducer.
Variants§
DecryptCell
Run forward-layer crypto at the shell boundary and re-inject the decoded layer.
Fields
bucket: OnionCellBucketPublic padding class; direction and exact length remain encrypted.
sealed: AeadCiphertextHop-encrypted fixed-size cell payload.
DecryptForward
Decrypt one forward onion layer after its outer cell has authenticated the direction.
Fields
bucket: OnionCellBucketPublic padding class to preserve on the next edge.
circuit_id: OnionCircuitIdEdge-local circuit id bound into the layer AEAD.
payload: AeadCiphertextForward onion layer encrypted to this node.
SealAndSend
Encrypt and send one fixed-size cell at the shell boundary.
Fields
bucket: OnionCellBucketPadding class preserved across relay edges.
Exit
A forward frame reached the exit.
Fields
circuit_id: OnionCircuitIdRandom circuit correlation id.
return_session_public_key: PublicKey<33>Immediate return peer session key for the first backward cell.
client: OnionClientReturnClient return key.
forward_nonce: OnionForwardNonceReplay token consumed by one-shot exit operations; stream frames use forward_sequence.
forward_sequence: OnionForwardSequenceMonotonic client-to-exit sequence within this circuit.
payload: OnionCircuitPayloadApplication payload.
DecryptClient
Decrypt a backward frame for this local client at the shell boundary.
Fields
circuit_id: OnionCircuitIdRandom circuit correlation id.
payload: AeadCiphertextAEAD payload encrypted to the client session public key.
Trait Implementations§
Source§impl Clone for OnionCircuitEffect
impl Clone for OnionCircuitEffect
Source§fn clone(&self) -> OnionCircuitEffect
fn clone(&self) -> OnionCircuitEffect
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for OnionCircuitEffect
impl Debug for OnionCircuitEffect
impl Eq for OnionCircuitEffect
Source§impl PartialEq for OnionCircuitEffect
impl PartialEq for OnionCircuitEffect
impl StructuralPartialEq for OnionCircuitEffect
Auto Trait Implementations§
impl !Freeze for OnionCircuitEffect
impl RefUnwindSafe for OnionCircuitEffect
impl Send for OnionCircuitEffect
impl Sync for OnionCircuitEffect
impl Unpin for OnionCircuitEffect
impl UnsafeUnpin for OnionCircuitEffect
impl UnwindSafe for OnionCircuitEffect
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
impl<T> MaybeSend for T
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.