* Add MLS message API stub
* Migration to add conversation epoch
* Load and store epoch number
* Execute add proposals
* Update client membership when executing a proposal
When an Add proposal is executed, we check if the list of clients in the
conversation consists of exactly the MLS-enabled clients of the given
user, and fail the request otherwise.
Galley needs to make a request to Brig to fetch an up-to-date list of
MLS-enabled clients. This is not yet implemented.
Also, all federation behaviour is stubbed out for now.
* Stub test for adding a user to an MLS conversation
* Simplify conv → group ID mapping
Use SHA256, as we are already using it for 1-1 conversations, and there
is no need for the length of the group ID to be random.
* Pass group id to crypto-cli in base64
* fixup! Update client membership when executing a proposal
* Add internal endpoint for fetching mls clients
* Test adding unconnected users
* Check that join events are returned
* Extract client setup in test
* Extract group setup in tests
* Create more than one client in MLS messaging setup
* Test partially adding a user to a conversation
* Save MLS clients after adding members
This accomplishes two things:
- it makes sure that the member records exist before setting the
corresponding `mls_clients` field
- it prevents clients from being set for members that could not be
added to a conversation (for authorisation reasons, say).
Also add a test for the case where a new client of an already-present
user is added to a conversation.
* Clean up Swagger of MLS endpoints
* WIP: check message epoch against conversation
* Make it possible to setup a proteus conv in tests
* Test conversation protocol check
* Change endpoint name to `POST /mls/messages`
* Fix internal client creation query
We need the new `--group-out` option to be able to update the group
state after a commit.