|
42 | 42 | //! use cachekit_core::{ZeroKnowledgeEncryptor, derive_domain_key}; |
43 | 43 | //! use zeroize::Zeroizing; // add the zeroize crate to your Cargo.toml |
44 | 44 | //! |
45 | | -//! // Derive tenant-isolated key |
46 | | -//! // From your secret manager or CACHEKIT_MASTER_KEY, hex-decoded to 32 raw bytes. |
47 | | -//! // Never hard-code it, and never pass the hex string's bytes. |
48 | | -//! // Zeroizing wipes each key from memory when it is dropped. |
49 | | -//! let master_key = Zeroizing::new(load_master_key_from_secret_manager()); |
50 | | -//! let tenant_key = Zeroizing::new(derive_domain_key(master_key.as_slice(), "cache", b"tenant-123").unwrap()); |
51 | | -//! |
52 | | -//! // Encrypt |
53 | | -//! let encryptor = ZeroKnowledgeEncryptor::new().unwrap(); |
54 | | -//! let ciphertext = encryptor.encrypt_aes_gcm(b"secret", tenant_key.as_slice(), b"tenant-123").unwrap(); |
55 | | -//! |
56 | | -//! // Decrypt |
57 | | -//! let plaintext = encryptor.decrypt_aes_gcm(&ciphertext, tenant_key.as_slice(), b"tenant-123").unwrap(); |
| 45 | +//! fn main() -> Result<(), Box<dyn std::error::Error>> { |
| 46 | +//! // Derive tenant-isolated key |
| 47 | +//! // From your secret manager or CACHEKIT_MASTER_KEY, hex-decoded to 32 raw bytes. |
| 48 | +//! // Never hard-code it, and never pass the hex string's bytes. |
| 49 | +//! // Zeroizing wipes each key from memory when it is dropped. |
| 50 | +//! let master_key = Zeroizing::new(load_master_key_from_secret_manager()?); |
| 51 | +//! let tenant_key = Zeroizing::new(derive_domain_key(master_key.as_slice(), "cache", b"tenant-123")?); |
| 52 | +//! |
| 53 | +//! // Encrypt |
| 54 | +//! let encryptor = ZeroKnowledgeEncryptor::new()?; |
| 55 | +//! let ciphertext = encryptor.encrypt_aes_gcm(b"secret", tenant_key.as_slice(), b"tenant-123")?; |
| 56 | +//! |
| 57 | +//! // Decrypt |
| 58 | +//! let plaintext = encryptor.decrypt_aes_gcm(&ciphertext, tenant_key.as_slice(), b"tenant-123")?; |
| 59 | +//! assert_eq!(plaintext, b"secret"); |
| 60 | +//! Ok(()) |
| 61 | +//! } |
58 | 62 | //! ``` |
59 | 63 | //! |
60 | 64 | //! ## Security Properties |
|
0 commit comments