[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/4] tests: Add ssh server setup functionality
[Thread Prev] | [Thread Next]
- Subject: [PATCH 3/4] tests: Add ssh server setup functionality
- From: Alan Dunn <amdunn@xxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Sat, 19 Apr 2014 15:29:25 -0500
- To: libssh@xxxxxxxxxx
- Cc: Alan Dunn <amdunn@xxxxxxxxx>
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 <amdunn@xxxxxxxxx>
---
tests/torture.c | 54 +++++++++++++++++++++++++++++++++++++++++
tests/torture.h | 15 ++++++++++++
tests/unittests/torture_pki.c | 6 +----
3 files changed, 70 insertions(+), 5 deletions(-)
diff --git a/tests/torture.c b/tests/torture.c
index fb4707a..ce26050 100644
--- a/tests/torture.c
+++ b/tests/torture.c
@@ -235,6 +235,60 @@ failed:
return NULL;
}
+int torture_setup_rsa_key() {
+ int rc;
+
+ unlink(LIBSSH_RSA_TESTKEY);
+ unlink(LIBSSH_RSA_TESTKEY ".pub");
+
+ rc = system("ssh-keygen -t rsa -q -N \"\" -f " LIBSSH_RSA_TESTKEY);
+ return rc;
+}
+
+#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 fb7ac5a..d6e5e47 100644
--- a/tests/torture.h
+++ b/tests/torture.h
@@ -35,6 +35,7 @@
#include <setjmp.h>
#include "libssh/priv.h"
+#include "libssh/server.h"
#include "libssh/sftp.h"
#include <cmocka.h>
@@ -66,6 +67,20 @@ ssh_session torture_ssh_session(const char *host,
const char *user,
const char *password);
+#define LIBSSH_RSA_TESTKEY "libssh_testkey.id_rsa"
+
+/*
+ * Set up an RSA key pair with private key at LIBSSH_RSA_TESTKEY and
+ * public key at the same filename extended with ".pub".
+ *
+ * Returns 0 on success.
+ */
+int torture_setup_rsa_key(void);
+
+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);
diff --git a/tests/unittests/torture_pki.c b/tests/unittests/torture_pki.c
index 7eab95d..3672055 100644
--- a/tests/unittests/torture_pki.c
+++ b/tests/unittests/torture_pki.c
@@ -5,7 +5,6 @@
#include <sys/stat.h>
#include <fcntl.h>
-#define LIBSSH_RSA_TESTKEY "libssh_testkey.id_rsa"
#define LIBSSH_DSA_TESTKEY "libssh_testkey.id_dsa"
#define LIBSSH_ECDSA_TESTKEY "libssh_testkey.id_ecdsa"
#define LIBSSH_PASSPHRASE "libssh-rocks"
@@ -16,10 +15,7 @@ static void setup_rsa_key(void **state) {
(void) state; /* unused */
- unlink(LIBSSH_RSA_TESTKEY);
- unlink(LIBSSH_RSA_TESTKEY ".pub");
-
- rc = system("ssh-keygen -t rsa -q -N \"\" -f " LIBSSH_RSA_TESTKEY);
+ rc = torture_setup_rsa_key();
assert_true(rc == 0);
}
--
1.7.9.5
| [PATCH 0/4] Fix incorrectly passed X11 request screen number | Alan Dunn <amdunn@xxxxxxxxx> |