use qssh::{QsshClient, QsshConfig, PqAlgorithm};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::init();
let config = QsshConfig {
server: "quantum.example.com:22222".to_string(),
username: "alice".to_string(),
port_forwards: vec![],
use_qkd: true, pq_algorithm: PqAlgorithm::Falcon512,
key_rotation_interval: 300, };
let master_key = b"example-master-key-from-tpm-or-password";
let mut client = QsshClient::new(config)
.with_vault(master_key)
.await?;
println!("Connecting with quantum-secure vault...");
client.connect().await?;
println!("Connected! Session secured with:");
println!("- Post-quantum key exchange (Falcon-512)");
println!("- Post-quantum signatures (SPHINCS+)");
println!("- Quantum vault with key isolation");
println!("- Double ratchet for forward secrecy");
let output = client.exec("echo 'Hello from quantum-secure QSSH!'").await?;
println!("Command output: {}", output);
println!("\nSession benefits:");
println!("- Keys are ratcheted forward after each packet");
println!("- Compromise of current key doesn't affect past messages");
println!("- QKD integration provides true quantum randomness");
println!("- Lamport signatures available for one-time critical ops");
client.disconnect().await?;
println!("\nSession closed. All ephemeral keys destroyed.");
Ok(())
}