#include "includes.h"
#include "rpc_server/dcesrv_ntlmssp.h"
-#include "../auth/ntlmssp/ntlmssp.h"
#include "ntlmssp_wrap.h"
#include "auth.h"
#include "auth/gensec/gensec.h"
-NTSTATUS ntlmssp_server_auth_start(TALLOC_CTX *mem_ctx,
+NTSTATUS auth_generic_server_start(TALLOC_CTX *mem_ctx,
+ const char *oid,
bool do_sign,
bool do_seal,
bool is_dcerpc,
const struct tsocket_address *remote_address,
struct gensec_security **ctx)
{
- struct auth_ntlmssp_state *a = NULL;
+ struct auth_generic_state *a = NULL;
NTSTATUS status;
- status = auth_ntlmssp_prepare(remote_address, &a);
+ status = auth_generic_prepare(remote_address, &a);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, (__location__ ": auth_ntlmssp_prepare failed: %s\n",
+ DEBUG(0, (__location__ ": auth_generic_prepare failed: %s\n",
nt_errstr(status)));
return status;
}
gensec_want_feature(a->gensec_security, GENSEC_FEATURE_SIGN);
}
if (do_seal) {
- /* Always implies both sign and seal for ntlmssp */
+ gensec_want_feature(a->gensec_security, GENSEC_FEATURE_SIGN);
gensec_want_feature(a->gensec_security, GENSEC_FEATURE_SEAL);
}
- status = auth_ntlmssp_start(a);
+ if (is_dcerpc) {
+ gensec_want_feature(a->gensec_security, GENSEC_FEATURE_DCE_STYLE);
+ }
+
+ status = auth_generic_start(a, oid);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(0, (__location__ ": auth_ntlmssp_start failed: %s\n",
+ DEBUG(0, (__location__ ": auth_generic_start failed: %s\n",
nt_errstr(status)));
return status;
}