sos_core/constants.rs
1//! Constants for file formats, folder names etc.
2
3/// Application name.
4pub const APP_NAME: &str = "SaveOurSecrets";
5
6/// Application author.
7pub const APP_AUTHOR: &str = "SaveOurSecrets";
8
9/// File name for audit logs.
10pub const AUDIT_FILE_NAME: &str = "audit.dat";
11
12/// Constants for file identity.
13mod identity {
14 /// Audit log identity magic bytes (SOSA).
15 pub const AUDIT_IDENTITY: [u8; 4] = [0x53, 0x4F, 0x53, 0x41];
16
17 /// Account event log identity magic bytes (SOSU).
18 pub const ACCOUNT_EVENT_LOG_IDENTITY: [u8; 4] = [0x53, 0x4F, 0x53, 0x55];
19
20 /// Folder event log identity magic bytes (SOSW).
21 pub const FOLDER_EVENT_LOG_IDENTITY: [u8; 4] = [0x53, 0x4F, 0x53, 0x57];
22
23 /// Device event log identity magic bytes (SOSD).
24 pub const DEVICE_EVENT_LOG_IDENTITY: [u8; 4] = [0x53, 0x4F, 0x53, 0x44];
25
26 /// File event log identity magic bytes (SOSF).
27 pub const FILE_EVENT_LOG_IDENTITY: [u8; 4] = [0x53, 0x4F, 0x53, 0x46];
28
29 /// Patch file identity magic bytes (SOSP).
30 pub const PATCH_IDENTITY: [u8; 4] = [0x53, 0x4F, 0x53, 0x50];
31
32 /// Vault file identity magic bytes (SOSV).
33 pub const VAULT_IDENTITY: [u8; 4] = [0x53, 0x4F, 0x53, 0x56];
34}
35
36/// Constants for file extensions.
37mod extensions {
38 /// File extension used for event log files.
39 pub const EVENT_LOG_EXT: &str = "events";
40
41 /// File extension used for vault files.
42 pub const VAULT_EXT: &str = "vault";
43
44 /// File extension for JSON documents.
45 pub const JSON_EXT: &str = "json";
46}
47
48/// Constants for vaults.
49mod vault {
50 /// Default public name for a vault.
51 pub const DEFAULT_VAULT_NAME: &str = "Documents";
52
53 /// Default name for the archive vault.
54 pub const DEFAULT_ARCHIVE_VAULT_NAME: &str = "Archive";
55
56 /// Default name for the contacts vault.
57 pub const DEFAULT_CONTACTS_VAULT_NAME: &str = "Contacts";
58
59 /// Default name for the authenticator vault.
60 pub const DEFAULT_AUTHENTICATOR_VAULT_NAME: &str = "Authenticator";
61}
62
63mod urn {
64 /// URN namespace identifier.
65 pub const URN_NID: &str = "sos";
66
67 /// Login vault AGE key name.
68 ///
69 /// This key is used to encrypt files for specific recipients.
70 pub const LOGIN_AGE_KEY_URN: &str = "urn:sos:identity:age";
71
72 /// Login vault file encryption password.
73 ///
74 /// This password is used to encrypt external files that are not
75 /// embedded in a vault.
76 pub const FILE_PASSWORD_URN: &str = "urn:sos:identity:file";
77
78 /// Namespace for vault passwords.
79 ///
80 /// The namespace is followed by the vault identifier.
81 pub const VAULT_NSS: &str = "vault:";
82
83 /// Device signing key.
84 pub const DEVICE_KEY_URN: &str = "urn:sos:device:key";
85}
86
87/// Constants for directory and file names.
88mod files {
89 /// Directory to store vaults.
90 pub const VAULTS_DIR: &str = "vaults";
91
92 /// Directory to store data for clients.
93 pub const LOCAL_DIR: &str = "local";
94
95 /// Directory to store data for servers.
96 pub const REMOTE_DIR: &str = "remote";
97
98 /// Directory to store identity vaults.
99 pub const IDENTITY_DIR: &str = "identity";
100
101 /// Directory to store files.
102 pub const FILES_DIR: &str = "files";
103
104 /// Directory to store external file blobs.
105 ///
106 /// Supercedes the obsolete `FILES_DIR` for file
107 /// system based accounts.
108 pub const BLOBS_DIR: &str = "blobs";
109
110 /// Directory to store log files.
111 pub const LOGS_DIR: &str = "logs";
112
113 /// Name of the file for account events.
114 pub const ACCOUNT_EVENTS: &str = "account";
115
116 /// Name of the file for device events.
117 pub const DEVICE_EVENTS: &str = "devices";
118
119 /// Name of the file for file events.
120 pub const FILE_EVENTS: &str = "files";
121
122 /// Name of the file for remote origins.
123 pub const REMOTES_FILE: &str = "servers";
124
125 /// Name of the vault file that stores the device
126 /// signing key.
127 pub const DEVICE_FILE: &str = "device";
128
129 /// Name of the file for preferences.
130 pub const PREFERENCES_FILE: &str = "preferences";
131
132 /// Database file.
133 pub const DATABASE_FILE: &str = "accounts.db";
134
135 /// File thats stores account-level system messages.
136 pub const SYSTEM_MESSAGES_FILE: &str = "system-messages";
137}
138
139/// Environment variables.
140mod env_vars {
141 /// Sets the storage directory.
142 pub const SOS_DATA_DIR: &str = "SOS_DATA_DIR";
143 /// Disable networking.
144 pub const SOS_OFFLINE: &str = "SOS_OFFLINE";
145 /// Shell session prompt.
146 pub const SOS_PROMPT: &str = "SOS_PROMPT";
147}
148
149/// Service name prefix for platform keyring entries.
150pub const KEYRING_SERVICE: &str = "Save Our Secrets";
151
152pub use self::urn::*;
153pub use env_vars::*;
154pub use extensions::*;
155pub use files::*;
156pub use identity::*;
157pub use vault::*;