Module framing

Source
Expand description

§Message framing

This module contains framing-related operations for MLS messages, including validation logic.

The general structure of the framing process in OpenMLS closely follows the design described in Section 7 of the MLS specification. It can be visualized as follows:

                              Proposal        Commit     Application Data
                                 |              |              |
                                 +--------------+--------------+
                                                |
                                                V
                                         FramedContent
                                             |  |                -.
                                             |  |                  |
                                    +--------+  |                  |
                                    |           |                  |
                                    V           |                  +-- Asymmetric
                          FramedContentAuthData |                  |   Sign / Verify
                                    |           |                  |
                                    +--------+  |                  |
                                             |  |                  |
                                             V  V                -'
                                       AuthenticatedContent
                                                |                -.
                                                |                  |
                                                |                  |
                                       +--------+--------+         +-- Symmetric
                                       |                 |         |   Protect / Unprotect
                                       V                 V         |
Welcome  KeyPackage  GroupInfo   PublicMessage    PrivateMessage -'
   |          |          |             |                 |
   |          |          |             |                 |
   +----------+----------+----+--------+-----------------+
                              |
                              V
                          MLSMessage

Modules§

errors
Framing errors.

Structs§

ApplicationMessage
Application message received through a ProcessedMessage.
MlsMessageIn
Before use with the MlsGroup API, the message has to be unpacked via extract to yield its MlsMessageBodyIn.
MlsMessageOut
An MlsMessageOut is typically returned from an MlsGroup function and meant to be serialized and sent to the DS.
PrivateMessage
PrivateMessage is the framing struct for an encrypted PublicMessage. This message format is meant to be sent to and received from the Delivery Service.
PrivateMessageIn
PrivateMessage is the framing struct for an encrypted PublicMessage. This message format is meant to be sent to and received from the Delivery Service.
ProcessedMessage
A message that has passed all syntax and semantics checks.
PublicMessage
PublicMessage is a framing structure for MLS messages. It can contain Proposals, Commits and application messages.
PublicMessageIn
PublicMessageIn is a framing structure for MLS messages. It can contain Proposals, Commits and application messages.

Enums§

ContentType
MlsMessageBodyIn
MLSMessage (Body)
MlsMessageBodyOut
MLSMessage (Body)
ProcessedMessageContent
Content of a processed message.
ProtocolMessage
Enum containing a message for use with process_message and an MlsGroup. Both PublicMessage and PrivateMessage implement Into<ProtocolMessage>.
Sender
All possible sender types according to the MLS protocol spec.
WireFormat
Wire format of MLS messages.