From 5d394c0d7990f5f8ea4749bd35b5d85139b8ac44 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Mon, 10 Apr 2017 15:08:31 +0200 Subject: [PATCH] fix fallout from EOF changes in CLI decryptor --- deltatar/crypto.py | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) diff --git a/deltatar/crypto.py b/deltatar/crypto.py index 834b8ac..6970786 100755 --- a/deltatar/crypto.py +++ b/deltatar/crypto.py @@ -96,8 +96,9 @@ class EndOfFile (Exception): remainder = 0 msg = 0 def __init__ (self, n=None, msg=None): - self.remainder = n - self.msg = msg + if n is not None: + self.remainder = n + self.msg = msg class InvalidParameter (Exception): @@ -688,7 +689,7 @@ class Decrypt (Crypto): % type (tag)) data = self.enc.finalize_with_tag (self.tag) except cryptography.exceptions.InvalidTag: - return InvalidGCMTag ("done: tag mismatch of object %d: %r " + raise InvalidGCMTag ("done: tag mismatch of object %d: %r " "rejected by finalize ()" % (self.cnt, self.tag)) self.ctsize += len (data) @@ -766,10 +767,11 @@ def depdtcrypt (pw, ins, outs): if ctleft == 0: # current object requires finalization if PDTCRYPT_VERBOSE is True: noise ("PDT: %d finalize" % tell (ins)) - ret, pt = decr.done () - if ret is False: - raise DecryptionError ("error finalizing object (%s)" - % pt) + try: + pt = decr.done () + except InvalidGCMTag as exn: + raise DecryptionError ("error finalizing object (%s): %r" + % (pt, exn)) out (pt) if PDTCRYPT_VERBOSE is True: noise ("PDT:\t· object validated") -- 1.7.1