include description of object validation with crypto.py scan mode
[python-delta-tar] / deltatar / crypto.py
index 41f0cbd..676fa18 100755 (executable)
@@ -553,6 +553,16 @@ HDR_CAND_GOOD       = 0 # header marks begin of valid object
 HDR_CAND_FISHY      = 1 # inconclusive (tag mismatch, obj overlap etc.)
 HDR_CAND_JUNK       = 2 # not a header / object unreadable
 
+HDR_VERDICT_NAME = \
+    { HDR_CAND_GOOD  : "valid"
+    , HDR_CAND_FISHY : "fishy"
+    , HDR_CAND_JUNK  : "junk"
+    }
+
+
+def verdict_fmt (vdt):
+    return HDR_VERDICT_NAME [vdt]
+
 
 def inspect_hdr (fd, off):
     """
@@ -1911,7 +1921,10 @@ def mode_scan (secret, fname, outs=None, nacl=None):
             nobj += 1
             vdt, hdr = inspect_hdr (ifd, cand)
 
+            vdts = verdict_fmt (vdt)
+
             if vdt == HDR_CAND_JUNK:
+                noise ("PDT: obj %d: %s object: bad header, skipping" % vdts)
                 junk.append (cand)
             else:
                 off0 = cand + PDTCRYPT_HDR_SIZE
@@ -1935,17 +1948,17 @@ def mode_scan (secret, fname, outs=None, nacl=None):
                     if ofd != -1:
                         os.close (ofd)
                 if vdt == HDR_CAND_GOOD and ok is True:
-                    noise ("PDT: %d → ✓ valid object %d–%d"
-                           % (cand, off0, off0 + ctsize))
+                    noise ("PDT: %d → ✓ %s object %d–%d"
+                           % (cand, vdts, off0, off0 + ctsize))
                 elif vdt == HDR_CAND_FISHY and ok is True:
-                    noise ("PDT: %d → × object %d–%d, corrupt header"
-                           % (cand, off0, off0 + ctsize))
+                    noise ("PDT: %d → × %s object %d–%d, corrupt header"
+                           % (cand, vdts, off0, off0 + ctsize))
                 elif vdt == HDR_CAND_GOOD and ok is False:
-                    noise ("PDT: %d → × object %d–%d, problematic payload"
-                           % (cand, off0, off0 + ctsize))
+                    noise ("PDT: %d → × %s object %d–%d, problematic payload"
+                           % (cand, vdts, off0, off0 + ctsize))
                 elif vdt == HDR_CAND_FISHY and ok is False:
-                    noise ("PDT: %d → × object %d–%d, corrupt header, problematic "
-                           "ciphertext" % (cand, off0, off0 + ctsize))
+                    noise ("PDT: %d → × %s object %d–%d, corrupt header, problematic "
+                           "ciphertext" % (cand, vdts, off0, off0 + ctsize))
                 else:
                     raise Unreachable
     finally: