| Crates.io | enigma-storage |
| lib.rs | enigma-storage |
| version | 0.0.1 |
| created_at | 2025-12-17 09:41:52.61267+00 |
| updated_at | 2025-12-17 09:41:52.61267+00 |
| description | Encrypted local storage for Enigma with mandatory at-rest encryption and cross-platform key vault providers. |
| homepage | https://github.com/Gladius33/enigma-storage |
| repository | https://github.com/Gladius33/enigma-storage |
| max_upload_size | |
| id | 1989843 |
| size | 106,702 |
Encrypted local storage with mandatory at-rest protection and pluggable key providers. The crate never prompts for passwords and never writes plaintext keys to disk. Applications decide how to collect secrets and choose an appropriate provider for each platform.
use enigma_storage::storage::EncryptedStore;
use enigma_storage::key_provider::{ForeignKeyProvider, MasterKey};
use rand::RngCore;
#[tokio::main]
async fn main() -> Result<(), enigma_storage::error::EnigmaStorageError> {
let mut key_bytes = [0u8; 32];
rand::thread_rng().fill_bytes(&mut key_bytes);
let provider = ForeignKeyProvider::new(key_bytes);
let store = EncryptedStore::open("data", "demo", &provider)?;
store.put("hello", b"world")?;
let value = store.get("hello")?;
assert_eq!(value, Some(b"world".to_vec()));
Ok(())
}
Enable platform providers with features like provider-windows-dpapi, provider-macos-keychain, or provider-linux-secret-service. Password-based wrapping uses provider-password. File sealing is on by default via provider-file-sealed.
Default tests run on Linux without platform daemons. Platform-specific tests are feature- and cfg-gated and can be enabled with RUN_PLATFORM_TESTS=1 on their target OS.