From 9fd27d7a4780040ccab8539efb919f7b618aa3da Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 20 Jul 2017 13:03:03 +0200 Subject: [PATCH] s4:http/gensec: implement "http_negotiate" using GENSEC_OID_SPNEGO Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider --- source4/lib/http/gensec/generic.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/source4/lib/http/gensec/generic.c b/source4/lib/http/gensec/generic.c index 1d7ae47b793..5bafb839d65 100644 --- a/source4/lib/http/gensec/generic.c +++ b/source4/lib/http/gensec/generic.c @@ -63,6 +63,12 @@ static NTSTATUS gensec_http_ntlm_client_start(struct gensec_security *gensec) GENSEC_OID_NTLMSSP); } +static NTSTATUS gensec_http_negotiate_client_start(struct gensec_security *gensec) +{ + return gensec_http_generic_client_start(gensec, "Negotiate", + GENSEC_OID_SPNEGO); +} + struct gensec_http_generic_update_state { struct gensec_security *gensec; DATA_BLOB sub_in; @@ -245,6 +251,17 @@ static const struct gensec_security_ops gensec_http_ntlm_security_ops = { .priority = GENSEC_EXTERNAL, }; +static const struct gensec_security_ops gensec_http_negotiate_security_ops = { + .name = "http_negotiate", + .auth_type = 0, + .client_start = gensec_http_negotiate_client_start, + .update_send = gensec_http_generic_update_send, + .update_recv = gensec_http_generic_update_recv, + .enabled = true, + .priority = GENSEC_EXTERNAL, + .glue = true, +}; + _PUBLIC_ NTSTATUS gensec_http_generic_init(TALLOC_CTX *ctx) { NTSTATUS status; @@ -256,5 +273,12 @@ _PUBLIC_ NTSTATUS gensec_http_generic_init(TALLOC_CTX *ctx) return status; } + status = gensec_register(ctx, &gensec_http_negotiate_security_ops); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(0, ("Failed to register '%s' gensec backend!\n", + gensec_http_negotiate_security_ops.name)); + return status; + } + return status; } -- 2.11.4.GIT