core_crypto_ffi/bundles/
group_info.rs1use core_crypto::prelude::MlsGroupInfoBundle;
2#[cfg(target_family = "wasm")]
3use wasm_bindgen::prelude::*;
4
5#[derive(Debug, Clone, Copy)]
6#[cfg_attr(target_family = "wasm", wasm_bindgen, derive(serde::Serialize, serde::Deserialize))]
7#[cfg_attr(not(target_family = "wasm"), derive(uniffi::Enum))]
8#[repr(u8)]
9pub enum MlsGroupInfoEncryptionType {
10 Plaintext = 1,
12 JweEncrypted = 2,
14}
15
16impl From<core_crypto::prelude::MlsGroupInfoEncryptionType> for MlsGroupInfoEncryptionType {
17 fn from(value: core_crypto::prelude::MlsGroupInfoEncryptionType) -> Self {
18 match value {
19 core_crypto::prelude::MlsGroupInfoEncryptionType::Plaintext => Self::Plaintext,
20 core_crypto::prelude::MlsGroupInfoEncryptionType::JweEncrypted => Self::JweEncrypted,
21 }
22 }
23}
24
25impl From<MlsGroupInfoEncryptionType> for core_crypto::prelude::MlsGroupInfoEncryptionType {
26 fn from(value: MlsGroupInfoEncryptionType) -> Self {
27 match value {
28 MlsGroupInfoEncryptionType::Plaintext => Self::Plaintext,
29 MlsGroupInfoEncryptionType::JweEncrypted => Self::JweEncrypted,
30 }
31 }
32}
33
34#[derive(Debug, Clone, Copy)]
35#[cfg_attr(target_family = "wasm", wasm_bindgen, derive(serde::Serialize, serde::Deserialize))]
36#[cfg_attr(not(target_family = "wasm"), derive(uniffi::Enum))]
37#[repr(u8)]
38pub enum MlsRatchetTreeType {
39 Full = 1,
41 Delta = 2,
44 ByRef = 3,
45}
46
47impl From<core_crypto::prelude::MlsRatchetTreeType> for MlsRatchetTreeType {
48 fn from(value: core_crypto::prelude::MlsRatchetTreeType) -> Self {
49 match value {
50 core_crypto::prelude::MlsRatchetTreeType::Full => Self::Full,
51 core_crypto::prelude::MlsRatchetTreeType::Delta => Self::Delta,
52 core_crypto::prelude::MlsRatchetTreeType::ByRef => Self::ByRef,
53 }
54 }
55}
56
57impl From<MlsRatchetTreeType> for core_crypto::prelude::MlsRatchetTreeType {
58 fn from(value: MlsRatchetTreeType) -> Self {
59 match value {
60 MlsRatchetTreeType::Full => Self::Full,
61 MlsRatchetTreeType::Delta => Self::Delta,
62 MlsRatchetTreeType::ByRef => Self::ByRef,
63 }
64 }
65}
66
67#[derive(Debug, Clone)]
68#[cfg_attr(
69 target_family = "wasm",
70 wasm_bindgen(getter_with_clone),
71 derive(serde::Serialize, serde::Deserialize)
72)]
73#[cfg_attr(not(target_family = "wasm"), derive(uniffi::Record))]
74pub struct GroupInfoBundle {
75 pub encryption_type: MlsGroupInfoEncryptionType,
76 pub ratchet_tree_type: MlsRatchetTreeType,
77 pub payload: Vec<u8>,
78}
79
80impl From<MlsGroupInfoBundle> for GroupInfoBundle {
81 fn from(gi: MlsGroupInfoBundle) -> Self {
82 Self {
83 encryption_type: gi.encryption_type.into(),
84 ratchet_tree_type: gi.ratchet_tree_type.into(),
85 payload: gi.payload.bytes(),
86 }
87 }
88}