#[non_exhaustive]pub enum LeafSource {
WelcomeTree,
CommitAdd,
CommitUpdate,
CommitPath,
MessageSender,
RosterEntry,
}Expand description
Which validation gate refused a leaf in MlsError::LeafAddressMismatch.
RFC 9420 §7.3 names two moments at which a client validates a ratchet tree — joining, and processing a Commit — and the SDK adds a third at use time (the sender’s own leaf, checked where the message is attributed). They fail for the same reason but mean different things operationally: a Welcome refusal is an invite that was never joined, a commit refusal is a member of a group you are already in forging identities, and a sender refusal on a leaf that passed the first two means local group state was written behind the SDK’s back.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
WelcomeTree
A leaf in the ratchet tree of a Welcome being joined.
CommitAdd
A leaf added by an Add proposal in a staged commit.
CommitUpdate
A leaf replaced by an Update proposal in a staged commit.
CommitPath
The committer’s own leaf, carried in the commit’s update path.
MessageSender
The leaf a decrypted message is attributed to.
RosterEntry
A leaf read back out of stored group state to build a roster.
Trait Implementations§
Source§impl Clone for LeafSource
impl Clone for LeafSource
impl Copy for LeafSource
Source§impl Debug for LeafSource
impl Debug for LeafSource
Source§impl Display for LeafSource
impl Display for LeafSource
impl Eq for LeafSource
Source§impl PartialEq for LeafSource
impl PartialEq for LeafSource
impl StructuralPartialEq for LeafSource
Auto Trait Implementations§
impl Freeze for LeafSource
impl RefUnwindSafe for LeafSource
impl Send for LeafSource
impl Sync for LeafSource
impl Unpin for LeafSource
impl UnsafeUnpin for LeafSource
impl UnwindSafe for LeafSource
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Declassify for T
impl<T> Declassify for T
type Declassified = T
fn declassify(self) -> T
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 more