diem_secure_storage/
policy.rs1use serde::{Deserialize, Serialize};
9
10#[derive(Debug, Default, Deserialize, PartialEq, Serialize)]
12pub struct Policy {
13 pub permissions: Vec<Permission>,
14}
15
16impl Policy {
17 pub fn new(permissions: Vec<Permission>) -> Self { Self { permissions } }
18
19 pub fn public() -> Self {
20 Self::new(vec![Permission::new(
21 Identity::Anyone,
22 vec![Capability::Read, Capability::Write],
23 )])
24 }
25}
26
27#[derive(Debug, Deserialize, PartialEq, Serialize)]
29pub struct Permission {
30 pub id: Identity,
31 pub capabilities: Vec<Capability>,
32}
33
34impl Permission {
35 pub fn new(id: Identity, capabilities: Vec<Capability>) -> Self {
36 Self { id, capabilities }
37 }
38}
39
40#[derive(Debug, Deserialize, PartialEq, Serialize)]
47pub enum Identity {
48 User(String),
49 Anyone,
50 NoOne,
51}
52
53#[derive(Debug, Deserialize, PartialEq, Serialize)]
55pub enum Capability {
56 Export,
57 Read,
58 Rotate,
59 Sign,
60 Write,
61}