summaryrefslogtreecommitdiff
path: root/source4/rpc_server/netlogon
diff options
context:
space:
mode:
Diffstat (limited to 'source4/rpc_server/netlogon')
-rw-r--r--source4/rpc_server/netlogon/dcerpc_netlogon.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/source4/rpc_server/netlogon/dcerpc_netlogon.c b/source4/rpc_server/netlogon/dcerpc_netlogon.c
index 03d325020f..176246901b 100644
--- a/source4/rpc_server/netlogon/dcerpc_netlogon.c
+++ b/source4/rpc_server/netlogon/dcerpc_netlogon.c
@@ -31,7 +31,13 @@
struct server_pipe_state {
struct netr_Credential client_challenge;
struct netr_Credential server_challenge;
- struct creds_CredentialState *creds;
+
+ /* This is a bit (dangeroursly?) tricky:
+ - The session key, computer name and domain elements are
+ valid.
+ - However the credentials chaining (seed, client, server etc)
+ should be obtained from the database at runtime */
+ struct creds_CredentialState *creds;
};
@@ -286,7 +292,16 @@ static NTSTATUS netr_ServerAuthenticate2(struct dcesrv_call_state *dce_call, TAL
return netr_ServerAuthenticate3(dce_call, mem_ctx, &r3);
}
+/*
+ Validate an incoming authenticator against the credentials for the remote machine.
+
+ The credentials are (re)read and from the schannel database, and
+ written back after the caclulations are performed.
+
+ The creds_out parameter (if not NULL) returns the credentials, if
+ the caller needs some of that information.
+*/
static NTSTATUS netr_creds_server_step_check(struct server_pipe_state *pipe_state,
TALLOC_CTX *mem_ctx,
struct netr_Authenticator *received_authenticator,