diff options
-rw-r--r-- | gemato/manifest.py | 23 | ||||
-rw-r--r-- | tests/test_manifest.py | 13 |
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']) |