summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2016-03-17 20:31:08 +0200
committerLars Wirzenius <liw@liw.fi>2016-03-17 20:57:42 +0200
commitd9b96822b90a568d752dad40c9c1db11075fcd20 (patch)
treea687d995bb9d5d14156057b8bd337e451b5dd6d9
parent56970bfcbb3821d2550145111a58c46ab0c07419 (diff)
downloadobnam-d9b96822b90a568d752dad40c9c1db11075fcd20.tar.gz
Use plain digests for MD5 (backwards compat)
-rw-r--r--obnamlib/checksummer_tests.py13
-rw-r--r--obnamlib/whole_file_checksummer.py6
-rw-r--r--obnamlib/whole_file_checksummer_tests.py2
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):