mls_spec/messages/
sender.rs1use crate::defs::{LeafIndex, SenderIndex};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[repr(u8)]
6pub enum SenderType {
7 Reserved = 0x00,
8 Member = 0x01,
9 External = 0x02,
10 NewMemberProposal = 0x03,
11 NewMemberCommit = 0x04,
12}
13
14#[derive(
15 Debug,
16 Clone,
17 Copy,
18 PartialEq,
19 Eq,
20 tls_codec::TlsSerialize,
21 tls_codec::TlsDeserialize,
22 tls_codec::TlsSize,
23)]
24#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
25#[repr(u8)]
26pub enum Sender {
27 #[tls_codec(discriminant = "SenderType::Member")]
28 Member(LeafIndex),
29 #[tls_codec(discriminant = "SenderType::External")]
30 External(SenderIndex),
31 #[tls_codec(discriminant = "SenderType::NewMemberCommit")]
32 NewMemberCommit,
33 #[tls_codec(discriminant = "SenderType::NewMemberProposal")]
34 NewMemberProposal,
35}
36
37impl From<&Sender> for SenderType {
38 fn from(value: &Sender) -> Self {
39 match value {
40 Sender::Member(_) => SenderType::Member,
41 Sender::External(_) => SenderType::External,
42 Sender::NewMemberCommit => SenderType::NewMemberCommit,
43 Sender::NewMemberProposal => SenderType::NewMemberProposal,
44 }
45 }
46}