summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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'])