s4:rpc_server: add dcesrv_{auth,transport}_session_key() functions
authorStefan Metzmacher <metze@samba.org>
Thu, 8 Nov 2018 10:48:46 +0000 (11:48 +0100)
committerJeremy Allison <jra@samba.org>
Sat, 12 Jan 2019 02:13:33 +0000 (03:13 +0100)
They take struct dcesrv_call_state as argument and will replace
dcesrv_{inherited,fetch}_session_key() which take dcesrv_connection
as argument.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=7113
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11892

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source4/rpc_server/dcerpc_server.c
source4/rpc_server/dcerpc_server.h

index aafb9a2..fca6229 100644 (file)
@@ -469,6 +469,18 @@ NTSTATUS dcesrv_inherited_session_key(struct dcesrv_connection *p,
        return NT_STATUS_NO_USER_SESSION_KEY;
 }
 
+/*
+ * Fetch the authentication session key if available.
+ *
+ * This is the key generated by a gensec authentication.
+ *
+ */
+_PUBLIC_ NTSTATUS dcesrv_auth_session_key(struct dcesrv_call_state *call,
+                                         DATA_BLOB *session_key)
+{
+       return dcesrv_inherited_session_key(call->conn, session_key);
+}
+
 /*
   fetch the user session key - may be default (above) or the SMB session key
 
@@ -487,6 +499,19 @@ _PUBLIC_ NTSTATUS dcesrv_fetch_session_key(struct dcesrv_connection *p,
        return NT_STATUS_OK;
 }
 
+/*
+ * Fetch the transport session key if available.
+ * Typically this is the SMB session key
+ * or a fixed key for local transports.
+ *
+ * The key is always truncated to 16 bytes.
+*/
+_PUBLIC_ NTSTATUS dcesrv_transport_session_key(struct dcesrv_call_state *call,
+                                              DATA_BLOB *session_key)
+{
+       return dcesrv_fetch_session_key(call->conn, session_key);
+}
+
 /*
   connect to a dcerpc endpoint
 */
index 84a3474..689371f 100644 (file)
@@ -449,6 +449,24 @@ const struct tsocket_address *dcesrv_connection_get_remote_address(struct dcesrv
 
 NTSTATUS dcesrv_fetch_session_key(struct dcesrv_connection *p, DATA_BLOB *session_key);
 
+/*
+ * Fetch the authentication session key if available.
+ *
+ * This is the key generated by a gensec authentication.
+ */
+NTSTATUS dcesrv_auth_session_key(struct dcesrv_call_state *call,
+                                DATA_BLOB *session_key);
+
+/*
+ * Fetch the transport session key if available.
+ * Typically this is the SMB session key
+ * or a fixed key for local transports.
+ *
+ * The key is always truncated to 16 bytes.
+*/
+NTSTATUS dcesrv_transport_session_key(struct dcesrv_call_state *call,
+                                     DATA_BLOB *session_key);
+
 /* a useful macro for generating a RPC fault in the backend code */
 #define DCESRV_FAULT(code) do { \
        dce_call->fault_code = code; \