summaryrefslogtreecommitdiff
path: root/source4/rpc_server/dcesrv_crypto_ntlmssp.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-06-14 08:12:50 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:56:39 -0500
commitbccac81d8792f85ae37d4a6617a92e2fae75aa50 (patch)
treef0c16dd01073e4c7276a23b0b7a666b33e055053 /source4/rpc_server/dcesrv_crypto_ntlmssp.c
parent2fcf85920deb2bb3e564c7be611b2cec838afbf1 (diff)
downloadsamba-bccac81d8792f85ae37d4a6617a92e2fae75aa50.tar.gz
samba-bccac81d8792f85ae37d4a6617a92e2fae75aa50.tar.bz2
samba-bccac81d8792f85ae37d4a6617a92e2fae75aa50.zip
r1136: - added IDL for netr_LogonGetDomainInfo()
- added workstation to auth_session_info in rpc servers - added session key fetch hook in crypto backends in dcesrv - store and fetch seed as well as a session key in schannel ldb - when a client uses schannel to setup a netlogon pipe connection we also need to setup the credentials from the schannel negotiation so credentials chaining works - added server side netr_LogonGetDomainInfo() call (This used to be commit a35459387de3b6a422c5af6f658338fc7e4314b0)
Diffstat (limited to 'source4/rpc_server/dcesrv_crypto_ntlmssp.c')
-rw-r--r--source4/rpc_server/dcesrv_crypto_ntlmssp.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/source4/rpc_server/dcesrv_crypto_ntlmssp.c b/source4/rpc_server/dcesrv_crypto_ntlmssp.c
index 67242c3cc0..35029a0fee 100644
--- a/source4/rpc_server/dcesrv_crypto_ntlmssp.c
+++ b/source4/rpc_server/dcesrv_crypto_ntlmssp.c
@@ -109,6 +109,21 @@ static NTSTATUS dcesrv_crypto_ntlmssp_unseal(struct dcesrv_auth *auth, TALLOC_CT
}
/*
+ get the session key
+*/
+static NTSTATUS dcesrv_crypto_ntlmssp_session_key(struct dcesrv_auth *auth, uint8_t session_key[16])
+{
+ struct auth_ntlmssp_state *auth_ntlmssp_state = auth->crypto_ctx.private_data;
+
+ if (auth_ntlmssp_state->ntlmssp_state->session_key.length != 16) {
+ return NT_STATUS_NO_USER_SESSION_KEY;
+ }
+ memcpy(session_key, auth_ntlmssp_state->ntlmssp_state->session_key.data, 16);
+
+ return NT_STATUS_OK;
+}
+
+/*
end crypto state
*/
static void dcesrv_crypto_ntlmssp_end(struct dcesrv_auth *auth)
@@ -131,6 +146,7 @@ static const struct dcesrv_crypto_ops dcesrv_crypto_ntlmssp_ops = {
.sign = dcesrv_crypto_ntlmssp_sign,
.check_sig = dcesrv_crypto_ntlmssp_check_sig,
.unseal = dcesrv_crypto_ntlmssp_unseal,
+ .session_key = dcesrv_crypto_ntlmssp_session_key,
.end = dcesrv_crypto_ntlmssp_end
};