aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSanne Raymaekers <sraymaek@redhat.com>2018-11-08 13:28:03 +0100
committerAndreas Schneider <asn@cryptomilk.org>2018-11-08 16:19:18 +0100
commit67f418218bd3c2cec9e3b838541a1c371aeaa106 (patch)
tree92e8f86b747b2d73634854bc8a8626c05be57b47 /tests
parent03c30e9c8ad34b3fa659a70e474a9b8cb248f85b (diff)
downloadlibssh-67f418218bd3c2cec9e3b838541a1c371aeaa106.tar.gz
libssh-67f418218bd3c2cec9e3b838541a1c371aeaa106.tar.xz
libssh-67f418218bd3c2cec9e3b838541a1c371aeaa106.zip
knownhosts: Take StrictHostKeyChecking option into account
Signed-off-by: Sanne Raymaekers <sraymaek@redhat.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/client/torture_knownhosts.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/client/torture_knownhosts.c b/tests/client/torture_knownhosts.c
index 12dfbc82..c5447587 100644
--- a/tests/client/torture_knownhosts.c
+++ b/tests/client/torture_knownhosts.c
@@ -328,6 +328,41 @@ static void torture_knownhosts_conflict(void **state) {
/* session will be freed by session_teardown() */
}
+static void torture_knownhosts_no_hostkeychecking(void **state)
+{
+
+ struct torture_state *s = *state;
+ ssh_session session = s->ssh.session;
+ char known_hosts_file[1024] = {0};
+ enum ssh_known_hosts_e found;
+ int strict_host_key_checking = 0;
+ int rc;
+
+ snprintf(known_hosts_file,
+ sizeof(known_hosts_file),
+ "%s/%s",
+ s->socket_dir,
+ TORTURE_KNOWN_HOSTS_FILE);
+
+ rc = ssh_options_set(session, SSH_OPTIONS_KNOWNHOSTS, known_hosts_file);
+ assert_ssh_return_code(session, rc);
+
+ rc = ssh_options_set(session, SSH_OPTIONS_HOSTKEYS, "ssh-ed25519");
+ assert_ssh_return_code(session, rc);
+
+ rc = ssh_connect(session);
+ assert_ssh_return_code(session, rc);
+
+ found = ssh_session_is_known_server(session);
+ assert_int_equal(found, SSH_KNOWN_HOSTS_UNKNOWN);
+
+ rc = ssh_options_set(session, SSH_OPTIONS_STRICTHOSTKEYCHECK, &strict_host_key_checking);
+ assert_ssh_return_code(session, rc);
+
+ found = ssh_session_is_known_server(session);
+ assert_int_equal(found, SSH_KNOWN_HOSTS_OK);
+}
+
int torture_run_tests(void) {
int rc;
struct CMUnitTest tests[] = {
@@ -346,6 +381,9 @@ int torture_run_tests(void) {
cmocka_unit_test_setup_teardown(torture_knownhosts_conflict,
session_setup,
session_teardown),
+ cmocka_unit_test_setup_teardown(torture_knownhosts_no_hostkeychecking,
+ session_setup,
+ session_teardown),
};
ssh_init();