Expand description
Group API for MLS
This module contains the API to interact with groups.
Modules§
- This module contains the implementation of the processing functions for public groups.
Structs§
- 8.1 Group Context
- 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.
- This is a wrapper type, because we can’t implement the storage traits on
Vec<u8>
. - A member in the group is identified by this
Member
struct. - A
MlsGroup
represents an MLS group with a high-level API. The API exposes high level functions to manage a group by adding/removing members, get the current member list, etc. - Specifies configuration for the creation of an
MlsGroup
. Refer to the User Manual for more information about the different configuration values. - Builder for an
MlsGroupCreateConfig
. - The
MlsGroupJoinConfig
contains all configuration parameters that are relevant to group operation at runtime. It is used to configure the group’s behaviour when joining an existing group. To configure a newly created group, useMlsGroupCreateConfig
. - Builder struct for an
MlsGroupJoinConfig
. - A
Welcome
message that has been processed but not staged yet. - A ProposalStore can store the standalone proposals that are received from the DS in between two commit messages.
- This struct holds all public values of an MLS group.
- A queued Add proposal
- Alternative representation of a Proposal, where the sender is extracted from the encapsulating PublicMessage 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.
- A
StagedWelcome
can be inspected and then turned into aMlsGroup
. This allows checking who authored the Welcome message. - Defines what wire format is desired for outgoing handshake messages. Note that application messages must always be encrypted.
Enums§
- Add members error
- Stage commit error
- Commit to pending proposals error
- Create add proposal error
- Create commit error
- Create group context ext proposal error
- Create message error
- EmptyInput error
- Errors that can happen when exporting a group info object.
- Export secret error
- External Commit error
- External Commit validaton error
- Error validation a GroupContextExtensions proposal.
- Defines what wire format is acceptable for incoming handshake messages. Note that application messages must always be encrypted.
- Leave group error
- Error merging a commit.
- Error merging pending commit
MlsGroupState
determines the state of anMlsGroup
. The different states and their transitions are as follows:- Group state error
- New group error
- 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.
- Process message error
- Proposal error
- Proposal validation error
- Propose add members error
- Propose PSK error
- Propose remove members error
- Propose self update error
- Remove members error
- Helper
enum
that classifies the kind of remove operation. This can be used to better interpret the semantic value of a remove proposal that is covered in a Commit message. - Remove proposal error
- Self update error
- Stage Commit error
- Validation error
- Welcome error
Constants§
- Incoming wire formats can be mixed while outgoing wire formats are always ciphertext.
- Incoming wire formats can be mixed while outgoing wire formats are always plaintext.
- Incoming and outgoing wire formats are always ciphertext.
- Incoming and outgoing wire formats are always plaintext.
- All valid wire format policy combinations.