pub struct ExternalClient<C> { /* private fields */ }
external_client
only.Expand description
A client capable of observing a group’s state without having private keys required to read content.
This structure is useful when an application is sending plaintext control messages in order to allow a central server to facilitate communication between users.
§Warning
This structure will only be able to observe groups that were
created by clients that have the encrypt_control_messages
option returned by MlsRules::encryption_options
set to false
. Any control messages that are sent encrypted
over the wire will break the ability of this client to track
the resulting group state.
Implementations§
source§impl ExternalClient<()>
impl ExternalClient<()>
pub fn builder() -> ExternalClientBuilder<ExternalBaseConfig>
source§impl<C> ExternalClient<C>where
C: ExternalClientConfig + Clone,
impl<C> ExternalClient<C>where
C: ExternalClientConfig + Clone,
sourcepub fn observe_group(
&self,
group_info: MlsMessage,
tree_data: Option<ExportedTree<'_>>,
) -> Result<ExternalGroup<C>, MlsError>
pub fn observe_group( &self, group_info: MlsMessage, tree_data: Option<ExportedTree<'_>>, ) -> Result<ExternalGroup<C>, MlsError>
Begin observing a group based on a GroupInfo message created by Group::group_info_message
tree_data
is required to be provided out of band if the client that
created GroupInfo message did not did not use the ratchet_tree_extension
according to MlsRules::commit_options
at the time the welcome message
was created. tree_data
can be exported from a group using the
export tree function.
sourcepub fn load_group(
&self,
snapshot: ExternalSnapshot,
) -> Result<ExternalGroup<C>, MlsError>
pub fn load_group( &self, snapshot: ExternalSnapshot, ) -> Result<ExternalGroup<C>, MlsError>
Load an existing observed group by loading a snapshot that was generated by ExternalGroup::snapshot.
pub fn validate_key_package( &self, key_package: MlsMessage, ) -> Result<KeyPackage, MlsError>
sourcepub fn identity_provider(&self) -> <C as ExternalClientConfig>::IdentityProvider
pub fn identity_provider(&self) -> <C as ExternalClientConfig>::IdentityProvider
The IdentityProvider that this client was configured to use.
Auto Trait Implementations§
impl<C> Freeze for ExternalClient<C>where
C: Freeze,
impl<C> RefUnwindSafe for ExternalClient<C>where
C: RefUnwindSafe,
impl<C> Send for ExternalClient<C>where
C: Send,
impl<C> Sync for ExternalClient<C>where
C: Sync,
impl<C> Unpin for ExternalClient<C>where
C: Unpin,
impl<C> UnwindSafe for ExternalClient<C>where
C: UnwindSafe,
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> 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