use qcomm_core::transport::qssh::{
QsshTransport, QsshConfig, TransportTier,
PqAlgorithm, SecurityTier,
};
use qcomm_core::transport::Transport;
use qcomm_core::crypto::qkd::{QkdClient, QkdProtocol, enhance_key};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("=== Drista + QSSH Integration Test ===\n");
println!("1. Testing QKD Key Enhancement...");
let qkd_client = QkdClient::new(QkdProtocol::BB84);
qkd_client.add_simulated_keys(5).await;
let classical_key = vec![0xAA; 32];
let qkd_key = qkd_client.get_key().await?.unwrap();
let enhanced = enhance_key(&classical_key, Some(&qkd_key));
println!(" Classical key: {:02x}{:02x}{:02x}...", classical_key[0], classical_key[1], classical_key[2]);
println!(" Enhanced key: {:02x}{:02x}{:02x}...", enhanced[0], enhanced[1], enhanced[2]);
println!(" ✓ QKD enhancement working\n");
println!("2. Testing Security Tiers...");
let tiers = [
(SecurityTier::PostQuantum, "T1: Post-Quantum"),
(SecurityTier::HardenedPQ, "T2: Hardened PQ (default)"),
(SecurityTier::EntropyEnhanced, "T3: Entropy Enhanced"),
(SecurityTier::QuantumSecured, "T4: Quantum Secured"),
(SecurityTier::HybridQuantum, "T5: Hybrid Quantum"),
];
for (tier, name) in tiers {
let transport_tier = TransportTier::from_security_tier(tier);
println!(" {} -> {}", name, transport_tier.display_name());
}
println!(" ✓ Security tiers configured\n");
println!("3. Testing QSSH Transport Configuration...");
#[cfg(target_os = "macos")]
let algorithm = PqAlgorithm::SphincsPlus;
#[cfg(not(target_os = "macos"))]
let algorithm = PqAlgorithm::Falcon512;
let config = QsshConfig {
listen_port: 4242,
pq_algorithm: algorithm,
security_tier: SecurityTier::HardenedPQ,
quantum_native: true,
..Default::default()
};
let lib_config = config.to_lib_config("127.0.0.1:4242", "testuser");
println!(" Server: {}", lib_config.server);
println!(" User: {}", lib_config.username);
println!(" Algorithm: {:?}", lib_config.pq_algorithm);
println!(" Security Tier: {:?}", lib_config.security_tier);
println!(" Quantum Native: {}", lib_config.quantum_native);
println!(" ✓ Configuration ready\n");
println!("4. Testing Transport Initialization...");
let mut transport = QsshTransport::new(config);
println!(" Name: {}", transport.name());
println!(" Capabilities: {:?}", transport.capabilities());
println!(" Security Tier: {:?}", transport.security_tier());
println!(" Connected: {}", transport.is_connected().await);
println!(" ✓ Transport initialized\n");
println!("5. Testing Listener...");
match transport.connect().await {
Ok(()) => {
println!(" ✓ Listener started");
transport.disconnect().await?;
println!(" ✓ Disconnected cleanly");
}
Err(e) => {
println!(" ⚠ Failed to start listener: {}", e);
}
}
println!("\n=== Integration Test Complete ===");
println!("Transport Tier: {}", TransportTier::PqSecured.display_name());
Ok(())
}