pub struct OnionAuthenticatedPayload {
pub return_id: OnionReturnId,
pub nonce: OnionBackwardNonce,
pub sequence: OnionBackwardSequence,
pub authentication: MessageVerification,
pub payload: OnionCircuitPayload,
}Expand description
Client-decrypted backward payload plus the exit session proof that authenticated it.
Fields§
§return_id: OnionReturnIdClient/exit-only return id encrypted in the exit layer.
nonce: OnionBackwardNonceRandom transcript nonce signed by the exit for ciphertext and signature freshness.
sequence: OnionBackwardSequenceMonotonic sequence in the exit-to-client direction for this circuit.
authentication: MessageVerificationExit session signature over the backward payload transcript.
payload: OnionCircuitPayloadApplication payload signed by the exit and encrypted to the client.
Implementations§
Source§impl OnionAuthenticatedPayload
impl OnionAuthenticatedPayload
Sourcepub fn new_signed(
return_id: OnionReturnId,
payload: OnionCircuitPayload,
signer: &SessionSk,
) -> Result<Self>
pub fn new_signed( return_id: OnionReturnId, payload: OnionCircuitPayload, signer: &SessionSk, ) -> Result<Self>
Sign one backward payload with a fresh replay nonce.
Sourcepub fn new_signed_at_sequence(
return_id: OnionReturnId,
sequence: OnionBackwardSequence,
payload: OnionCircuitPayload,
signer: &SessionSk,
) -> Result<Self>
pub fn new_signed_at_sequence( return_id: OnionReturnId, sequence: OnionBackwardSequence, payload: OnionCircuitPayload, signer: &SessionSk, ) -> Result<Self>
Sign one backward payload at a caller-owned monotonic circuit sequence.
Sourcepub fn into_verified_payload(
self,
return_id: OnionReturnId,
expected_exit: &OnionExitDescriptor,
) -> Result<OnionVerifiedPayload>
pub fn into_verified_payload( self, return_id: OnionReturnId, expected_exit: &OnionExitDescriptor, ) -> Result<OnionVerifiedPayload>
Verify that a client-decrypted backward payload was signed by the selected exit session.
Invariant: accepted backward payloads satisfy all three identity equalities: signer account DID equals descriptor DID, signer account public key equals descriptor public key, and signer session DID equals the descriptor session encryption key DID. The signed transcript also binds the client/exit return id, per-frame nonce, exit session public key, and payload.
Trait Implementations§
Source§impl Clone for OnionAuthenticatedPayload
impl Clone for OnionAuthenticatedPayload
Source§fn clone(&self) -> OnionAuthenticatedPayload
fn clone(&self) -> OnionAuthenticatedPayload
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 OnionAuthenticatedPayload
impl Debug for OnionAuthenticatedPayload
Source§impl<'de> Deserialize<'de> for OnionAuthenticatedPayload
impl<'de> Deserialize<'de> for OnionAuthenticatedPayload
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>,
impl Eq for OnionAuthenticatedPayload
impl StructuralPartialEq for OnionAuthenticatedPayload
Auto Trait Implementations§
impl !Freeze for OnionAuthenticatedPayload
impl RefUnwindSafe for OnionAuthenticatedPayload
impl Send for OnionAuthenticatedPayload
impl Sync for OnionAuthenticatedPayload
impl Unpin for OnionAuthenticatedPayload
impl UnsafeUnpin for OnionAuthenticatedPayload
impl UnwindSafe for OnionAuthenticatedPayload
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.