summaryrefslogtreecommitdiffhomepage
path: root/oxish/src/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'oxish/src/tests.rs')
-rw-r--r--oxish/src/tests.rs43
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 = [