openmls/test_utils/frankenstein/
commit.rs1use openmls_traits::types::HpkeCiphertext;
2use tls_codec::*;
3
4use super::{FrankenLeafNode, FrankenProposal};
5
6#[derive(
7 Debug, Clone, PartialEq, Eq, TlsSerialize, TlsDeserialize, TlsDeserializeBytes, TlsSize,
8)]
9pub struct FrankenCommit {
10 pub proposals: Vec<FrankenProposalOrRef>,
11 pub path: Option<FrankenUpdatePathIn>,
12}
13
14#[derive(
15 Debug, Clone, PartialEq, Eq, TlsSerialize, TlsDeserialize, TlsDeserializeBytes, TlsSize,
16)]
17#[repr(u8)]
18#[allow(clippy::large_enum_variant)]
19pub enum FrankenProposalOrRef {
20 #[tls_codec(discriminant = 1)]
21 Proposal(FrankenProposal),
22 Reference(VLBytes),
23}
24
25#[derive(
26 Debug, Clone, PartialEq, Eq, TlsSerialize, TlsDeserialize, TlsDeserializeBytes, TlsSize,
27)]
28pub struct FrankenUpdatePathIn {
29 pub leaf_node: FrankenLeafNode,
30 pub nodes: Vec<FrankenUpdatePathNode>,
31}
32
33#[derive(
34 Debug, Clone, PartialEq, Eq, TlsSerialize, TlsDeserialize, TlsDeserializeBytes, TlsSize,
35)]
36pub struct FrankenUpdatePathNode {
37 pub public_key: VLBytes,
38 pub encrypted_path_secrets: Vec<FrankenHpkeCiphertext>,
39}
40
41#[derive(
42 Debug, Clone, PartialEq, Eq, TlsSerialize, TlsDeserialize, TlsDeserializeBytes, TlsSize,
43)]
44pub struct FrankenHpkeCiphertext {
45 pub kem_output: VLBytes,
46 pub ciphertext: VLBytes,
47}
48
49impl From<FrankenHpkeCiphertext> for HpkeCiphertext {
50 fn from(ln: FrankenHpkeCiphertext) -> Self {
51 HpkeCiphertext::tls_deserialize(&mut ln.tls_serialize_detached().unwrap().as_slice())
52 .unwrap()
53 }
54}
55
56impl From<HpkeCiphertext> for FrankenHpkeCiphertext {
57 fn from(ln: HpkeCiphertext) -> Self {
58 FrankenHpkeCiphertext::tls_deserialize(&mut ln.tls_serialize_detached().unwrap().as_slice())
59 .unwrap()
60 }
61}