diff options
Diffstat (limited to 'oxish/src/tests.rs')
| -rw-r--r-- | oxish/src/tests.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/oxish/src/tests.rs b/oxish/src/tests.rs index 3470b97..4b9d65d 100644 --- a/oxish/src/tests.rs +++ b/oxish/src/tests.rs @@ -303,6 +303,49 @@ impl CliClient { } } +#[cfg(feature = "aws-lc")] +#[tokio::test] +async fn host_keys_from_dir_aws_lc() { + host_keys_from_dir(aws_lc::DEFAULT_PROVIDER).await.unwrap(); +} + +#[cfg(feature = "graviola")] +#[tokio::test] +async fn host_keys_from_dir_graviola() { + host_keys_from_dir(graviola::DEFAULT_PROVIDER) + .await + .unwrap(); +} + +async fn host_keys_from_dir(provider: &'static dyn CryptoProvider) -> anyhow::Result<()> { + let dir = TempDir::new()?; + for key_type in ["ed25519", "ecdsa", "rsa"] { + let status = Command::new("ssh-keygen") + .arg("-q") + .args(["-t", key_type]) + .args(["-N", ""]) + .args(["-C", "oxish-e2e"]) + .arg("-f") + .arg(dir.path().join(format!("ssh_host_{key_type}_key"))) + .status() + .await + .context("failed to run ssh-keygen")?; + assert!(status.success(), "ssh-keygen failed"); + } + + let host_keys = HostKeys::from_dir(dir.path(), provider)?; + let mut algorithms = Vec::new(); + for algorithm in host_keys.algorithms() { + algorithms.push(algorithm); + } + + assert_eq!(algorithms.len(), 2, "unexpected algorithms: {algorithms:?}"); + assert!(algorithms.contains(&PublicKeyAlgorithm::Ed25519)); + assert!(algorithms.contains(&PublicKeyAlgorithm::EcdsaSha2Nistp256)); + + Ok(()) +} + #[tokio::test] async fn verify_keys() { let providers = [ |
