Enable AES encryption of the data if a key was found in secrets.tdb.
authorHolger Hetterich <hhetter@novell.com>
Mon, 14 Dec 2009 19:43:15 +0000 (20:43 +0100)
committerJim McDonough <jmcd@samba.org>
Tue, 16 Mar 2010 13:52:09 +0000 (09:52 -0400)
source3/modules/vfs_smb_traffic_analyzer.c

index 5af230a9c20461ced440dd236df6aa32c0318304..68a4991e0f4c33a7bbec1536511918f29fc6d07b 100644 (file)
@@ -20,9 +20,9 @@
  */
 
 #include "includes.h"
+#include "../lib/crypto/crypto.h"
 
 /* abstraction for the send_over_network function */
-
 enum sock_type {INTERNET_SOCKET = 0, UNIX_DOMAIN_SOCKET};
 
 #define LOCAL_PATHNAME "/var/tmp/stadsocket"
@@ -400,8 +400,27 @@ static void smb_traffic_analyzer_send_data(vfs_handle_struct *handle,
 
        len = strlen(str);
 
-       DEBUG(10, ("smb_traffic_analyzer_send_data_socket: sending %s\n",
-                       str));
+       DEBUG(10, ("smb_traffic_analyzer_send_data_socket: going to send "
+               "%s\n", str));
+       /* If configured, optain the key and run AES encryption */
+       /* over the data.                                       */
+       size_t size;
+       char *akey = secrets_fetch("smb_traffic_analyzer_key", &size);
+       if ( akey != NULL ) {
+               char *crypted;
+               DEBUG(10, ("smb_traffic_analyzer: a key was found, encrypting "
+                       "data!"));
+               AES_KEY *key;
+               samba_AES_set_encrypt_key(akey, 128, key);
+               samba_AES_encrypt( str, crypted, key );
+               len = strlen( crypted );
+               if (write_data(rf_sock->sock, crypted, len) != len) {
+                       DEBUG(1, ("smb_traffic_analyzer_send_data_socket: "
+                               "error sending crypted data to socket!\n"));
+               free( crypted );
+               return ;
+               }
+       }
        if (write_data(rf_sock->sock, str, len) != len) {
                DEBUG(1, ("smb_traffic_analyzer_send_data_socket: "
                        "error sending data to socket!\n"));