mls_spec/messages.rs
1mod content;
2pub use self::content::*;
3mod content_type;
4pub use self::content_type::*;
5mod sender;
6pub use self::sender::*;
7mod message_kinds;
8pub use self::message_kinds::*;
9mod content_encryption;
10pub use self::content_encryption::*;
11
12use crate::defs::ProtocolVersion;
13
14/// MLS Message
15///
16/// <https://www.rfc-editor.org/rfc/rfc9420.html#section-6-4>
17///
18/// ## TLS Presentation Language
19///
20/// ```notrust,ignore
21/// struct {
22/// ProtocolVersion version = mls10;
23/// WireFormat wire_format;
24/// select (MLSMessage.wire_format) {
25/// case mls_public_message:
26/// PublicMessage public_message;
27/// case mls_private_message:
28/// PrivateMessage private_message;
29/// case mls_welcome:
30/// Welcome welcome;
31/// case mls_group_info:
32/// GroupInfo group_info;
33/// case mls_key_package:
34/// KeyPackage key_package;
35/// };
36/// } MLSMessage;
37/// ```
38#[derive(
39 Debug,
40 Clone,
41 PartialEq,
42 Eq,
43 tls_codec::TlsSerialize,
44 tls_codec::TlsDeserialize,
45 tls_codec::TlsSize,
46)]
47#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
48pub struct MlsMessage {
49 pub version: ProtocolVersion,
50 pub content: MlsMessageContent,
51}