From 7c2574682cb596670a06a37e4071d914aa4ffa23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavol=20=C5=BD=C3=A1=C4=8Dik?= Date: Tue, 9 Dec 2025 14:02:58 +0100 Subject: [PATCH] tests: test pubkey auth after gssapi-keyex with null host key MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We want to make sure it suceeds because it could fail if the client tries to send a hostbound public key authentication request. Signed-off-by: Pavol Žáčik Reviewed-by: Jakub Jelen Reviewed-by: Andreas Schneider --- .../client/torture_gssapi_key_exchange_null.c | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/client/torture_gssapi_key_exchange_null.c b/tests/client/torture_gssapi_key_exchange_null.c index f461adfa..c1096b3c 100644 --- a/tests/client/torture_gssapi_key_exchange_null.c +++ b/tests/client/torture_gssapi_key_exchange_null.c @@ -115,6 +115,38 @@ static void torture_gssapi_key_exchange_null(void **state) torture_teardown_kdc_server(state); } +static void torture_gssapi_key_exchange_null_pubkey_auth(void **state) +{ + struct torture_state *s = *state; + ssh_session session = s->ssh.session; + int rc; + bool t = true; + + /* Valid */ + torture_setup_kdc_server( + state, + "kadmin.local addprinc -randkey host/server.libssh.site \n" + "kadmin.local ktadd -k $(dirname $0)/d/ssh.keytab host/server.libssh.site \n" + "kadmin.local addprinc -pw bar alice \n" + "kadmin.local list_principals", + + "echo bar | kinit alice"); + + rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_GSSAPI_KEY_EXCHANGE, &t); + assert_ssh_return_code(s->ssh.session, rc); + + rc = ssh_connect(session); + assert_ssh_return_code(s->ssh.session, rc); + + assert_string_equal(session->current_crypto->kex_methods[SSH_HOSTKEYS], + "null"); + + rc = ssh_userauth_publickey_auto(session, NULL, NULL); + assert_int_equal(rc, SSH_AUTH_SUCCESS); + + torture_teardown_kdc_server(state); +} + int torture_run_tests(void) { int rc; @@ -122,6 +154,9 @@ int torture_run_tests(void) cmocka_unit_test_setup_teardown(torture_gssapi_key_exchange_null, session_setup, session_teardown), + cmocka_unit_test_setup_teardown(torture_gssapi_key_exchange_null_pubkey_auth, + session_setup, + session_teardown), }; ssh_init();