commit:     b773fc08fe7b20b46a810b6eca85e489a69fb8ac
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Mar 12 16:50:48 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Mar 13 21:46:30 2017 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=b773fc08

Support STREEBOG{256,512} hash function (from pygcrypt), #597736

 pym/portage/checksum.py                 |  5 ++++-
 pym/portage/const.py                    |  3 ++-
 pym/portage/tests/util/test_checksum.py | 18 ++++++++++++++++++
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/pym/portage/checksum.py b/pym/portage/checksum.py
index 92b41b133..3ee100c3f 100644
--- a/pym/portage/checksum.py
+++ b/pym/portage/checksum.py
@@ -137,7 +137,8 @@ if "SHA3_256" not in hashfunc_map or "SHA3_512" not in 
hashfunc_map:
 
 # Support pygcrypt as fallback using optimized routines from libgcrypt
 # (GnuPG).
-gcrypt_algos = frozenset(('RMD160', 'WHIRLPOOL', 'SHA3_256', 'SHA3_512'))
+gcrypt_algos = frozenset(('RMD160', 'WHIRLPOOL', 'SHA3_256', 'SHA3_512',
+       'STREEBOG256', 'STREEBOG512'))
 if gcrypt_algos.difference(hashfunc_map):
        try:
                import binascii
@@ -158,6 +159,8 @@ if gcrypt_algos.difference(hashfunc_map):
                        'WHIRLPOOL': 'whirlpool',
                        'SHA3_256': 'sha3-256',
                        'SHA3_512': 'sha3-512',
+                       'STREEBOG256': 'stribog256',
+                       'STREEBOG512': 'stribog512',
                }
 
                for local_name, gcry_name in name_mapping.items():

diff --git a/pym/portage/const.py b/pym/portage/const.py
index 0cef2e8ae..7e415ba9c 100644
--- a/pym/portage/const.py
+++ b/pym/portage/const.py
@@ -232,7 +232,8 @@ MANIFEST1_REQUIRED_HASH  = "MD5"
 # - Remove redundant settings from gentoo-x86/metadata/layout.conf.
 
 MANIFEST2_HASH_FUNCTIONS = ("SHA256", "SHA512", "WHIRLPOOL",
-               "BLAKE2B", "BLAKE2S", "SHA3_256", "SHA3_512")
+               "BLAKE2B", "BLAKE2S", "SHA3_256", "SHA3_512",
+               "STREEBOG256", "STREEBOG512")
 MANIFEST2_HASH_DEFAULTS = frozenset(["SHA256", "SHA512", "WHIRLPOOL"])
 MANIFEST2_REQUIRED_HASH  = "SHA256"
 

diff --git a/pym/portage/tests/util/test_checksum.py 
b/pym/portage/tests/util/test_checksum.py
index 72b8cef3f..01ac8f9d0 100644
--- a/pym/portage/tests/util/test_checksum.py
+++ b/pym/portage/tests/util/test_checksum.py
@@ -86,3 +86,21 @@ class ChecksumTestCase(TestCase):
                                        
'6634c004dc31822fa65c2f1e2e3bbf0cfa35085653cca1ca9ca42f8f3f13c908405e0b665918146181c9fc9a9d793fc05429d669c35a55517820dfaa071425ca')
                except DigestException:
                        self.skipTest('SHA3_512 implementation not available')
+
+       def test_streebog256(self):
+               try:
+                       self.assertEqual(checksum_str(b'', 'STREEBOG256'),
+                                       
'3f539a213e97c802cc229d474c6aa32a825a360b2a933a949fd925208d9ce1bb')
+                       self.assertEqual(checksum_str(self.text, 'STREEBOG256'),
+                                       
'4992f1239c46f15b89e7b83ded4d83fb5966da3692788a4a1a6d118f78c08444')
+               except DigestException:
+                       self.skipTest('STREEBOG256 implementation not 
available')
+
+       def test_streebog512(self):
+               try:
+                       self.assertEqual(checksum_str(b'', 'STREEBOG512'),
+                                       
'8e945da209aa869f0455928529bcae4679e9873ab707b55315f56ceb98bef0a7362f715528356ee83cda5f2aac4c6ad2ba3a715c1bcd81cb8e9f90bf4c1c1a8a')
+                       self.assertEqual(checksum_str(self.text, 'STREEBOG512'),
+                                       
'330f5c26437f4e22c0163c72b12e93b8c27202f0750627355bdee43a0e0b253c90fbf0a27adbe5414019ff01ed84b7b240a1da1cbe10fae3adffc39c2d87a51f')
+               except DigestException:
+                       self.skipTest('STREEBOG512 implementation not 
available')

Reply via email to