Struct matrix_sdk_crypto::olm::OutboundGroupSession

source ·
pub struct OutboundGroupSession { /* private fields */ }
Expand description

Outbound group session.

Outbound group sessions are used to exchange room messages between a group of participants. Outbound group sessions are used to encrypt the room messages.

Implementations§

source§

impl OutboundGroupSession

source

pub fn new( device_id: OwnedDeviceId, identity_keys: Arc<IdentityKeys>, room_id: &RoomId, settings: EncryptionSettings, ) -> Result<Self, SessionCreationError>

Create a new outbound group session for the given room.

Outbound group sessions are used to encrypt room messages.

§Arguments
  • device_id - The id of the device that created this session.

  • identity_keys - The identity keys of the account that created this session.

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

  • settings - Settings determining the algorithm and rotation period of the outbound group session.

source

pub fn add_request( &self, request_id: OwnedTransactionId, request: Arc<ToDeviceRequest>, share_infos: BTreeMap<OwnedUserId, BTreeMap<OwnedDeviceId, ShareInfo>>, )

Add a to-device request that is sending the session key (or room key) belonging to this OutboundGroupSession to other members of the group.

The request will get persisted with the session which allows seamless session reuse across application restarts.

Warning this method is only exposed to be used in integration tests of crypto-store implementations. Do not use this outside of tests.

source

pub fn withheld_code(&self, code: WithheldCode) -> RoomKeyWithheldContent

Create a new m.room_key.withheld event content with the given code for this outbound group session.

source

pub fn invalidate_session(&self)

This should be called if an the user wishes to rotate this session.

source

pub fn settings(&self) -> &EncryptionSettings

Get the encryption settings of this outbound session.

source

pub fn mark_request_as_sent( &self, request_id: &TransactionId, ) -> BTreeMap<OwnedUserId, BTreeSet<OwnedDeviceId>>

Mark the request with the given request id as sent.

This removes the request from the queue and marks the set of users/devices that received the session.

source

pub async fn encrypt( &self, event_type: &str, content: &Raw<AnyMessageLikeEventContent>, ) -> Raw<RoomEncryptedEventContent>

Encrypt a room message for the given room.

Beware that a room key needs to be shared before this method can be called using the share_room_key() method.

§Arguments
  • event_type - The plaintext type of the event, the outer type of the event will become m.room.encrypted.

  • content - The plaintext content of the message that should be encrypted in raw JSON form.

§Panics

Panics if the content can’t be serialized.

source

pub fn expired(&self) -> bool

Check if the session has expired and if it should be rotated.

A session will expire after some time or if enough messages have been encrypted using it.

source

pub fn invalidated(&self) -> bool

Has the session been invalidated.

source

pub fn mark_as_shared(&self)

Mark the session as shared.

Messages shouldn’t be encrypted with the session before it has been shared.

source

pub fn shared(&self) -> bool

Check if the session has been marked as shared.

source

pub async fn session_key(&self) -> SessionKey

Get the session key of this session.

A session key can be used to to create an InboundGroupSession.

source

pub fn sender_key(&self) -> Curve25519PublicKey

Gets the Sender Key

source

pub fn room_id(&self) -> &RoomId

Get the room id of the room this session belongs to.

source

pub fn session_id(&self) -> &str

Returns the unique identifier for this session.

source

pub async fn message_index(&self) -> u32

Get the current message index for this session.

Each message is sent with an increasing index. This returns the message index that will be used for the next encrypted message.

source

pub fn from_pickle( device_id: OwnedDeviceId, identity_keys: Arc<IdentityKeys>, pickle: PickledOutboundGroupSession, ) -> Result<Self, PickleError>

Restore a Session from a previously pickled string.

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

§Arguments
  • device_id - The device ID of the device that created this session. Put differently, our own device ID.

  • identity_keys - The identity keys of the device that created this session, our own identity keys.

  • pickle - The pickled version of the OutboundGroupSession.

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

source

pub async fn pickle(&self) -> PickledOutboundGroupSession

Store the group session as a base64 encoded string and associated data belonging to the session.

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

Trait Implementations§

source§

impl Clone for OutboundGroupSession

source§

fn clone(&self) -> OutboundGroupSession

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 OutboundGroupSession

Available on non-tarpaulin_include only.
source§

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

Formats the value using the given formatter. Read more

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§

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

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

impl<T> CompatExt for T

§

fn compat(self) -> Compat<T>

Applies the [Compat] adapter by value. Read more
§

fn compat_ref(&self) -> Compat<&T>

Applies the [Compat] adapter by shared reference. Read more
§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the [Compat] adapter by mutable reference. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

source§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
source§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
source§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
source§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
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,

§

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§

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.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

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>,

§

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>,

§

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

§

impl<T> WithSubscriber for T

§

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
§

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> SendOutsideWasm for T
where T: Send,

source§

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