mls_spec/drafts/
mls_light.rs1use crate::{
2 SensitiveBytes, defs::LeafIndex, group::welcome::Welcome, messages::MlsMessage, tree::TreeNode,
3};
4
5#[derive(
13 Debug,
14 Clone,
15 PartialEq,
16 Eq,
17 Default,
18 tls_codec::TlsSize,
19 tls_codec::TlsDeserialize,
20 tls_codec::TlsSerialize,
21)]
22#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
23pub struct CopathHash {
24 pub hash_value: SensitiveBytes,
25}
26
27#[derive(
38 Debug,
39 Clone,
40 PartialEq,
41 Eq,
42 Default,
43 tls_codec::TlsSize,
44 tls_codec::TlsDeserialize,
45 tls_codec::TlsSerialize,
46)]
47#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
48pub struct MembershipProof {
49 pub leaf_index: LeafIndex,
50 pub n_leaves: u32,
51 pub direct_path_nodes: Vec<Option<TreeNode>>,
52 pub copath_hashes: Vec<CopathHash>,
53}
54
55#[derive(
64 Debug,
65 Clone,
66 PartialEq,
67 Eq,
68 tls_codec::TlsSize,
69 tls_codec::TlsDeserialize,
70 tls_codec::TlsSerialize,
71)]
72#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
73pub struct SenderAuthenticatedMessage<T: tls_codec::Serialize + tls_codec::Deserialize> {
74 pub message: T,
75 pub sender_membership_proof: MembershipProof,
76}
77
78#[derive(
87 Debug,
88 Clone,
89 PartialEq,
90 Eq,
91 tls_codec::TlsSize,
92 tls_codec::TlsDeserialize,
93 tls_codec::TlsSerialize,
94)]
95#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
96pub struct AnnotatedWelcome {
97 pub welcome: SenderAuthenticatedMessage<Welcome>,
98 pub joiner_membership_proof: MembershipProof,
99}
100
101#[derive(
116 Debug,
117 Clone,
118 PartialEq,
119 Eq,
120 tls_codec::TlsSize,
121 tls_codec::TlsDeserialize,
122 tls_codec::TlsSerialize,
123)]
124#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
125pub struct AnnotatedCommit {
126 pub commit: MlsMessage,
127 pub sender_membership_proof: Option<MembershipProof>,
128 pub tree_hash_after: SensitiveBytes,
129 pub resolution_index: Option<u32>,
130 pub sender_membership_proof_after: MembershipProof,
131 pub receiver_membership_proof_after: MembershipProof,
132}