s3-librpc: Rename spnego_ntlmssp_init_client and make generic
authorAndrew Bartlett <abartlet@samba.org>
Mon, 2 Jan 2012 03:29:51 +0000 (14:29 +1100)
committerStefan Metzmacher <metze@samba.org>
Wed, 11 Jan 2012 08:05:01 +0000 (09:05 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
source3/librpc/crypto/cli_spnego.c
source3/librpc/crypto/spnego.h
source3/rpc_client/cli_pipe.c

index 54ea99b8e85aade117079c452fffb76730429355..f64a537e202ee06d76a565882303f9c190be9e13 100644 (file)
@@ -84,7 +84,8 @@ NTSTATUS spnego_gssapi_init_client(TALLOC_CTX *mem_ctx,
        return NT_STATUS_OK;
 }
 
-NTSTATUS spnego_ntlmssp_init_client(TALLOC_CTX *mem_ctx,
+NTSTATUS spnego_generic_init_client(TALLOC_CTX *mem_ctx,
+                                   const char *oid,
                                    bool do_sign, bool do_seal,
                                    bool is_dcerpc,
                                    const char *domain,
@@ -100,7 +101,11 @@ NTSTATUS spnego_ntlmssp_init_client(TALLOC_CTX *mem_ctx,
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
-       sp_ctx->mech = SPNEGO_NTLMSSP;
+       if (strcmp(oid, GENSEC_OID_NTLMSSP) == 0) {
+               sp_ctx->mech = SPNEGO_NTLMSSP;
+       } else {
+               return NT_STATUS_INVALID_PARAMETER;
+       }
 
        status = auth_generic_client_prepare(sp_ctx,
                                        &auth_generic_state);
@@ -138,7 +143,12 @@ NTSTATUS spnego_ntlmssp_init_client(TALLOC_CTX *mem_ctx,
                                          GENSEC_FEATURE_SEAL);
        }
 
-       status = auth_generic_client_start(auth_generic_state, GENSEC_OID_NTLMSSP);
+       if (is_dcerpc) {
+               gensec_want_feature(auth_generic_state->gensec_security,
+                                   GENSEC_FEATURE_DCE_STYLE);
+       }
+
+       status = auth_generic_client_start(auth_generic_state, oid);
        if (!NT_STATUS_IS_OK(status)) {
                TALLOC_FREE(sp_ctx);
                return status;
index 2605169bb0f49062be4a0b916cadb738a3436569..7e0f1590ab68824f186ceb8916e8ba313d90b344 100644 (file)
@@ -61,7 +61,8 @@ NTSTATUS spnego_gssapi_init_client(TALLOC_CTX *mem_ctx,
                                   const char *username,
                                   const char *password,
                                   struct spnego_context **spengo_ctx);
-NTSTATUS spnego_ntlmssp_init_client(TALLOC_CTX *mem_ctx,
+NTSTATUS spnego_generic_init_client(TALLOC_CTX *mem_ctx,
+                                   const char *oid,
                                    bool do_sign, bool do_seal,
                                    bool is_dcerpc,
                                    const char *domain,
index a87cb6d5ee62522c0110c18c1c8596778479853e..49053c980ecfb5c0a760a2be11e29af1a8218e9b 100644 (file)
@@ -3175,7 +3175,8 @@ NTSTATUS cli_rpc_pipe_open_spnego_ntlmssp(struct cli_state *cli,
                goto err_out;
        }
 
-       status = spnego_ntlmssp_init_client(auth,
+       status = spnego_generic_init_client(auth,
+                                           GENSEC_OID_NTLMSSP,
                                            (auth->auth_level ==
                                                DCERPC_AUTH_LEVEL_INTEGRITY),
                                            (auth->auth_level ==