Struct mls_rs::external_client::ExternalClient
source · 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.
sourcepub fn validate_key_package(
&self,
package: MlsMessage,
protocol: ProtocolVersion,
cipher_suite: CipherSuite
) -> Result<KeyPackage, MlsError>
pub fn validate_key_package( &self, package: MlsMessage, protocol: ProtocolVersion, cipher_suite: CipherSuite ) -> Result<KeyPackage, MlsError>
Utility function to validate key packages