pd_cipher::keys::providers::memory
In-memory key storage provider implementation. In-memory key provider implementation.
Provides a simple, fast key storage solution for development, testing, and scenarios where persistence is not required.
Structs
InMemoryKeyProvider
In-memory key provider for development and testing.
InMemoryKeyProvider stores keys in memory using a thread-safe HashMap.
Keys are lost when the provider is dropped, making this suitable for
temporary operations, testing, and development scenarios.
Security Considerations
- Keys are stored in process memory and are not encrypted at rest
- Keys may be visible in memory dumps or swap files
- No protection against memory access by other processes
- Suitable for development but not production use
Thread Safety
This provider is thread-safe and can be safely shared across threads
using Arc<InMemoryKeyProvider>.
Examples
Basic Usage
use pd_cipher::keys::providers::{KeyProvider, memory::InMemoryKeyProvider};
use pd_cipher::keys::EncryptionAlgorithm;
# fn example() -> pd_cipher::Result<()> {
let mut provider = InMemoryKeyProvider::new();
// Generate and store a key
let key = provider.generate_key(EncryptionAlgorithm::Aes256Gcm)?;
let key_id = provider.store_key("my-key", key, Some("Test key".to_string()))?;
// Load the key back
let loaded_key = provider.load_key(&key_id)?;
# Ok(())
# }
With Key Derivation
use pd_cipher::keys::providers::{KeyProvider, KeyDerivationParams, memory::InMemoryKeyProvider};
use pd_cipher::keys::EncryptionAlgorithm;
# fn example() -> pd_cipher::Result<()> {
let provider = InMemoryKeyProvider::new();
use pd_cipher::constants::PBKDF2_DEFAULT_ITERATIONS;
let params = KeyDerivationParams {
password: "secure-password".to_string(),
salt: None, // Will be generated
iterations: PBKDF2_DEFAULT_ITERATIONS,
};
let derived_key = provider.derive_key(¶ms, EncryptionAlgorithm::XChaCha20Poly1305)?;
# Ok(())
# }
pub struct InMemoryKeyProvider