diff --git a/client/bin/site_crash_test.py b/client/bin/site_crash_test.py
index df6ae36..6932821 100644
--- a/client/bin/site_crash_test.py
+++ b/client/bin/site_crash_test.py
@@ -149,6 +149,7 @@
             report_kind: kind of report sent (minidump vs kernel)
             send_attempt: did the script attempt to send a crash.
             send_success: if it attempted, was the crash send successful.
+            sig: signature of the report, if given.
             sleep_time: if it attempted, how long did it sleep before
               sending (if mocked, how long would it have slept)
         """
@@ -175,6 +176,11 @@
             exec_name = exec_name_match.group(1)
         else:
             exec_name = None
+        sig_match = re.search('Sig: (\S+)', output)
+        if sig_match:
+            sig = sig_match.group(1)
+        else:
+            sig = None
         send_success = 'Mocking successful send' in output
         return {'exec_name': exec_name,
                 'report_kind': report_kind,
@@ -182,6 +188,7 @@
                 'report_payload': report_payload,
                 'send_attempt': send_attempt,
                 'send_success': send_success,
+                'sig': sig,
                 'sleep_time': sleep_time,
                 'output': output}
 
diff --git a/client/site_tests/logging_KernelCrash/logging_KernelCrash.py b/client/site_tests/logging_KernelCrash/logging_KernelCrash.py
index c0b5f7d..1e78819 100644
--- a/client/site_tests/logging_KernelCrash/logging_KernelCrash.py
+++ b/client/site_tests/logging_KernelCrash/logging_KernelCrash.py
@@ -21,32 +21,52 @@
             if not self._log_reader.can_find(
                 'Kernel does not support crash dumping'):
                 raise error.TestFail(
-                    'Could not find kernel crash found message')
+                    'Could not find kernel crash enabling message')
 
 
     def _get_kcrash_name(self):
-        filename_match = re.search(
-            r'Collected kernel crash diagnostics into (\S+)',
+        filename_match = re.search(r'Stored kcrash to (\S+)',
             self._log_reader.get_logs())
         if not filename_match:
             return None
         return filename_match.group(1)
 
 
+    def _is_signature_match(self, signature):
+        return (re.match(r'kernel-write_breakme-[0-9A-F]{8}$', signature) is
+                not None)
+
+
     def _test_reporter_kcrash_storage(self):
         """Test that crash_reporter has properly stored the kcrash report."""
         if not self._log_reader.can_find('Cleared kernel crash diagnostics'):
             raise error.TestFail('Could not find clearing message')
 
+        announce_match = re.search(
+            r'Received .* from kernel \(signature ([^\)]+)\) \(([^\)]+)\)',
+            self._log_reader.get_logs())
+
+        if not announce_match:
+            raise error.TestFail('Could not find kernel crash announcement')
+
+        if not self._is_signature_match(announce_match.group(1)):
+            raise error.TestFail(
+                'Kernel crash signature (%s) did not match expected pattern' %
+                announce_match.group(1))
+
         kcrash_report = self._get_kcrash_name()
 
         if self._consent:
             if kcrash_report is None:
                 raise error.TestFail(
                     'Could not find message with kcrash filename')
+            if announce_match.group(2) != 'handling':
+                raise error.TestFail('Did not announce handling of kcrash')
         else:
             if kcrash_report is not None:
                 raise error.TestFail('Should not have found kcrash filename')
+            if announce_match.group(2) != 'ignoring':
+                raise error.TestFail('Did not announce ignoring of kcrash')
             return
 
         if not os.path.exists(kcrash_report):
@@ -78,6 +98,8 @@
             raise error.TestFail('kcrash exec name or report kind wrong')
         if result['report_payload'] != kcrash_report:
             raise error.TestFail('Sent the wrong kcrash report')
+        if not self._is_signature_match(result['sig']):
+            raise error.TestFail('Sent the wrong kcrash signature')
 
 
     def run_once(self, is_before, consent):
diff --git a/client/site_tests/logging_UserCrash/logging_UserCrash.py b/client/site_tests/logging_UserCrash/logging_UserCrash.py
index 6e70e81..978bf12 100644
--- a/client/site_tests/logging_UserCrash/logging_UserCrash.py
+++ b/client/site_tests/logging_UserCrash/logging_UserCrash.py
@@ -245,6 +245,8 @@
             raise error.TestFail('Sent the wrong minidump payload')
         if result['meta_path'] != meta_path:
             raise error.TestFail('Used the wrong meta file')
+        if result['sig'] is not None:
+            raise error.TestFail('User crash should not have signature')
 
         # Check version matches.
         lsb_release = utils.read_file('/etc/lsb-release')
