[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Mon Feb 27 06:27:04 MST 2012


The branch, master has been updated
       via  615c41c libcli/smb/smb2_signing: pass down 'protocol' to smb2_signing_[sign|check]_pdu()
       via  7309e11 libcli/smb/smb2_signing: rename session_key to signing_key
       via  910251e libcli/smb/smbXcli: remove unused if statement from smb2cli_conn_dispatch_incoming()
       via  b7684f2 s4:libcli/smb2: remove unused 'session_key' from struct smb2_session
       via  07b1de9 s4:librpc/dcerpc_smb2: make use of smb2cli_session_application_key()
       via  a1ef9c7 libcli/smb/smbXcli: add smb2cli_session_application_key()
       via  aa4331b libcli/smb/smbXcli: maintain smb2 channel_signing_key separate from the signing_key
       via  b93f6ac libcli/smb/smbXcli: remove unused checks from smb2cli_session_create_channel()
       via  18cd0b7 s3:torture/test_smb2: remove explicit smb2_signing_check_pdu()
       via  c45cb33 s3:torture/test_smb2: a reauth doesn't update the session/signing key
       via  229128f lib/crypto: fix hmac_sha256_final() prototype
      from  8a0e420 dbwrap: changed log level for information about lock order

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 615c41ce128233c90bc77fc413fdcdc92c1cad50
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 09:29:53 2012 +0100

    libcli/smb/smb2_signing: pass down 'protocol' to smb2_signing_[sign|check]_pdu()
    
    metze
    
    Autobuild-User: Stefan Metzmacher <metze at samba.org>
    Autobuild-Date: Mon Feb 27 14:26:32 CET 2012 on sn-devel-104

commit 7309e11ad58eb562859190ce99cb51ecbacbc540
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 09:27:51 2012 +0100

    libcli/smb/smb2_signing: rename session_key to signing_key
    
    metze

commit 910251e8ed89c3ffe769a1007ec197c9c58805b3
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 09:24:38 2012 +0100

    libcli/smb/smbXcli: remove unused if statement from smb2cli_conn_dispatch_incoming()
    
    metze

commit b7684f2ac65e308dd2f159d81d6326491c8f557a
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 09:20:20 2012 +0100

    s4:libcli/smb2: remove unused 'session_key' from struct smb2_session
    
    metze

commit 07b1de98cd50f061f410b36043efcf13210caf6b
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 09:16:28 2012 +0100

    s4:librpc/dcerpc_smb2: make use of smb2cli_session_application_key()
    
    metze

commit a1ef9c761a6ccc16d6b1193ebcb95fa4493ac1ed
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 09:03:54 2012 +0100

    libcli/smb/smbXcli: add smb2cli_session_application_key()
    
    metze

commit aa4331be9e6e3db3bd14c9abd024e95f6aec8bdb
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 08:48:55 2012 +0100

    libcli/smb/smbXcli: maintain smb2 channel_signing_key separate from the signing_key
    
    The signing_key is fix across all channels and is used for session setups
    on a channel binding.
    
    Note:
     - the last session setup response is signed with the new channel signing key.
     - the reauth session setups are signed with the channel signing key.
    
    It's also not needed to remember the main session key.
    
    metze

commit b93f6ac79c431e4effb3905824bcaef5cbe5e85a
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 09:58:53 2012 +0100

    libcli/smb/smbXcli: remove unused checks from smb2cli_session_create_channel()
    
    metze

commit 18cd0b789e5e9c4108353c4a6762f05f4db788a8
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 09:18:33 2012 +0100

    s3:torture/test_smb2: remove explicit smb2_signing_check_pdu()
    
    smb2cli_session_set_session_key() already checks the signature
    and that function really knows the signing key.
    
    metze

commit c45cb3353be7ec2ddaf38d859a24a02163e88a1b
Author: Stefan Metzmacher <metze at samba.org>
Date:   Mon Feb 27 11:52:50 2012 +0100

    s3:torture/test_smb2: a reauth doesn't update the session/signing key
    
    metze

commit 229128f7e14b215787eb8d80851e953f324b4012
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Feb 22 09:01:10 2012 +0100

    lib/crypto: fix hmac_sha256_final() prototype
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 lib/crypto/hmacsha256.h          |    2 +-
 libcli/smb/smb2_signing.c        |   16 ++--
 libcli/smb/smb2_signing.h        |    6 +-
 libcli/smb/smbXcli_base.c        |  223 ++++++++++++++++++++++++++------------
 libcli/smb/smbXcli_base.h        |   12 ++-
 libcli/smb/smb_common.h          |    2 +-
 source3/libsmb/cliconnect.c      |    4 +-
 source3/smbd/smb2_server.c       |    4 +
 source3/torture/test_smb2.c      |   43 ++------
 source4/libcli/smb2/session.c    |   12 ++-
 source4/libcli/smb2/smb2.h       |    1 -
 source4/librpc/rpc/dcerpc_smb2.c |   15 +++-
 12 files changed, 215 insertions(+), 125 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/crypto/hmacsha256.h b/lib/crypto/hmacsha256.h
index 8960c63..d9ecac7 100644
--- a/lib/crypto/hmacsha256.h
+++ b/lib/crypto/hmacsha256.h
@@ -33,6 +33,6 @@ struct HMACSHA256Context {
 
 void hmac_sha256_init(const uint8_t *key, size_t key_len, struct HMACSHA256Context *ctx);
 void hmac_sha256_update(const uint8_t *data, size_t data_len, struct HMACSHA256Context *ctx);
-void hmac_sha256_final(uint8_t digest[20], struct HMACSHA256Context *ctx);
+void hmac_sha256_final(uint8_t digest[SHA256_DIGEST_LENGTH], struct HMACSHA256Context *ctx);
 
 #endif /* _HMAC_SHA256_H */
diff --git a/libcli/smb/smb2_signing.c b/libcli/smb/smb2_signing.c
index 3687ace..3017277 100644
--- a/libcli/smb/smb2_signing.c
+++ b/libcli/smb/smb2_signing.c
@@ -23,7 +23,8 @@
 #include "../libcli/smb/smb_common.h"
 #include "../lib/crypto/crypto.h"
 
-NTSTATUS smb2_signing_sign_pdu(DATA_BLOB session_key,
+NTSTATUS smb2_signing_sign_pdu(DATA_BLOB signing_key,
+			       enum protocol_types protocol,
 			       struct iovec *vector,
 			       int count)
 {
@@ -52,9 +53,9 @@ NTSTATUS smb2_signing_sign_pdu(DATA_BLOB session_key,
 		return NT_STATUS_OK;
 	}
 
-	if (session_key.length == 0) {
+	if (signing_key.length == 0) {
 		DEBUG(2,("Wrong session key length %u for SMB2 signing\n",
-			 (unsigned)session_key.length));
+			 (unsigned)signing_key.length));
 		return NT_STATUS_ACCESS_DENIED;
 	}
 
@@ -63,7 +64,7 @@ NTSTATUS smb2_signing_sign_pdu(DATA_BLOB session_key,
 	SIVAL(hdr, SMB2_HDR_FLAGS, IVAL(hdr, SMB2_HDR_FLAGS) | SMB2_HDR_FLAG_SIGNED);
 
 	ZERO_STRUCT(m);
-	hmac_sha256_init(session_key.data, MIN(session_key.length, 16), &m);
+	hmac_sha256_init(signing_key.data, MIN(signing_key.length, 16), &m);
 	for (i=0; i < count; i++) {
 		hmac_sha256_update((const uint8_t *)vector[i].iov_base,
 				   vector[i].iov_len, &m);
@@ -76,7 +77,8 @@ NTSTATUS smb2_signing_sign_pdu(DATA_BLOB session_key,
 	return NT_STATUS_OK;
 }
 
-NTSTATUS smb2_signing_check_pdu(DATA_BLOB session_key,
+NTSTATUS smb2_signing_check_pdu(DATA_BLOB signing_key,
+				enum protocol_types protocol,
 				const struct iovec *vector,
 				int count)
 {
@@ -107,7 +109,7 @@ NTSTATUS smb2_signing_check_pdu(DATA_BLOB session_key,
 		return NT_STATUS_OK;
 	}
 
-	if (session_key.length == 0) {
+	if (signing_key.length == 0) {
 		/* we don't have the session key yet */
 		return NT_STATUS_OK;
 	}
@@ -115,7 +117,7 @@ NTSTATUS smb2_signing_check_pdu(DATA_BLOB session_key,
 	sig = hdr+SMB2_HDR_SIGNATURE;
 
 	ZERO_STRUCT(m);
-	hmac_sha256_init(session_key.data, MIN(session_key.length, 16), &m);
+	hmac_sha256_init(signing_key.data, MIN(signing_key.length, 16), &m);
 	hmac_sha256_update(hdr, SMB2_HDR_SIGNATURE, &m);
 	hmac_sha256_update(zero_sig, 16, &m);
 	for (i=1; i < count; i++) {
diff --git a/libcli/smb/smb2_signing.h b/libcli/smb/smb2_signing.h
index 3c3e0c2..ba2b1ca 100644
--- a/libcli/smb/smb2_signing.h
+++ b/libcli/smb/smb2_signing.h
@@ -23,11 +23,13 @@
 
 struct iovec;
 
-NTSTATUS smb2_signing_sign_pdu(DATA_BLOB session_key,
+NTSTATUS smb2_signing_sign_pdu(DATA_BLOB signing_key,
+			       enum protocol_types protocol,
 			       struct iovec *vector,
 			       int count);
 
-NTSTATUS smb2_signing_check_pdu(DATA_BLOB session_key,
+NTSTATUS smb2_signing_check_pdu(DATA_BLOB signing_key,
+				enum protocol_types protocol,
 				const struct iovec *vector,
 				int count);
 
diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c
index df01457..f47659d 100644
--- a/libcli/smb/smbXcli_base.c
+++ b/libcli/smb/smbXcli_base.c
@@ -133,10 +133,10 @@ struct smbXcli_session {
 	struct {
 		uint64_t session_id;
 		uint16_t session_flags;
+		DATA_BLOB application_key;
 		DATA_BLOB signing_key;
-		DATA_BLOB session_key;
 		bool should_sign;
-		bool channel_setup;
+		DATA_BLOB channel_signing_key;
 	} smb2;
 };
 
@@ -2495,7 +2495,7 @@ NTSTATUS smb2cli_req_compound_submit(struct tevent_req **reqs,
 		uint16_t charge;
 		uint16_t credits;
 		uint64_t mid;
-		bool should_sign = false;
+		const DATA_BLOB *signing_key = NULL;
 
 		if (!tevent_req_is_in_progress(reqs[i])) {
 			return NT_STATUS_INTERNAL_ERROR;
@@ -2587,16 +2587,43 @@ skip_credits:
 		nbt_len += reqlen;
 
 		if (state->session) {
-			should_sign = state->session->smb2.should_sign;
-			if (state->session->smb2.channel_setup) {
+			bool should_sign = state->session->smb2.should_sign;
+
+			if (opcode == SMB2_OP_SESSSETUP &&
+			    state->session->smb2.signing_key.length != 0) {
 				should_sign = true;
 			}
+
+			/*
+			 * We prefer the channel signing key if it is
+			 * already there.
+			 */
+			if (should_sign) {
+				signing_key = &state->session->smb2.channel_signing_key;
+			}
+
+			/*
+			 * If it is a channel binding, we already have the main
+			 * signing key and try that one.
+			 */
+			if (signing_key && signing_key->length == 0) {
+				signing_key = &state->session->smb2.signing_key;
+			}
+
+			/*
+			 * If we do not have any session key yet, we skip the
+			 * signing of SMB2_OP_SESSSETUP requests.
+			 */
+			if (signing_key && signing_key->length == 0) {
+				signing_key = NULL;
+			}
 		}
 
-		if (should_sign) {
+		if (signing_key) {
 			NTSTATUS status;
 
-			status = smb2_signing_sign_pdu(state->session->smb2.signing_key,
+			status = smb2_signing_sign_pdu(*signing_key,
+						       state->session->conn->protocol,
 						       &iov[hdr_iov], num_iov - hdr_iov);
 			if (!NT_STATUS_IS_OK(status)) {
 				return status;
@@ -2900,7 +2927,8 @@ static NTSTATUS smb2cli_conn_dispatch_incoming(struct smbXcli_conn *conn,
 
 		if (session) {
 			should_sign = session->smb2.should_sign;
-			if (session->smb2.channel_setup) {
+			if (opcode == SMB2_OP_SESSSETUP &&
+			    session->smb2.signing_key.length != 0) {
 				should_sign = true;
 			}
 		}
@@ -2933,17 +2961,39 @@ static NTSTATUS smb2cli_conn_dispatch_incoming(struct smbXcli_conn *conn,
 			}
 
 			last_session = session;
-			signing_key = &session->smb2.signing_key;
+			signing_key = &session->smb2.channel_signing_key;
 		}
 
-		if ((opcode == SMB2_OP_SESSSETUP) &&
-		     NT_STATUS_IS_OK(status)) {
+		if (opcode == SMB2_OP_SESSSETUP) {
 			/*
-			 * the caller has to check the signing
-			 * as only the caller knows the correct
-			 * session key
+			 * We prefer the channel signing key, if it is
+			 * already there.
+			 *
+			 * If we do not have a channel signing key yet,
+			 * we try the main signing key, if it is not
+			 * the final response.
 			 */
-			signing_key = NULL;
+			if (signing_key && signing_key->length == 0 &&
+			    !NT_STATUS_IS_OK(status)) {
+				signing_key = &session->smb2.signing_key;
+			}
+
+			if (signing_key && signing_key->length == 0) {
+				/*
+				 * If we do not have a session key to
+				 * verify the signature, we defer the
+				 * signing check to the caller.
+				 *
+				 * The caller gets NT_STATUS_OK, it
+				 * has to call
+				 * smb2cli_session_set_session_key()
+				 * or
+				 * smb2cli_session_set_channel_key()
+				 * which will check the signature
+				 * with the channel signing key.
+				 */
+				signing_key = NULL;
+			}
 		}
 
 		if (NT_STATUS_EQUAL(status, NT_STATUS_USER_SESSION_DELETED)) {
@@ -2953,9 +3003,7 @@ static NTSTATUS smb2cli_conn_dispatch_incoming(struct smbXcli_conn *conn,
 			 * propagate the NT_STATUS_USER_SESSION_DELETED
 			 * status to the caller.
 			 */
-			if (signing_key) {
-				signing_key = NULL;
-			}
+			signing_key = NULL;
 		}
 
 		if (NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_NAME_DELETED) ||
@@ -2999,7 +3047,9 @@ static NTSTATUS smb2cli_conn_dispatch_incoming(struct smbXcli_conn *conn,
 		}
 
 		if (signing_key) {
-			status = smb2_signing_check_pdu(*signing_key, cur, 3);
+			status = smb2_signing_check_pdu(*signing_key,
+							state->conn->protocol,
+							cur, 3);
 			if (!NT_STATUS_IS_OK(status)) {
 				/*
 				 * If the signing check fails, we disconnect
@@ -4025,6 +4075,24 @@ uint64_t smb2cli_session_current_id(struct smbXcli_session *session)
 	return session->smb2.session_id;
 }
 
+NTSTATUS smb2cli_session_application_key(struct smbXcli_session *session,
+					 TALLOC_CTX *mem_ctx,
+					 DATA_BLOB *key)
+{
+	*key = data_blob_null;
+
+	if (session->smb2.application_key.length == 0) {
+		return NT_STATUS_NO_USER_SESSION_KEY;
+	}
+
+	*key = data_blob_dup_talloc(mem_ctx, session->smb2.application_key);
+	if (key->data == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	return NT_STATUS_OK;
+}
+
 void smb2cli_session_set_id_and_flags(struct smbXcli_session *session,
 				      uint64_t session_id,
 				      uint16_t session_flags)
@@ -4033,19 +4101,23 @@ void smb2cli_session_set_id_and_flags(struct smbXcli_session *session,
 	session->smb2.session_flags = session_flags;
 }
 
-NTSTATUS smb2cli_session_update_session_key(struct smbXcli_session *session,
-					    const DATA_BLOB session_key,
-					    const struct iovec *recv_iov)
+NTSTATUS smb2cli_session_set_session_key(struct smbXcli_session *session,
+					 const DATA_BLOB _session_key,
+					 const struct iovec *recv_iov)
 {
 	struct smbXcli_conn *conn = session->conn;
 	uint16_t no_sign_flags;
-	DATA_BLOB signing_key;
+	uint8_t session_key[16];
 	NTSTATUS status;
 
 	if (conn == NULL) {
 		return NT_STATUS_INVALID_PARAMETER_MIX;
 	}
 
+	if (session->smb2.signing_key.length != 0) {
+		return NT_STATUS_INVALID_PARAMETER_MIX;
+	}
+
 	no_sign_flags = SMB2_SESSION_FLAG_IS_GUEST | SMB2_SESSION_FLAG_IS_NULL;
 
 	if (session->smb2.session_flags & no_sign_flags) {
@@ -4053,40 +4125,35 @@ NTSTATUS smb2cli_session_update_session_key(struct smbXcli_session *session,
 		return NT_STATUS_OK;
 	}
 
-	if (session->smb2.signing_key.length > 0) {
-		signing_key = session->smb2.signing_key;
-	} else {
-		signing_key = session_key;
-	}
-	if (session->smb2.channel_setup) {
-		signing_key = session_key;
-	}
+	ZERO_STRUCT(session_key);
+	memcpy(session_key, _session_key.data,
+	       MIN(_session_key.length, sizeof(session_key)));
 
-	status = smb2_signing_check_pdu(signing_key, recv_iov, 3);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
-
-	if (!session->smb2.channel_setup) {
-		session->smb2.session_key = data_blob_dup_talloc(session,
-								 session_key);
-		if (session->smb2.session_key.data == NULL) {
-			return NT_STATUS_NO_MEMORY;
-		}
+	session->smb2.signing_key = data_blob_talloc(session,
+						     session_key,
+						     sizeof(session_key));
+	ZERO_STRUCT(session_key);
+	if (session->smb2.signing_key.data == NULL) {
+		return NT_STATUS_NO_MEMORY;
 	}
 
-	if (session->smb2.channel_setup) {
-		data_blob_free(&session->smb2.signing_key);
-		session->smb2.channel_setup = false;
+	session->smb2.application_key = data_blob_dup_talloc(session,
+						session->smb2.signing_key);
+	if (session->smb2.application_key.data == NULL) {
+		return NT_STATUS_NO_MEMORY;
 	}
 
-	if (session->smb2.signing_key.length > 0) {
-		return NT_STATUS_OK;
+	session->smb2.channel_signing_key = data_blob_dup_talloc(session,
+						session->smb2.signing_key);
+	if (session->smb2.channel_signing_key.data == NULL) {
+		return NT_STATUS_NO_MEMORY;
 	}
 
-	session->smb2.signing_key = data_blob_dup_talloc(session, signing_key);
-	if (session->smb2.signing_key.data == NULL) {
-		return NT_STATUS_NO_MEMORY;
+	status = smb2_signing_check_pdu(session->smb2.channel_signing_key,
+					session->conn->protocol,
+					recv_iov, 3);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
 	}
 
 	session->smb2.should_sign = false;
@@ -4108,17 +4175,6 @@ NTSTATUS smb2cli_session_create_channel(TALLOC_CTX *mem_ctx,
 					struct smbXcli_session **_session2)
 {
 	struct smbXcli_session *session2;
-	uint16_t no_sign_flags;
-
-	no_sign_flags = SMB2_SESSION_FLAG_IS_GUEST | SMB2_SESSION_FLAG_IS_NULL;
-
-	if (session1->smb2.session_flags & no_sign_flags) {
-		return NT_STATUS_INVALID_PARAMETER_MIX;
-	}
-
-	if (session1->smb2.session_key.length == 0) {
-		return NT_STATUS_INVALID_PARAMETER_MIX;
-	}
 
 	if (session1->smb2.signing_key.length == 0) {
 		return NT_STATUS_INVALID_PARAMETER_MIX;
@@ -4135,12 +4191,6 @@ NTSTATUS smb2cli_session_create_channel(TALLOC_CTX *mem_ctx,
 	session2->smb2.session_id = session1->smb2.session_id;
 	session2->smb2.session_flags = session1->smb2.session_flags;
 
-	session2->smb2.session_key = data_blob_dup_talloc(session2,
-						session1->smb2.session_key);
-	if (session2->smb2.session_key.data == NULL) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
 	session2->smb2.signing_key = data_blob_dup_talloc(session2,
 						session1->smb2.signing_key);
 	if (session2->smb2.signing_key.data == NULL) {
@@ -4148,7 +4198,6 @@ NTSTATUS smb2cli_session_create_channel(TALLOC_CTX *mem_ctx,
 	}
 
 	session2->smb2.should_sign = session1->smb2.should_sign;
-	session2->smb2.channel_setup = true;
 
 	talloc_set_destructor(session2, smbXcli_session_destructor);
 	DLIST_ADD_END(conn->sessions, session2, struct smbXcli_session *);
@@ -4157,3 +4206,41 @@ NTSTATUS smb2cli_session_create_channel(TALLOC_CTX *mem_ctx,
 	*_session2 = session2;
 	return NT_STATUS_OK;
 }
+
+NTSTATUS smb2cli_session_set_channel_key(struct smbXcli_session *session,
+					 const DATA_BLOB _channel_key,
+					 const struct iovec *recv_iov)
+{
+	struct smbXcli_conn *conn = session->conn;
+	uint8_t channel_key[16];
+	NTSTATUS status;
+
+	if (conn == NULL) {
+		return NT_STATUS_INVALID_PARAMETER_MIX;
+	}
+
+	if (session->smb2.channel_signing_key.length != 0) {
+		return NT_STATUS_INVALID_PARAMETER_MIX;
+	}
+
+	ZERO_STRUCT(channel_key);
+	memcpy(channel_key, _channel_key.data,
+	       MIN(_channel_key.length, sizeof(channel_key)));
+
+	session->smb2.channel_signing_key = data_blob_talloc(session,
+						channel_key,
+						sizeof(channel_key));
+	ZERO_STRUCT(channel_key);
+	if (session->smb2.channel_signing_key.data == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
+
+	status = smb2_signing_check_pdu(session->smb2.channel_signing_key,
+					session->conn->protocol,
+					recv_iov, 3);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	return NT_STATUS_OK;
+}
diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h
index a2b64b1..27f3425 100644
--- a/libcli/smb/smbXcli_base.h
+++ b/libcli/smb/smbXcli_base.h
@@ -246,15 +246,21 @@ struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx,
 					       struct smbXcli_conn *conn);
 uint8_t smb2cli_session_security_mode(struct smbXcli_session *session);
 uint64_t smb2cli_session_current_id(struct smbXcli_session *session);
+NTSTATUS smb2cli_session_application_key(struct smbXcli_session *session,
+					 TALLOC_CTX *mem_ctx,
+					 DATA_BLOB *key);
 void smb2cli_session_set_id_and_flags(struct smbXcli_session *session,
 				      uint64_t session_id,
 				      uint16_t session_flags);
-NTSTATUS smb2cli_session_update_session_key(struct smbXcli_session *session,
-					    const DATA_BLOB session_key,
-					    const struct iovec *recv_iov);
+NTSTATUS smb2cli_session_set_session_key(struct smbXcli_session *session,
+					 const DATA_BLOB session_key,
+					 const struct iovec *recv_iov);
 NTSTATUS smb2cli_session_create_channel(TALLOC_CTX *mem_ctx,
 					struct smbXcli_session *session1,
 					struct smbXcli_conn *conn,
 					struct smbXcli_session **_session2);
+NTSTATUS smb2cli_session_set_channel_key(struct smbXcli_session *session,
+					 const DATA_BLOB channel_key,
+					 const struct iovec *recv_iov);
 
 #endif /* _SMBXCLI_BASE_H_ */
diff --git a/libcli/smb/smb_common.h b/libcli/smb/smb_common.h
index 1f21e55..47a336a 100644
--- a/libcli/smb/smb_common.h
+++ b/libcli/smb/smb_common.h
@@ -22,10 +22,10 @@
 #ifndef __LIBCLI_SMB_SMB_COMMON_H__
 #define __LIBCLI_SMB_SMB_COMMON_H__
 
+#include "libcli/smb/smb_constants.h"
 #include "libcli/smb/smb2_constants.h"
 #include "libcli/smb/smb2_create_blob.h"
 #include "libcli/smb/smb2_signing.h"
-#include "libcli/smb/smb_constants.h"
 #include "libcli/smb/smb_util.h"
 #include "libcli/smb/smb_unix_ext.h"
 
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index 146fc3d..79b9496 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -1519,7 +1519,7 @@ static void cli_session_setup_kerberos_done(struct tevent_req *subreq)
 
 	if (cli_state_protocol(state->cli) >= PROTOCOL_SMB2_02) {
 		struct smbXcli_session *session = state->cli->smb2.session;
-		status = smb2cli_session_update_session_key(session,
+		status = smb2cli_session_set_session_key(session,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list