core_crypto::mls::conversation

Trait Conversation

Source
pub trait Conversation<'a>: ConversationWithMls<'a> {
    // Provided methods
    fn epoch<'async_trait>(
        &'a self,
    ) -> Pin<Box<dyn Future<Output = u64> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'a: 'async_trait { ... }
    fn ciphersuite<'async_trait>(
        &'a self,
    ) -> Pin<Box<dyn Future<Output = MlsCiphersuite> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'a: 'async_trait { ... }
    fn export_secret_key<'async_trait>(
        &'a self,
        key_length: usize,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'a: 'async_trait { ... }
    fn get_client_ids<'async_trait>(
        &'a self,
    ) -> Pin<Box<dyn Future<Output = Vec<ClientId>> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'a: 'async_trait { ... }
    fn get_external_sender<'async_trait>(
        &'a self,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'a: 'async_trait { ... }
    fn e2ei_conversation_state<'async_trait>(
        &'a self,
    ) -> Pin<Box<dyn Future<Output = Result<E2eiConversationState>> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'a: 'async_trait { ... }
    fn get_device_identities<'life0, 'async_trait>(
        &'a self,
        device_ids: &'life0 [ClientId],
    ) -> Pin<Box<dyn Future<Output = Result<Vec<WireIdentity>>> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'a: 'async_trait,
             'life0: 'async_trait { ... }
    fn get_user_identities<'life0, 'async_trait>(
        &'a self,
        user_ids: &'life0 [String],
    ) -> Pin<Box<dyn Future<Output = Result<HashMap<String, Vec<WireIdentity>>>> + Send + 'async_trait>>
       where Self: Sync + 'async_trait,
             'a: 'async_trait,
             'life0: 'async_trait { ... }
}
Expand description

The Conversation trait provides a set of operations that can be done on an immutable conversation.

Provided Methods§

Source

fn epoch<'async_trait>( &'a self, ) -> Pin<Box<dyn Future<Output = u64> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'a: 'async_trait,

Returns the epoch of a given conversation

Source

fn ciphersuite<'async_trait>( &'a self, ) -> Pin<Box<dyn Future<Output = MlsCiphersuite> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'a: 'async_trait,

Returns the ciphersuite of a given conversation

Source

fn export_secret_key<'async_trait>( &'a self, key_length: usize, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'a: 'async_trait,

Derives a new key from the one in the group, to be used elsewhere.

§Arguments
  • key_length - the length of the key to be derived. If the value is higher than the bounds of u16 or the context hash * 255, an error will be returned
§Errors

OpenMls secret generation error

Source

fn get_client_ids<'async_trait>( &'a self, ) -> Pin<Box<dyn Future<Output = Vec<ClientId>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'a: 'async_trait,

Exports the clients from a conversation

§Arguments
  • conversation_id - the group/conversation id
Source

fn get_external_sender<'async_trait>( &'a self, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'a: 'async_trait,

Returns the raw public key of the single external sender present in this group. This should be used to initialize a subconversation

Source

fn e2ei_conversation_state<'async_trait>( &'a self, ) -> Pin<Box<dyn Future<Output = Result<E2eiConversationState>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'a: 'async_trait,

Indicates when to mark a conversation as not verified i.e. when not all its members have a X509 Credential generated by Wire’s end-to-end identity enrollment

Source

fn get_device_identities<'life0, 'async_trait>( &'a self, device_ids: &'life0 [ClientId], ) -> Pin<Box<dyn Future<Output = Result<Vec<WireIdentity>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'a: 'async_trait, 'life0: 'async_trait,

From a given conversation, get the identity of the members supplied. Identity is only present for members with a Certificate Credential (after turning on end-to-end identity). If no member has a x509 certificate, it will return an empty Vec

Source

fn get_user_identities<'life0, 'async_trait>( &'a self, user_ids: &'life0 [String], ) -> Pin<Box<dyn Future<Output = Result<HashMap<String, Vec<WireIdentity>>>> + Send + 'async_trait>>
where Self: Sync + 'async_trait, 'a: 'async_trait, 'life0: 'async_trait,

From a given conversation, get the identity of the users (device holders) supplied. Identity is only present for devices with a Certificate Credential (after turning on end-to-end identity). If no member has a x509 certificate, it will return an empty Vec.

Returns a Map with all the identities for a given users. Consumers are then recommended to reduce those identities to determine the actual status of a user.

Implementors§

Source§

impl<'a, T: ConversationWithMls<'a>> Conversation<'a> for T