Expand description
Group API for MLS
This module contains the API to interact with groups.
Modules§
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.
- 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 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
- 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.
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.- 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
- Export secret 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. - 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.