1use crate::{crew::CrewID, member::Member};
2
3use litl::{self, impl_debug_as_litl};
4
5use ridl::{symm_encr::{Encrypted, KeyID}, signing::SignerID};
6
7use ridl::symm_encr::KeySecret;
8
9use ridl::asymm_encr::EncrFromAnon;
10
11use serde_derive::{Serialize, Deserialize};
12
13
14#[derive(Clone, Serialize, Deserialize)]
15pub enum CrewChange {
16 AddRole (AddRole),
17 RemoveRole (RemoveRole),
18 RevealSecret (RevealSecret),
19 RevealSecretToParent(RevealSecretToParent),
20 EntrustInfo (EntrustInfo),
21 AddParent(AddParent),
22 RemoveParent(RemoveParent),
23 MakeStatement(MakeStatement),
24}
25impl_debug_as_litl!(CrewChange);
26
27#[derive(Clone, Serialize, Deserialize)]
28
29pub struct AddRole {
30 pub to: Member,
31 pub role: String,
32}
33impl_debug_as_litl!(AddRole);
34
35#[derive(Clone, Serialize, Deserialize)]
36
37pub struct RemoveRole {
38 pub from: Member,
39 pub role: String,
40}
41impl_debug_as_litl!(RemoveRole);
42
43#[derive(Clone, Serialize, Deserialize)]
44
45pub struct RevealSecret {
46 pub secret_kind: String,
47 pub to: SignerID,
48 pub encr: EncrFromAnon<KeySecret>,
49}
50impl_debug_as_litl!(RevealSecret);
51
52#[derive(Clone, Serialize, Deserialize)]
53
54pub struct RevealSecretToParent {
55 pub secret_kind: String,
56 pub parent_secret_id: KeyID,
57 pub parent_id: CrewID,
58 pub encr: Encrypted<KeySecret>,
59}
60impl_debug_as_litl!(RevealSecretToParent);
61
62#[derive(Clone, Serialize, Deserialize)]
63
64pub struct EntrustInfo {
65 pub to_secret_kind: String,
66 pub info_id: String,
67 pub info: Encrypted<litl::Val>,
68}
69impl_debug_as_litl!(EntrustInfo);
70
71#[derive(Clone, Serialize, Deserialize)]
72
73pub struct AddParent {
74 pub parent: CrewID,
75 }
77impl_debug_as_litl!(AddParent);
78
79#[derive(Clone, Serialize, Deserialize)]
80
81pub struct RemoveParent {
82 pub parent: CrewID,
83}
84impl_debug_as_litl!(RemoveParent);
85
86#[derive(Clone, Serialize, Deserialize)]
87pub struct MakeStatement {
88 pub path: String,
89 pub value: litl::Val,
90}
91impl_debug_as_litl!(MakeStatement);