summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2014-08-06 10:58:21 -0400
committerSimo Sorce <simo@redhat.com>2014-08-07 12:44:46 -0400
commitc4b8b3218229d425ed81caf8ec652a84ed4c8457 (patch)
treede773edcf8e4595850b1d66ccebebb56f9094579
parent5ac987ad3b18a551a86116791445824bbd82c4e2 (diff)
downloadgss-ntlmssp-c4b8b3218229d425ed81caf8ec652a84ed4c8457.tar.gz
gss-ntlmssp-c4b8b3218229d425ed81caf8ec652a84ed4c8457.tar.xz
gss-ntlmssp-c4b8b3218229d425ed81caf8ec652a84ed4c8457.zip
Pass ctx and cred to external_xxx_auth functions
This allows external auth mechanisms to see all the data they may need.
-rw-r--r--src/external.c32
-rw-r--r--src/gss_auth.c12
-rw-r--r--src/gss_ntlmssp.h16
3 files changed, 24 insertions, 36 deletions
diff --git a/src/external.c b/src/external.c
index 4d04b71..02c54f1 100644
--- a/src/external.c
+++ b/src/external.c
@@ -27,34 +27,34 @@ uint32_t external_get_creds(struct gssntlm_name *name,
#endif
}
-uint32_t external_cli_auth(char *user, char *domain,
- gss_channel_bindings_t input_chan_bindings,
+uint32_t external_cli_auth(struct gssntlm_ctx *ctx,
+ struct gssntlm_cred *cred,
uint32_t in_flags,
- uint32_t *neg_flags,
- struct ntlm_buffer *nego_msg,
- struct ntlm_buffer *chal_msg,
- struct ntlm_buffer *auth_msg,
- struct ntlm_key *exported_session_key)
+ gss_channel_bindings_t input_chan_bindings)
{
#if HAVE_WBCLIENT
- return winbind_cli_auth(user, domain, input_chan_bindings,
- in_flags, neg_flags,
- nego_msg, chal_msg, auth_msg,
- exported_session_key);
+ return winbind_cli_auth(cred->cred.external.user.data.user.name,
+ cred->cred.external.user.data.user.domain,
+ input_chan_bindings,
+ in_flags, &ctx->neg_flags,
+ &ctx->nego_msg, &ctx->chal_msg, &ctx->auth_msg,
+ &ctx->exported_session_key);
#else
return ENOSYS;
#endif
}
-uint32_t external_srv_auth(char *user, char *domain,
- char *workstation, uint8_t *challenge,
+uint32_t external_srv_auth(struct gssntlm_ctx *ctx,
+ struct gssntlm_cred *cred,
struct ntlm_buffer *nt_chal_resp,
struct ntlm_buffer *lm_chal_resp,
- struct ntlm_key *ntlmv2_key)
+ struct ntlm_key *session_base_key)
{
#if HAVE_WBCLIENT
- return winbind_srv_auth(user, domain, workstation, challenge,
- nt_chal_resp, lm_chal_resp, ntlmv2_key);
+ return winbind_srv_auth(cred->cred.external.user.data.user.name,
+ cred->cred.external.user.data.user.domain,
+ ctx->workstation, ctx->server_chal,
+ nt_chal_resp, lm_chal_resp, session_base_key);
#else
return ENOSYS;
#endif
diff --git a/src/gss_auth.c b/src/gss_auth.c
index 60f85a9..f6faa0f 100644
--- a/src/gss_auth.c
+++ b/src/gss_auth.c
@@ -280,12 +280,7 @@ uint32_t gssntlm_cli_auth(uint32_t *minor,
break;
case GSSNTLM_CRED_EXTERNAL:
- retmin = external_cli_auth(cred->cred.external.user.data.user.name,
- cred->cred.external.user.data.user.domain,
- input_chan_bindings, in_flags,
- &ctx->neg_flags, &ctx->nego_msg,
- &ctx->chal_msg, &ctx->auth_msg,
- &ctx->exported_session_key);
+ retmin = external_cli_auth(ctx, cred, in_flags, input_chan_bindings);
if (retmin) {
retmaj = GSS_S_FAILURE;
goto done;
@@ -382,10 +377,7 @@ uint32_t gssntlm_srv_auth(uint32_t *minor,
break;
case GSSNTLM_CRED_EXTERNAL:
- retmin = external_srv_auth(cred->cred.external.user.data.user.name,
- cred->cred.external.user.data.user.domain,
- ctx->workstation, ctx->server_chal,
- nt_chal_resp, lm_chal_resp,
+ retmin = external_srv_auth(ctx, cred, nt_chal_resp, lm_chal_resp,
key_exchange_key);
if (retmin) {
retmaj = GSS_S_FAILURE;
diff --git a/src/gss_ntlmssp.h b/src/gss_ntlmssp.h
index 55e6570..a0689c7 100644
--- a/src/gss_ntlmssp.h
+++ b/src/gss_ntlmssp.h
@@ -173,19 +173,15 @@ int gssntlm_copy_creds(struct gssntlm_cred *in, struct gssntlm_cred *out);
uint32_t external_netbios_get_names(char **computer, char **domain);
uint32_t external_get_creds(struct gssntlm_name *name,
struct gssntlm_cred *cred);
-uint32_t external_cli_auth(char *user, char *domain,
- gss_channel_bindings_t input_chan_bindings,
+uint32_t external_cli_auth(struct gssntlm_ctx *ctx,
+ struct gssntlm_cred *cred,
uint32_t in_flags,
- uint32_t *neg_flags,
- struct ntlm_buffer *nego_msg,
- struct ntlm_buffer *chal_msg,
- struct ntlm_buffer *auth_msg,
- struct ntlm_key *exported_session_key);
-uint32_t external_srv_auth(char *user, char *domain,
- char *workstation, uint8_t *challenge,
+ gss_channel_bindings_t input_chan_bindings);
+uint32_t external_srv_auth(struct gssntlm_ctx *ctx,
+ struct gssntlm_cred *cred,
struct ntlm_buffer *nt_chal_resp,
struct ntlm_buffer *lm_chal_resp,
- struct ntlm_key *ntlmv2_key);
+ struct ntlm_key *session_base_key);
uint32_t netbios_get_names(char *computer_name,
char **netbios_host, char **netbios_domain);