aboutsummaryrefslogtreecommitdiff
path: root/tests/pkd/pkd_daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/pkd/pkd_daemon.c')
-rw-r--r--tests/pkd/pkd_daemon.c48
1 files changed, 25 insertions, 23 deletions
diff --git a/tests/pkd/pkd_daemon.c b/tests/pkd/pkd_daemon.c
index 239bdd36..ac4b53b7 100644
--- a/tests/pkd/pkd_daemon.c
+++ b/tests/pkd/pkd_daemon.c
@@ -247,10 +247,9 @@ static int pkd_exec_hello(int fd, struct pkd_daemon_args *args)
int level = args->opts.libssh_log_level;
enum pkd_hostkey_type_e type = args->type;
const char *hostkeypath = args->hostkeypath;
- const char *default_kex = NULL;
- char *all_kex = NULL;
- size_t kex_len = 0;
+ const char *all_kex = NULL;
const char *all_ciphers = NULL;
+ const char *all_macs = NULL;
const uint64_t rekey_data_limit = args->rekey_data_limit;
bool process_config = false;
@@ -264,16 +263,10 @@ static int pkd_exec_hello(int fd, struct pkd_daemon_args *args)
goto outclose;
}
- if (type == PKD_RSA) {
- opts = SSH_BIND_OPTIONS_RSAKEY;
- } else if (type == PKD_ED25519) {
+ if (type == PKD_RSA ||
+ type == PKD_ED25519 ||
+ type == PKD_ECDSA) {
opts = SSH_BIND_OPTIONS_HOSTKEY;
-#ifdef HAVE_DSA
- } else if (type == PKD_DSA) {
- opts = SSH_BIND_OPTIONS_DSAKEY;
-#endif
- } else if (type == PKD_ECDSA) {
- opts = SSH_BIND_OPTIONS_ECDSAKEY;
} else {
pkderr("unknown hostkey type: %d\n", type);
rc = -1;
@@ -302,17 +295,10 @@ static int pkd_exec_hello(int fd, struct pkd_daemon_args *args)
if (!ssh_fips_mode()) {
const char *all_hostkeys = NULL;
/* Add methods not enabled by default */
-#define GEX_SHA1 "diffie-hellman-group-exchange-sha1"
- default_kex = ssh_kex_get_default_methods(SSH_KEX);
- kex_len = strlen(default_kex) + strlen(GEX_SHA1) + 2;
- all_kex = malloc(kex_len);
- if (all_kex == NULL) {
- pkderr("Failed to alloc more memory.\n");
- goto outclose;
- }
- snprintf(all_kex, kex_len, "%s," GEX_SHA1, default_kex);
+
+ /* Enable all supported key exchange methods */
+ all_kex = ssh_kex_get_supported_method(SSH_KEX);
rc = ssh_bind_options_set(b, SSH_BIND_OPTIONS_KEY_EXCHANGE, all_kex);
- free(all_kex);
if (rc != 0) {
pkderr("ssh_bind_options_set kex methods: %s\n", ssh_get_error(b));
goto outclose;
@@ -341,6 +327,21 @@ static int pkd_exec_hello(int fd, struct pkd_daemon_args *args)
goto outclose;
}
+ /* Enable all message authentication codes */
+ all_macs = ssh_kex_get_supported_method(SSH_MAC_C_S);
+ rc = ssh_bind_options_set(b, SSH_BIND_OPTIONS_HMAC_C_S, all_macs);
+ if (rc != 0) {
+ pkderr("ssh_bind_options_set MACs C-S: %s\n", ssh_get_error(b));
+ goto outclose;
+ }
+
+ all_macs = ssh_kex_get_supported_method(SSH_MAC_S_C);
+ rc = ssh_bind_options_set(b, SSH_BIND_OPTIONS_HMAC_S_C, all_macs);
+ if (rc != 0) {
+ pkderr("ssh_bind_options_set MACs S-C: %s\n", ssh_get_error(b));
+ goto outclose;
+ }
+
}
s = ssh_new();
@@ -582,7 +583,8 @@ void pkd_stop(struct pkd_result *out) {
close(pkd_state.server_fd);
rc = pthread_kill(ctx.tid, SIGUSR1);
- assert_int_equal(rc, 0);
+ assert_int_not_equal(rc, EINVAL);
+ assert_int_not_equal(rc, ENOTSUP);
rc = pthread_join(ctx.tid, NULL);
assert_int_equal(rc, 0);