summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2017-10-23 15:40:11 +0200
committerMichał Górny <mgorny@gentoo.org>2017-10-23 15:40:11 +0200
commit7882c68d3d15e92110ee63e6742398b632ba2c4a (patch)
treed2e764b1a7f62c0e7e5de1777c6d3d3cb1d414a0
parent73bef6c40df0c8c8ba0e00916773688a309685ce (diff)
downloadgemato-7882c68d3d15e92110ee63e6742398b632ba2c4a.tar.gz
manifest: Support mapping Manifest hash names to hashlib
-rw-r--r--gemato/manifest.py23
-rw-r--r--tests/test_manifest.py13
2 files changed, 36 insertions, 0 deletions
diff --git a/gemato/manifest.py b/gemato/manifest.py
index d094c87..065b852 100644
--- a/gemato/manifest.py
+++ b/gemato/manifest.py
@@ -369,3 +369,26 @@ class ManifestFile(object):
mdir = os.path.dirname(e.path)
if path.startswith(mdir + '/'):
yield e
+
+
+MANIFEST_HASH_MAPPING = {
+ 'MD5': 'md5',
+ 'SHA1': 'sha1',
+ 'SHA256': 'sha256',
+ 'SHA512': 'sha512',
+ 'RMD160': 'ripemd160',
+ 'WHIRLPOOL': 'whirlpool',
+ 'BLAKE2B': 'blake2b',
+ 'BLAKE2S': 'blake2s',
+ 'SHA3_256': 'sha3_256',
+ 'SHA3_512': 'sha3_512',
+}
+
+
+def manifest_hashes_to_hashlib(hashes):
+ """
+ Return the hashlib hash names corresponding to the Manifest names
+ in @hashes. Returns an iterable.
+ """
+ for h in hashes:
+ yield MANIFEST_HASH_MAPPING[h]
diff --git a/tests/test_manifest.py b/tests/test_manifest.py
index feb4060..8729eb9 100644
--- a/tests/test_manifest.py
+++ b/tests/test_manifest.py
@@ -341,3 +341,16 @@ class ManifestEntryTest(unittest.TestCase):
gemato.manifest.ManifestEntryAUX.from_list, ('AUX',))
self.assertRaises(gemato.manifest.ManifestSyntaxError,
gemato.manifest.ManifestEntryAUX.from_list, ('AUX', 'foo'))
+
+
+class ManifestUtilityTest(unittest.TestCase):
+ def test_manifest_hashes_to_hashlib(self):
+ self.assertListEqual(list(
+ gemato.manifest.manifest_hashes_to_hashlib(['MD5', 'SHA1'])),
+ ['md5', 'sha1'])
+ self.assertListEqual(list(
+ gemato.manifest.manifest_hashes_to_hashlib(['RMD160'])),
+ ['ripemd160'])
+ self.assertListEqual(list(
+ gemato.manifest.manifest_hashes_to_hashlib(['SHA3_256', 'SHA256'])),
+ ['sha3_256', 'sha256'])