crew_rs/
changes.rs

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    // TODO: reveal secrets to corresponding parent secrets
76}
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);