Expand description

Group APIs for MLS

This file contains the API to interact with groups.

The low-level standard API is described in the Api trait.
The high-level API is exposed in MlsGroup.

Modules

Configuration module for MlsGroup configurations.

MLS CoreGroup errors

MLS MlsGroup errors

Processing functions of an MlsGroup for incoming messages.

Structs

All valid wire format policy combinations

Group epoch. Internally this is stored as a u64. The group epoch is incremented with every valid Commit that is merged into the group state.

A group ID. The group ID is chosen by the creator of the group and should be globally unique.

Mixed ciphertext wire format policy combination.

Mixed plaintext wire format policy combination.

A MlsGroup represents an [CoreGroup] with an easier, high-level API designed to be used in production. The API exposes high level functions to manage a group by adding/removing members, get the current member list, etc.

Specifies the configuration parameters for a MlsGroup

Pure ciphertext wire format policy.

Pure plaintext wire format policy.

A ProposalStore can store the standalone proposals that are received from the DS in between two commit messages.

A queued Add proposal

Alternative representation of a Proposal, where the sender is extracted from the encapsulating MlsPlaintext and the ProposalRef is attached.

A queued PresharedKey proposal

A queued Remove proposal

A queued Update proposal

Contains the changes from a commit to the group state.

Defines what wire format is desired for outgoing handshake messages. Note that application messages must always be encrypted.

Enums

See the error’s module for more information.

Defines what wire format is acceptable for incoming handshake messages. Note that application messages must always be encrypted.

Enum that indicates whether the inner group state has been modified since the last time it was persisted. InnerState::Changed indicates that the state has changed and that [.save()] should be called. InnerState::Persisted indicates that the state has not been modified and therefore doesn’t need to be persisted.

See the error’s module for more information.

See the error’s module for more information.

MlsGroupState determines the state of an MlsGroup. The different states and their transitions are as follows:

Defines what wire format should be used for outgoing handshake messages. Note that application messages must always be encrypted.

Pending Commit state. Differentiates between Commits issued by group members and External Commits.

See the error’s module for more information.

See the error’s module for more information.