]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
libcli/smb: move cli_session_dump_keys() to libsmb
authorRalph Boehme <slow@samba.org>
Fri, 18 Jul 2025 15:43:12 +0000 (17:43 +0200)
committerVolker Lendecke <vl@samba.org>
Tue, 22 Jul 2025 14:08:36 +0000 (14:08 +0000)
More callers to come...

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
libcli/smb/smbXcli_base.c
libcli/smb/smbXcli_base.h
source3/libsmb/cliconnect.c

index 2f21973f4a782d9267cfc90b78b888223a78f26e..7a9dd81108ca64330ac0b3f4aef4614b5f3e2f2f 100644 (file)
@@ -7599,3 +7599,55 @@ NTSTATUS smb2cli_parse_dyn_buffer(uint32_t dyn_offset,
        };
        return NT_STATUS_OK;
 }
+
+void smbXcli_session_dump_keys(TALLOC_CTX *mem_ctx,
+                              struct smbXcli_session *session,
+                              DATA_BLOB session_key)
+{
+       NTSTATUS status;
+       DATA_BLOB sig = data_blob_null;
+       DATA_BLOB app = data_blob_null;
+       DATA_BLOB enc = data_blob_null;
+       DATA_BLOB dec = data_blob_null;
+       uint64_t sid = smb2cli_session_current_id(session);
+
+       status = smb2cli_session_signing_key(session, mem_ctx, &sig);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto out;
+       }
+       status = smbXcli_session_application_key(session, mem_ctx, &app);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto out;
+       }
+       status = smb2cli_session_encryption_key(session, mem_ctx, &enc);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto out;
+       }
+       status = smb2cli_session_decryption_key(session, mem_ctx, &dec);
+       if (!NT_STATUS_IS_OK(status)) {
+               goto out;
+       }
+
+       DEBUG(0, ("debug encryption: dumping generated session keys\n"));
+       DEBUGADD(0, ("Session Id    "));
+       dump_data(0, (uint8_t*)&sid, sizeof(sid));
+       DEBUGADD(0, ("Session Key   "));
+       dump_data(0, session_key.data, session_key.length);
+       DEBUGADD(0, ("Signing Key   "));
+       dump_data(0, sig.data, sig.length);
+       DEBUGADD(0, ("App Key       "));
+       dump_data(0, app.data, app.length);
+
+       /* In client code, ServerIn is the encryption key */
+
+       DEBUGADD(0, ("ServerIn Key  "));
+       dump_data(0, enc.data, enc.length);
+       DEBUGADD(0, ("ServerOut Key "));
+       dump_data(0, dec.data, dec.length);
+
+out:
+       data_blob_clear_free(&sig);
+       data_blob_clear_free(&app);
+       data_blob_clear_free(&enc);
+       data_blob_clear_free(&dec);
+}
index 8b5db773c980ab10b353d0124202f102e93cb9a6..d13f9643313fef611a991b056cdcffbeae5e74af 100644 (file)
@@ -530,6 +530,9 @@ struct smbXcli_session *smbXcli_session_shallow_copy(TALLOC_CTX *mem_ctx,
                                               struct smbXcli_session *src);
 bool smbXcli_session_is_guest(struct smbXcli_session *session);
 bool smbXcli_session_is_authenticated(struct smbXcli_session *session);
+void smbXcli_session_dump_keys(TALLOC_CTX *mem_ctx,
+                              struct smbXcli_session *session,
+                              DATA_BLOB session_key);
 NTSTATUS smb2cli_session_signing_key(struct smbXcli_session *session,
                                     TALLOC_CTX *mem_ctx,
                                     DATA_BLOB *key);
index 82aef739d573d75f0263f816fceb2e48a4527cf7..385fbfc9d250650e1b480484fba9230fe2e61171 100644 (file)
@@ -993,58 +993,6 @@ static void cli_session_setup_gensec_remote_done(struct tevent_req *subreq)
        cli_session_setup_gensec_local_next(req);
 }
 
-static void cli_session_dump_keys(TALLOC_CTX *mem_ctx,
-                                 struct smbXcli_session *session,
-                                 DATA_BLOB session_key)
-{
-       NTSTATUS status;
-       DATA_BLOB sig = data_blob_null;
-       DATA_BLOB app = data_blob_null;
-       DATA_BLOB enc = data_blob_null;
-       DATA_BLOB dec = data_blob_null;
-       uint64_t sid = smb2cli_session_current_id(session);
-
-       status = smb2cli_session_signing_key(session, mem_ctx, &sig);
-       if (!NT_STATUS_IS_OK(status)) {
-               goto out;
-       }
-       status = smbXcli_session_application_key(session, mem_ctx, &app);
-       if (!NT_STATUS_IS_OK(status)) {
-               goto out;
-       }
-       status = smb2cli_session_encryption_key(session, mem_ctx, &enc);
-       if (!NT_STATUS_IS_OK(status)) {
-               goto out;
-       }
-       status = smb2cli_session_decryption_key(session, mem_ctx, &dec);
-       if (!NT_STATUS_IS_OK(status)) {
-               goto out;
-       }
-
-       DEBUG(0, ("debug encryption: dumping generated session keys\n"));
-       DEBUGADD(0, ("Session Id    "));
-       dump_data(0, (uint8_t*)&sid, sizeof(sid));
-       DEBUGADD(0, ("Session Key   "));
-       dump_data(0, session_key.data, session_key.length);
-       DEBUGADD(0, ("Signing Key   "));
-       dump_data(0, sig.data, sig.length);
-       DEBUGADD(0, ("App Key       "));
-       dump_data(0, app.data, app.length);
-
-       /* In client code, ServerIn is the encryption key */
-
-       DEBUGADD(0, ("ServerIn Key  "));
-       dump_data(0, enc.data, enc.length);
-       DEBUGADD(0, ("ServerOut Key "));
-       dump_data(0, dec.data, dec.length);
-
-out:
-       data_blob_clear_free(&sig);
-       data_blob_clear_free(&app);
-       data_blob_clear_free(&enc);
-       data_blob_clear_free(&dec);
-}
-
 static void cli_session_setup_gensec_ready(struct tevent_req *req)
 {
        struct cli_session_setup_gensec_state *state =
@@ -1115,7 +1063,9 @@ static void cli_session_setup_gensec_ready(struct tevent_req *req)
                if (smbXcli_conn_protocol(state->cli->conn) >= PROTOCOL_SMB3_00
                    && lp_debug_encryption())
                {
-                       cli_session_dump_keys(state, session, state->session_key);
+                       smbXcli_session_dump_keys(state,
+                                                 session,
+                                                 state->session_key);
                }
        } else {
                struct smbXcli_session *session = state->cli->smb1.session;