Rename the crate from alknet-vault to alkvault across source and docs: - Cargo.toml: package name and lib name (alknet_vault -> alkvault) - src/ doc comments and doc-test use statements - tests/ use statements and one string literal Convert references to non-vault alknet ADRs (003, 005, 008, 010, 014, 064) that were broken local links into @alkdev/alknet: cross-repo references, matching the alktype sibling pattern. Local ADR/OQ references are now proper links. Rewrote monorepo path references (crates/alknet-vault/src/...) to the flat layout (src/...). Fixed sdd_process.md package name (@alkdev/storage -> @alkdev/alkvault). ADR/OQ renumbering is deferred to a subsequent pass per the alknet- origin numbering convention. Generic prose 'vault' and type names (VaultServiceHandle, VaultServiceError, etc.) are unchanged. Build, 108 tests, and clippy all pass clean.
58 lines
1.8 KiB
Rust
58 lines
1.8 KiB
Rust
//! Integration tests for key derivation.
|
|
//!
|
|
//! These tests verify that SLIP-0010 derivation produces correct results
|
|
//! against known test vectors and that path constants produce expected key types.
|
|
|
|
use alkvault::derivation::PATHS;
|
|
use alkvault::service::VaultServiceHandle;
|
|
|
|
#[test]
|
|
fn test_identity_key_derivation() {
|
|
let service = VaultServiceHandle::new();
|
|
let _phrase = service.unlock_new(24).unwrap();
|
|
|
|
let key = service.derive_ed25519(PATHS::IDENTITY).unwrap();
|
|
assert_eq!(key.key_type, alkvault::protocol::KeyType::Ed25519);
|
|
assert!(!key.private_key.is_empty());
|
|
assert!(!key.public_key.is_empty());
|
|
}
|
|
|
|
#[test]
|
|
fn test_encryption_key_derivation() {
|
|
let service = VaultServiceHandle::new();
|
|
service.unlock_new(24).unwrap();
|
|
|
|
let key = service.derive_encryption_key(PATHS::ENCRYPTION).unwrap();
|
|
assert_eq!(key.key_type, alkvault::protocol::KeyType::Aes256Gcm);
|
|
}
|
|
|
|
#[test]
|
|
fn test_deterministic_derivation() {
|
|
// Same seed + same path = same key
|
|
let service = VaultServiceHandle::new();
|
|
let phrase = service.unlock_new(24).unwrap();
|
|
|
|
let key1 = service.derive_ed25519(PATHS::IDENTITY).unwrap();
|
|
|
|
// Unlock with the same phrase again
|
|
service.lock();
|
|
service.unlock(&phrase, None).unwrap();
|
|
|
|
let key2 = service.derive_ed25519(PATHS::IDENTITY).unwrap();
|
|
|
|
assert_eq!(key1.private_key, key2.private_key);
|
|
assert_eq!(key1.public_key, key2.public_key);
|
|
}
|
|
|
|
#[test]
|
|
fn test_different_paths_different_keys() {
|
|
let service = VaultServiceHandle::new();
|
|
service.unlock_new(24).unwrap();
|
|
|
|
let identity_key = service.derive_ed25519(PATHS::IDENTITY).unwrap();
|
|
let ssh_key = service.derive_ed25519(PATHS::SSH_HOST).unwrap();
|
|
|
|
assert_ne!(identity_key.private_key, ssh_key.private_key);
|
|
assert_ne!(identity_key.public_key, ssh_key.public_key);
|
|
}
|