matrix_sdk_crypto::olm

Struct InboundGroupSession

Source
pub struct InboundGroupSession {
    pub sender_data: SenderData,
    pub room_id: OwnedRoomId,
    /* private fields */
}
Expand description

A structure representing an inbound group session.

Inbound group sessions, also known as “room keys”, are used to facilitate the exchange of room messages among a group of participants. The inbound variant of the group session is used to decrypt the room messages.

This struct wraps the vodozemac type of the same name, and adds additional Matrix-specific data to it. Additionally, the wrapper ensures thread-safe access of the vodozemac type.

Fields§

§sender_data: SenderData

Information about the sender of this session and how much we trust that information. Holds the information we have about the device that created the session, or, if we can use that device information to find the sender’s cross-signing identity, holds the user ID and cross-signing key.

§room_id: OwnedRoomId

The Room this GroupSession belongs to

Implementations§

Source§

impl InboundGroupSession

Source

pub fn new( sender_key: Curve25519PublicKey, signing_key: Ed25519PublicKey, room_id: &RoomId, session_key: &SessionKey, sender_data: SenderData, encryption_algorithm: EventEncryptionAlgorithm, history_visibility: Option<HistoryVisibility>, ) -> Result<Self, SessionCreationError>

Create a new inbound group session for the given room.

These sessions are used to decrypt room messages.

§Arguments
  • sender_key - The public Curve25519 key of the account that sent us the session.

  • signing_key - The public Ed25519 key of the account that sent us the session.

  • room_id - The id of the room that the session is used in.

  • session_key - The private session key that is used to decrypt messages.

  • sender_data - Information about the sender of the to-device message that established this session.

Source

pub fn from_export( exported_session: &ExportedRoomKey, ) -> Result<Self, SessionCreationError>

Create a InboundGroupSession from an exported version of the group session.

Most notably this can be called with an ExportedRoomKey from a previous export() call.

Source

pub async fn pickle(&self) -> PickledInboundGroupSession

Store the group session as a base64 encoded string.

§Arguments
  • pickle_mode - The mode that was used to pickle the group session, either an unencrypted mode or an encrypted using passphrase.
Source

pub async fn export(&self) -> ExportedRoomKey

Export this session at the first known message index.

If only a limited part of this session should be exported use export_at_index().

Source

pub fn sender_key(&self) -> Curve25519PublicKey

Get the sender key that this session was received from.

Source

pub fn backed_up(&self) -> bool

Has the session been backed up to the server.

Source

pub fn reset_backup_state(&self)

Reset the backup state of the inbound group session.

Source

pub fn mark_as_backed_up(&self)

For testing, allow to manually mark this GroupSession to have been backed up

Source

pub fn signing_keys(&self) -> &SigningKeys<DeviceKeyAlgorithm>

Get the map of signing keys this session was received from.

Source

pub async fn export_at_index(&self, message_index: u32) -> ExportedRoomKey

Export this session at the given message index.

Source

pub fn from_pickle( pickle: PickledInboundGroupSession, ) -> Result<Self, PickleError>

Restore a Session from a previously pickled string.

Returns the restored group session or a UnpicklingError if there was an error.

§Arguments
  • pickle - The pickled version of the InboundGroupSession.

  • pickle_mode - The mode that was used to pickle the session, either an unencrypted mode or an encrypted using passphrase.

Source

pub fn room_id(&self) -> &RoomId

The room where this session is used in.

Source

pub fn session_id(&self) -> &str

Returns the unique identifier for this session.

Source

pub fn algorithm(&self) -> &EventEncryptionAlgorithm

The algorithm that this inbound group session is using to decrypt events.

Source

pub fn first_known_index(&self) -> u32

Get the first message index we know how to decrypt.

Source

pub fn has_been_imported(&self) -> bool

Has the session been imported from a file or server-side backup? As opposed to being directly received as an m.room_key event.

Source

pub async fn compare(&self, other: &InboundGroupSession) -> SessionOrdering

Check if the InboundGroupSession is better than the given other InboundGroupSession

Source

pub async fn to_backup(&self) -> BackedUpRoomKey

Export the inbound group session into a format that can be uploaded to the server as a backup.

Source

pub async fn decrypt( &self, event: &EncryptedEvent, ) -> Result<(JsonObject, u32), MegolmError>

Decrypt an event from a room timeline.

§Arguments
  • event - The event that should be decrypted.
Source

pub fn sender_data_type(&self) -> SenderDataType

Return the SenderDataType of our SenderData. This is used during serialization, to allow us to store the type in a separate queryable column/property.

Trait Implementations§

Source§

impl Clone for InboundGroupSession

Source§

fn clone(&self) -> InboundGroupSession

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for InboundGroupSession

Source§

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

Formats the value using the given formatter. Read more
Source§

impl From<&ForwardedMegolmV1AesSha2Content> for InboundGroupSession

Source§

fn from(value: &ForwardedMegolmV1AesSha2Content) -> Self

Converts to this type from the input type.
Source§

impl From<&ForwardedMegolmV2AesSha2Content> for InboundGroupSession

Source§

fn from(value: &ForwardedMegolmV2AesSha2Content) -> Self

Converts to this type from the input type.
Source§

impl From<&InboundGroupSession> for RoomKeyInfo

Source§

fn from(group_session: &InboundGroupSession) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for InboundGroupSession

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl TryFrom<&DecryptedOlmV1Event<ForwardedRoomKeyContent>> for InboundGroupSession

Source§

type Error = SessionCreationError

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

fn try_from(value: &DecryptedForwardedRoomKeyEvent) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<&ExportedRoomKey> for InboundGroupSession

Source§

type Error = SessionCreationError

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

fn try_from(key: &ExportedRoomKey) -> Result<Self, Self::Error>

Performs the conversion.

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<T> CloneToUninit for T
where T: Clone,

Source§

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

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

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

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
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
Source§

impl<T> AsyncTraitDeps for T

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T

Source§

impl<T> SendOutsideWasm for T
where T: Send,

Source§

impl<T> SyncOutsideWasm for T
where T: Sync,