diff options
author | Stefan Metzmacher <metze@samba.org> | 2015-11-26 11:44:02 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2016-03-10 06:52:27 +0100 |
commit | ccfd2647c7e65c3e2ad92dbc27c21570da0706d4 (patch) | |
tree | 8a2a09f3991a6295befd903b57a9364da9999389 | |
parent | 8efcb4943585f015c9956118d8f42be89d5c7677 (diff) | |
download | samba-ccfd2647c7e65c3e2ad92dbc27c21570da0706d4.tar.gz |
s3:auth_generic: add auth_generic_client_start_by_name()
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
-rw-r--r-- | source3/include/auth_generic.h | 3 | ||||
-rw-r--r-- | source3/libsmb/auth_generic.c | 23 |
2 files changed, 25 insertions, 1 deletions
diff --git a/source3/include/auth_generic.h b/source3/include/auth_generic.h index 07df62af43a..2672dc28724 100644 --- a/source3/include/auth_generic.h +++ b/source3/include/auth_generic.h @@ -42,7 +42,8 @@ NTSTATUS auth_generic_set_creds(struct auth_generic_state *ans, NTSTATUS auth_generic_client_prepare(TALLOC_CTX *mem_ctx, struct auth_generic_state **_ans); NTSTATUS auth_generic_client_start(struct auth_generic_state *ans, const char *oid); - +NTSTATUS auth_generic_client_start_by_name(struct auth_generic_state *ans, + const char *name); NTSTATUS auth_generic_client_start_by_authtype(struct auth_generic_state *ans, uint8_t auth_type, uint8_t auth_level); diff --git a/source3/libsmb/auth_generic.c b/source3/libsmb/auth_generic.c index 68d14516f39..c07445e79a3 100644 --- a/source3/libsmb/auth_generic.c +++ b/source3/libsmb/auth_generic.c @@ -151,6 +151,29 @@ NTSTATUS auth_generic_client_start(struct auth_generic_state *ans, const char *o return NT_STATUS_OK; } +NTSTATUS auth_generic_client_start_by_name(struct auth_generic_state *ans, + const char *name) +{ + NTSTATUS status; + + /* Transfer the credentials to gensec */ + status = gensec_set_credentials(ans->gensec_security, ans->credentials); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(1, ("Failed to set GENSEC credentials: %s\n", + nt_errstr(status))); + return status; + } + talloc_unlink(ans, ans->credentials); + ans->credentials = NULL; + + status = gensec_start_mech_by_name(ans->gensec_security, name); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + + return NT_STATUS_OK; +} + NTSTATUS auth_generic_client_start_by_authtype(struct auth_generic_state *ans, uint8_t auth_type, uint8_t auth_level) |