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();