From d9b96822b90a568d752dad40c9c1db11075fcd20 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Thu, 17 Mar 2016 20:31:08 +0200 Subject: Use plain digests for MD5 (backwards compat) --- obnamlib/checksummer_tests.py | 13 ++++++++++--- obnamlib/whole_file_checksummer.py | 6 +++++- obnamlib/whole_file_checksummer_tests.py | 2 +- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/obnamlib/checksummer_tests.py b/obnamlib/checksummer_tests.py index db4832cd..9f5c647b 100644 --- a/obnamlib/checksummer_tests.py +++ b/obnamlib/checksummer_tests.py @@ -63,6 +63,13 @@ class TestGetChecksummer(unittest.TestCase): for name in obnamlib.checksum_algorithms: summer = obnamlib.get_checksum_algorithm(name) summer.update('hello, world') - checksum = summer.hexdigest() - self.assertEqual(type(checksum), str) - self.assertNotEqual(checksum, '') + + digest = summer.hexdigest() + self.assertEqual(type(digest), str) + self.assertNotEqual(digest, '') + + hexdigest = summer.hexdigest() + self.assertEqual(type(hexdigest), str) + self.assertNotEqual(hexdigest, '') + for c in hexdigest: + self.assertTrue(c in '0123456789abcdef') diff --git a/obnamlib/whole_file_checksummer.py b/obnamlib/whole_file_checksummer.py index d47850f7..78c6d06b 100644 --- a/obnamlib/whole_file_checksummer.py +++ b/obnamlib/whole_file_checksummer.py @@ -35,6 +35,7 @@ class WholeFileCheckSummer(object): def __init__(self, file_key): self._all_bytes = file_key == obnamlib.REPO_FILE_MD5 + self._use_hex = file_key != obnamlib.REPO_FILE_MD5 self._summer = self._create_checksum_algorithm(file_key) def _create_checksum_algorithm(self, file_key): @@ -52,7 +53,10 @@ class WholeFileCheckSummer(object): def get_checksum(self): '''Get the current whole-file checksum.''' - return self._summer.hexdigest() + if self._use_hex: + return self._summer.hexdigest() + else: + return self._summer.digest() class _NullChecksum(object): diff --git a/obnamlib/whole_file_checksummer_tests.py b/obnamlib/whole_file_checksummer_tests.py index 473831b9..c11da206 100644 --- a/obnamlib/whole_file_checksummer_tests.py +++ b/obnamlib/whole_file_checksummer_tests.py @@ -36,7 +36,7 @@ class WholeFileCheckSummerTests(unittest.TestCase): chunk_id = None summer.append_chunk(chunk, chunk_id) self.assertEqual( - summer.get_checksum(), + summer.get_checksum().encode('hex'), '5d41402abc4b2a76b9719d911017c592') def test_computes_checksum_for_sha512(self): -- cgit v1.2.1