From bccac81d8792f85ae37d4a6617a92e2fae75aa50 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 14 Jun 2004 08:12:50 +0000 Subject: 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) --- source4/rpc_server/dcesrv_crypto_ntlmssp.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'source4/rpc_server/dcesrv_crypto_ntlmssp.c') 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 @@ -108,6 +108,21 @@ static NTSTATUS dcesrv_crypto_ntlmssp_unseal(struct dcesrv_auth *auth, TALLOC_CT return ntlmssp_unseal_packet(auth_ntlmssp_state->ntlmssp_state, sig_mem_ctx, data, length, sig); } +/* + 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 */ @@ -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 }; -- cgit