r100: remember the user session key during session setup so it can be used in various...
authorAndrew Tridgell <tridge@samba.org>
Wed, 7 Apr 2004 07:18:37 +0000 (07:18 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:51:06 +0000 (12:51 -0500)
routines
(This used to be commit f6cf9020c8899e784385ea0e14fa465685441ee6)

source4/include/cli_context.h
source4/libcli/raw/clisession.c
source4/libcli/raw/clitransport.c

index bffb6c9f6a53dbb61c7ed8c3232bda9e17bc5d79..0e817c3cb0704e48c5bd4b47850c0a882f669d73 100644 (file)
@@ -66,6 +66,10 @@ struct cli_negotiate {
        unsigned int writebraw_supported:1;
 
        const char *server_domain;
+
+       /* remember the session key for data encryption in various sub-protocols
+          such as LSA */
+       uint8 user_session_key[16];
 };
        
 /* this is the context for a SMB socket associated with the socket itself */
index c5d4888089cbef828eb2e146e2bf1b72bb0efcf7..1c0af77d11dddea5e79f0fc7860111b7c76ef95a 100644 (file)
@@ -247,6 +247,8 @@ static void setup_nt1_signing(struct cli_transport *transport, const char *passw
        SMBsesskeygen_ntv1(nt_hash, NULL, session_key);
        nt_response = nt_blob(password, transport->negotiate.secblob);
 
+       cli_transport_set_session_key(transport, session_key);
+
        cli_transport_simple_set_signing(transport, session_key, nt_response);
 }
 
index 2d614cc3bdfded5d9f03f9f5ec28651997f6ecdc..62152bbe4d96d6620709761ac465752959c3c140 100644 (file)
@@ -222,3 +222,12 @@ BOOL cli_transport_select(struct cli_transport *transport)
 
        return True;
 }
+
+/*
+  store the user session key for a transport
+*/
+void cli_transport_set_session_key(struct cli_transport *transport,
+                                  const uint8 session_key[16])
+{
+       memcpy(transport->negotiate.user_session_key, session_key, 16);
+}