From 4bde48bb2e32774533ac0d45485fa6109f3cb891 Mon Sep 17 00:00:00 2001 From: Alan Dunn Date: Wed, 16 Apr 2014 23:29:52 -0500 Subject: tests: Add ssh server setup functionality Add the ability to generate a keypair (RSA, but tests that focus on what occurs over a connection may well not care) and an ssh_bind easily. Signed-off-by: Alan Dunn Reviewed-by: Andreas Schneider --- tests/torture.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ tests/torture.h | 5 +++++ 2 files changed, 49 insertions(+) diff --git a/tests/torture.c b/tests/torture.c index 74640031..726db214 100644 --- a/tests/torture.c +++ b/tests/torture.c @@ -393,6 +393,50 @@ failed: return NULL; } +#ifdef WITH_SERVER + +ssh_bind torture_ssh_bind(const char *addr, + const unsigned int port, + const char *private_key_file) { + int rc; + ssh_bind sshbind = NULL; + + sshbind = ssh_bind_new(); + if (sshbind == NULL) { + goto out; + } + + rc = ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDADDR, addr); + if (rc != 0) { + goto out_free; + } + + rc = ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDPORT, &port); + if (rc != 0) { + goto out_free; + } + + rc = ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_HOSTKEY, + private_key_file); + if (rc != 0) { + goto out_free; + } + + rc = ssh_bind_listen(sshbind); + if (rc != SSH_OK) { + goto out_free; + } + + goto out; + out_free: + ssh_bind_free(sshbind); + sshbind = NULL; + out: + return sshbind; +} + +#endif + #ifdef WITH_SFTP struct torture_sftp *torture_sftp_session(ssh_session session) { diff --git a/tests/torture.h b/tests/torture.h index bfad2c97..b4eab587 100644 --- a/tests/torture.h +++ b/tests/torture.h @@ -35,6 +35,7 @@ #include #include "libssh/priv.h" +#include "libssh/server.h" #include "libssh/sftp.h" #include @@ -66,6 +67,10 @@ ssh_session torture_ssh_session(const char *host, const char *user, const char *password); +ssh_bind torture_ssh_bind(const char *addr, + const unsigned int port, + const char *private_key_file); + struct torture_sftp *torture_sftp_session(ssh_session session); void torture_sftp_close(struct torture_sftp *t); -- cgit v1.2.3