pub enum UnableToDecryptReason {
MalformedEncryptedEvent,
MissingMegolmSession {
withheld_code: Option<WithheldCode>,
},
UnknownMegolmMessageIndex,
MegolmDecryptionFailure,
PayloadDeserializationFailure,
MismatchedIdentityKeys,
SenderIdentityNotTrusted(VerificationLevel),
// some variants omitted
}
Expand description
Reason code for a decryption failure
Variants§
MalformedEncryptedEvent
The m.room.encrypted
event that should have been decrypted is
malformed in some way (e.g. unsupported algorithm, missing fields,
unknown megolm message type).
MissingMegolmSession
Decryption failed because we’re missing the megolm session that was used to encrypt the event.
Fields
withheld_code: Option<WithheldCode>
If the key was withheld on purpose, the associated code. None
means no withheld code was received.
UnknownMegolmMessageIndex
Decryption failed because, while we have the megolm session that was used to encrypt the message, it is ratcheted too far forward.
MegolmDecryptionFailure
We found the Megolm session, but were unable to decrypt the event using that session for some reason (e.g. incorrect MAC).
This represents all vodozemac::megolm::DecryptionError
s, except
UnknownMessageIndex
, which is represented as
UnknownMegolmMessageIndex
.
PayloadDeserializationFailure
The event could not be deserialized after decryption.
MismatchedIdentityKeys
Decryption failed because of a mismatch between the identity keys of the device we received the room key from and the identity keys recorded in the plaintext of the room key to-device message.
SenderIdentityNotTrusted(VerificationLevel)
An encrypted message wasn’t decrypted, because the sender’s
cross-signing identity did not satisfy the requested
TrustRequirement
.
Implementations§
Source§impl UnableToDecryptReason
impl UnableToDecryptReason
Sourcepub fn is_missing_room_key(&self) -> bool
pub fn is_missing_room_key(&self) -> bool
Returns true if this UTD is due to a missing room key (and hence might resolve itself if we wait a bit.)
Trait Implementations§
Source§impl Clone for UnableToDecryptReason
impl Clone for UnableToDecryptReason
Source§fn clone(&self) -> UnableToDecryptReason
fn clone(&self) -> UnableToDecryptReason
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for UnableToDecryptReason
impl Debug for UnableToDecryptReason
Source§impl<'de> Deserialize<'de> for UnableToDecryptReason
impl<'de> Deserialize<'de> for UnableToDecryptReason
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<UnableToDecryptReason, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<UnableToDecryptReason, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for UnableToDecryptReason
impl PartialEq for UnableToDecryptReason
Source§impl Serialize for UnableToDecryptReason
impl Serialize for UnableToDecryptReason
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for UnableToDecryptReason
impl StructuralPartialEq for UnableToDecryptReason
Auto Trait Implementations§
impl Freeze for UnableToDecryptReason
impl RefUnwindSafe for UnableToDecryptReason
impl Send for UnableToDecryptReason
impl Sync for UnableToDecryptReason
impl Unpin for UnableToDecryptReason
impl UnwindSafe for UnableToDecryptReason
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,
§impl<T> CompatExt for T
impl<T> CompatExt for T
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.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.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
Source§fn consume_handle(handle: Handle) -> Arc<T>
fn consume_handle(handle: Handle) -> Arc<T>
Arc<>
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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