1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// SPDX-License-Identifier: AGPL-3.0-or-later
pub mod local_fs_tests;
pub mod mode_authorizer;

use btlib::{
    crypto::{ConcreteCreds, Creds},
    Epoch, Principaled,
};
use core::time::Duration;
use lazy_static::lazy_static;

fn one_hour_hence() -> Epoch {
    Epoch::now() + Duration::from_secs(3600)
}

lazy_static! {
    static ref ROOT_CREDS: ConcreteCreds = {
        let mut root_creds = ConcreteCreds::generate().unwrap();
        let writecap = root_creds
            .issue_writecap(
                root_creds.principal(),
                &mut std::iter::empty(),
                one_hour_hence(),
            )
            .unwrap();
        root_creds.set_writecap(writecap).unwrap();
        root_creds
    };
    static ref NODE_CREDS: ConcreteCreds = {
        let root_creds = &ROOT_CREDS;
        let mut node_creds = ConcreteCreds::generate().unwrap();
        let writecap = root_creds
            .issue_writecap(
                node_creds.principal(),
                &mut std::iter::empty(),
                one_hour_hence(),
            )
            .unwrap();
        node_creds.set_writecap(writecap).unwrap();
        node_creds
    };
}

pub fn root_creds() -> &'static ConcreteCreds {
    &ROOT_CREDS
}

pub fn node_creds() -> &'static ConcreteCreds {
    &NODE_CREDS
}