MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / key_rotation

Function key_rotation

nodedb/src/control/security/encryption.rs:342–372  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

340
341 #[test]
342 fn key_rotation() {
343 let dir = tempfile::tempdir().unwrap();
344 let key1_path = dir.path().join("key1");
345 let key2_path = dir.path().join("key2");
346 let mut k1 = [0u8; 32];
347 let mut k2 = [0u8; 32];
348 getrandom::fill(&mut k1).unwrap();
349 getrandom::fill(&mut k2).unwrap();
350 std::fs::write(&key1_path, k1).unwrap();
351 std::fs::write(&key2_path, k2).unwrap();
352 use std::os::unix::fs::PermissionsExt as _;
353 std::fs::set_permissions(&key1_path, std::fs::Permissions::from_mode(0o600)).unwrap();
354 std::fs::set_permissions(&key2_path, std::fs::Permissions::from_mode(0o600)).unwrap();
355
356 let mut enc = VolumeEncryption::new(VolumeEncryptionConfig {
357 master_key_path: Some(key1_path),
358 enabled: true,
359 ..Default::default()
360 });
361 enc.load_master_key().unwrap();
362
363 // Generate DEK with key1.
364 let (dek1, _) = enc.generate_dek().unwrap();
365
366 // Rotate to key2.
367 enc.rotate_master_key(&key2_path).unwrap();
368
369 // Generate DEK with key2 — should be different.
370 let (dek2, _) = enc.generate_dek().unwrap();
371 assert_ne!(dek1, dek2); // Different DEKs (random).
372 }
373
374 #[test]
375 fn not_active_without_key() {

Callers

nothing calls this directly

Calls 6

joinMethod · 0.80
load_master_keyMethod · 0.80
generate_dekMethod · 0.80
rotate_master_keyMethod · 0.80
writeFunction · 0.50
pathMethod · 0.45

Tested by

no test coverage detected