]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4/libcli/smb2: dump encryption keys if enabled
authorRalph Boehme <slow@samba.org>
Fri, 18 Jul 2025 17:28:44 +0000 (19:28 +0200)
committerVolker Lendecke <vl@samba.org>
Tue, 22 Jul 2025 14:08:36 +0000 (14:08 +0000)
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source4/libcli/smb2/session.c

index 3b31bf0b5d164cc71165c41be92c9d08b0f8d483..5038aeb4d912c84f42013f276f4c329c5b60be73 100644 (file)
@@ -433,6 +433,43 @@ static void smb2_session_setup_spnego_both_ready(struct tevent_req *req)
                if (tevent_req_nterror(req, status)) {
                        return;
                }
+               if ((smbXcli_conn_protocol(session->transport->conn)
+                    >= PROTOCOL_SMB3_00) &&
+                   session->debug_encryption)
+               {
+                       DATA_BLOB sig, app, enc, dec;
+
+                       status = smb2cli_session_signing_key(
+                               session->smbXcli, state, &sig);
+                       if (tevent_req_nterror(req, status)) {
+                               return;
+                       }
+                       status = smbXcli_session_application_key(
+                               session->smbXcli, state, &app);
+                       if (tevent_req_nterror(req, status)) {
+                               return;
+                       }
+                       status = smb2cli_session_encryption_key(
+                               session->smbXcli, state, &enc);
+                       if (tevent_req_nterror(req, status)) {
+                               return;
+                       }
+                       status = smb2cli_session_decryption_key(
+                               session->smbXcli, state, &dec);
+                       if (tevent_req_nterror(req, status)) {
+                               return;
+                       }
+
+                       smbXcli_session_dump_keys(
+                               smb2cli_session_current_id(session->smbXcli),
+                               &session_key,
+                               smb2cli_conn_server_signing_algo(
+                                       session->transport->conn),
+                               &sig,
+                               &app,
+                               &enc,
+                               &dec);
+               }
        }
        tevent_req_done(req);
        return;