From f37d0e0123746f3bf9b3d40ca799a6a44ab7c0f3 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Thu, 6 Apr 2017 17:54:35 +0200 Subject: [PATCH] increment file counter after handling current object --- deltatar/crypto.py | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deltatar/crypto.py b/deltatar/crypto.py index 56b0e61..56b7a66 100755 --- a/deltatar/crypto.py +++ b/deltatar/crypto.py @@ -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) -- 1.7.1