From 49a4bf29bbe1555029efe4e1fd749ed165be172e Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Fri, 15 Nov 2013 16:09:59 -0500 Subject: options: Add SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS option. Signed-off-by: Simo Sorce --- include/libssh/libssh.h | 3 ++- include/libssh/session.h | 1 + src/options.c | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index d71a693..0641d2c 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -333,7 +333,8 @@ enum ssh_options_e { SSH_OPTIONS_KEY_EXCHANGE, SSH_OPTIONS_HOSTKEYS, SSH_OPTIONS_GSSAPI_SERVER_IDENTITY, - SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY + SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY, + SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS, }; enum { diff --git a/include/libssh/session.h b/include/libssh/session.h index 86f94df..8a94daa 100644 --- a/include/libssh/session.h +++ b/include/libssh/session.h @@ -185,6 +185,7 @@ struct ssh_session_struct { char compressionlevel; char *gss_server_identity; char *gss_client_identity; + int gss_delegate_creds; } opts; }; diff --git a/src/options.c b/src/options.c index 4791e15..24d34df 100644 --- a/src/options.c +++ b/src/options.c @@ -375,6 +375,10 @@ int ssh_options_set_algo(ssh_session session, int algo, * Set it to specify the GSSAPI client identity that libssh * should expect when connecting to the server (const char *). * + * - SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS + * Set it to specify that GSSAPI should delegate credentials + * to the server (int, 0 = false). + * * @param value The value to set. This is a generic pointer and the * datatype which is used should be set according to the * type set. @@ -828,6 +832,17 @@ int ssh_options_set(ssh_session session, enum ssh_options_e type, } } break; + case SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS: + if (value == NULL) { + ssh_set_error_invalid(session); + return -1; + } else { + int x = *(int *)value; + + session->opts.gss_delegate_creds = (x & 0xff); + } + break; + default: ssh_set_error(session, SSH_REQUEST_DENIED, "Unknown ssh option %d", type); return -1; -- cgit