From 7cb6b15aaaf49e50ba47bf5d3c02b91d18254fbd Mon Sep 17 00:00:00 2001 From: Aris Adamantiadis Date: Mon, 4 Mar 2013 00:36:55 +0100 Subject: auth: implement client-side gssapi Reviewed-by: Andreas Schneider --- include/libssh/auth.h | 9 +++++++-- include/libssh/gssapi.h | 6 ++++++ include/libssh/libssh.h | 1 + include/libssh/session.h | 3 ++- 4 files changed, 16 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/libssh/auth.h b/include/libssh/auth.h index 3a6012ec..2c0012b0 100644 --- a/include/libssh/auth.h +++ b/include/libssh/auth.h @@ -83,8 +83,13 @@ enum ssh_auth_state_e { /** Last state was a public key accepted for authentication */ SSH_AUTH_STATE_PK_OK, /** We asked for a keyboard-interactive authentication */ - SSH_AUTH_STATE_KBDINT_SENT - + SSH_AUTH_STATE_KBDINT_SENT, + /** We have sent an userauth request with gssapi-with-mic */ + SSH_AUTH_STATE_GSSAPI_REQUEST_SENT, + /** We are exchanging tokens until authentication */ + SSH_AUTH_STATE_GSSAPI_TOKEN, + /** We have sent the MIC and expecting to be authenticated */ + SSH_AUTH_STATE_GSSAPI_MIC_SENT, }; /** @internal diff --git a/include/libssh/gssapi.h b/include/libssh/gssapi.h index 688590bd..ad85e948 100644 --- a/include/libssh/gssapi.h +++ b/include/libssh/gssapi.h @@ -32,7 +32,13 @@ typedef struct ssh_gssapi_struct *ssh_gssapi; #ifdef WITH_SERVER int ssh_gssapi_handle_userauth(ssh_session session, const char *user, uint32_t n_oid, ssh_string *oids); SSH_PACKET_CALLBACK(ssh_packet_userauth_gssapi_token); +SSH_PACKET_CALLBACK(ssh_packet_userauth_gssapi_token_server); +SSH_PACKET_CALLBACK(ssh_packet_userauth_gssapi_token_client); SSH_PACKET_CALLBACK(ssh_packet_userauth_gssapi_mic); +SSH_PACKET_CALLBACK(ssh_packet_userauth_gssapi_response); + #endif /* WITH_SERVER */ +int ssh_gssapi_auth_mic(ssh_session session); + #endif /* GSSAPI_H */ diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index 2c62b2fe..790a5abb 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -555,6 +555,7 @@ LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session); LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i); LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i, const char *answer); +LIBSSH_API int ssh_userauth_gssapi(ssh_session session); LIBSSH_API const char *ssh_version(int req_version); LIBSSH_API int ssh_write_knownhost(ssh_session session); diff --git a/include/libssh/session.h b/include/libssh/session.h index 4764a1ef..dd1091bf 100644 --- a/include/libssh/session.h +++ b/include/libssh/session.h @@ -59,7 +59,8 @@ enum ssh_pending_call_e { SSH_PENDING_CALL_AUTH_PUBKEY, SSH_PENDING_CALL_AUTH_AGENT, SSH_PENDING_CALL_AUTH_KBDINT_INIT, - SSH_PENDING_CALL_AUTH_KBDINT_SEND + SSH_PENDING_CALL_AUTH_KBDINT_SEND, + SSH_PENDING_CALL_AUTH_GSSAPI_MIC }; /* libssh calls may block an undefined amount of time */ -- cgit v1.2.3