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