increment file counter after handling current object
authorPhilipp Gesang <philipp.gesang@intra2net.com>
Thu, 6 Apr 2017 15:54:35 +0000 (17:54 +0200)
committerPhilipp Gesang <philipp.gesang@intra2net.com>
Mon, 7 Aug 2017 12:02:45 +0000 (14:02 +0200)
deltatar/crypto.py

index 56b0e61..56b7a66 100755 (executable)
@@ -472,9 +472,7 @@ class Encrypt (Crypto):
 
     def next (self, filename, version, nacl, counter=None):
         self.curobj = (filename, version, nacl or self.nacl)
-        self.set_object_counter (counter if counter is not None else self.cnt + 1)
         self.iv = self.iv_make ()
-
         if self.paramenc == "aes-gcm":
             self.enc = Cipher \
                             ( algorithms.AES (self.key)
@@ -489,6 +487,7 @@ class Encrypt (Crypto):
         self.hdrdum = hdr_make_dummy (filename)
         super().next (self.password, self.paramversion, nacl)
 
+        self.set_object_counter (counter if counter is not None else self.cnt + 1)
         return self.hdrdum
 
 
@@ -539,7 +538,6 @@ class Decrypt (Crypto):
         paramversion = hdr ["paramversion"]
         if self.key is None:
             super().next (self.password, paramversion, hdr ["nacl"])
-        self.set_object_counter (self.cnt + 1)
         iv = hdr ["iv"]
         if self.pfx is not None and self.valid_pfx (iv) is False:
             fixed, _ = struct.unpack (FMT_I2N_IV, iv)
@@ -559,15 +557,17 @@ class Decrypt (Crypto):
         else:
             raise Exception ("XXX garbage encryption parameter %d → %r"
                              % (paramversion, enc))
+        self.set_object_counter (self.cnt + 1)
 
 
     def done (self, tag=None):
+        ret  = True
         data = b""
         try:
             if tag is None:
-                ret, data = True, self.enc.finalize ()
+                data = self.enc.finalize ()
             else:
-                ret, data = self.enc.finalize_with_tag (self.tag)
+                data = self.enc.finalize_with_tag (self.tag)
         except cryptography.exceptions.InvalidTag as exn:
             return False, repr (exn)
         self.ctsize += len (data)