summaryrefslogtreecommitdiffstats
path: root/tests/pkd/pkd_daemon.h
diff options
context:
space:
mode:
authorJon Simons <jon@jonsimons.org>2014-10-10 12:38:45 -0700
committerAndreas Schneider <asn@cryptomilk.org>2014-10-12 15:01:02 +0200
commit9dc932c02b6d88b380fdaee0b7184b23e2b85c2f (patch)
treea8b4e4152b218be2f00b4f425c534db16643651f /tests/pkd/pkd_daemon.h
parentaaae6cd97d3b99061fcf5444d491895690fb4cde (diff)
downloadlibssh-9dc932c02b6d88b380fdaee0b7184b23e2b85c2f.tar.gz
libssh-9dc932c02b6d88b380fdaee0b7184b23e2b85c2f.tar.xz
libssh-9dc932c02b6d88b380fdaee0b7184b23e2b85c2f.zip
tests: introduce pkd_hello
Introduce a sample public-key testing daemon to the 'pkd' test directory, and add support code for cycling through various combinations of different key exchange, cipher, and MAC algorithms. The goal of the 'pkd_hello' test is to make it easy to test interactions between non-libssh clients and a libssh-server, and to provide a starting point for testing new implementations for key types, ciphers, MACs, and so on. The thinking is that testing a new algorithm should be as simple as adding a new line for it in the PKDTESTS_* lists. Macros are used to generate the tests and helper functions for a couple of clients -- here, OpenSSH and dropbear are included for the first cut. If binaries are found for these clients, their test lists will be enabled; when binaries are not found for a given client, those tests are skipped. Tests are run in one large batch by default, but can also be run individually to help with tracking down things like signature bugs that may take many iterations to reproduce. Each test logs its stdout and stderr to its own file, which is cleaned up when a test succeeds. For failures, those logs can be combined with verbose libssh output from pkd itself to start debugging things. Some example usages: pkd_hello Run all tests with default number of iterations. pkd_hello --list List available individual test names. pkd_hello -i 1000 -t torture_pkd_openssh_ecdsa_256_ecdh_sha2_nistp256 Run only the torture_pkd_openssh_ecdsa_256_ecdh_sha2_nistp256 testcase 1000 times. pkd_hello -v -v -v -v -e -o Run all tests with maximum libssh and pkd logging. Included in the tests are passes for all existing kex, cipher, and MAC algorithms. BUG: https://red.libssh.org/issues/144 Signed-off-by: Jon Simons <jon@jonsimons.org> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'tests/pkd/pkd_daemon.h')
-rw-r--r--tests/pkd/pkd_daemon.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/pkd/pkd_daemon.h b/tests/pkd/pkd_daemon.h
new file mode 100644
index 00000000..c42573c1
--- /dev/null
+++ b/tests/pkd/pkd_daemon.h
@@ -0,0 +1,40 @@
+/*
+ * pkd_daemon.h -- tests use this interface to start, stop pkd
+ * instances and get results
+ *
+ * (c) 2014 Jon Simons
+ */
+
+#ifndef __PKD_DAEMON_H__
+#define __PKD_DAEMON_H__
+
+enum pkd_hostkey_type_e {
+ PKD_RSA,
+ PKD_DSA,
+ PKD_ECDSA
+};
+
+struct pkd_daemon_args {
+ enum pkd_hostkey_type_e type;
+ const char *hostkeypath;
+
+ struct {
+ int list;
+
+ int log_stdout;
+ int log_stderr;
+ int libssh_log_level;
+
+ const char *testname;
+ unsigned int iterations;
+ } opts;
+};
+
+struct pkd_result {
+ int ok;
+};
+
+int pkd_start(struct pkd_daemon_args *args);
+void pkd_stop(struct pkd_result *out);
+
+#endif /* __PKD_DAEMON_H__ */