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::*;