https://github.com/python/cpython/commit/15d926b28537a0ef091a103ca01e67ce90845735 commit: 15d926b28537a0ef091a103ca01e67ce90845735 branch: main author: Bénédikt Tran <10796600+picn...@users.noreply.github.com> committer: picnixz <10796600+picn...@users.noreply.github.com> date: 2025-03-04T10:15:33+01:00 summary:
gh-130149: fix HMAC tests for some FIPS-only build bots (#130788) Skips some HMAC tests for some FIPS-only build bots that do not have the underlying hash functions. files: M Lib/test/test_hmac.py diff --git a/Lib/test/test_hmac.py b/Lib/test/test_hmac.py index 982a5c53e0f324..c8c806dc1baf8b 100644 --- a/Lib/test/test_hmac.py +++ b/Lib/test/test_hmac.py @@ -566,32 +566,52 @@ def test_with_fallback(self): cache.pop('foo') -class PyRFCTestCase(PyTestVectorsMixin, ThroughObjectMixin, - RFCTestCasesMixin, unittest.TestCase): - """Python implementation of HMAC using hmac.HMAC().""" - - -class PyDotNewRFCTestCase(PyTestVectorsMixin, ThroughModuleAPIMixin, - RFCTestCasesMixin, unittest.TestCase): - """Python implementation of HMAC using hmac.new().""" - - -@hashlib_helper.requires_hashlib() -class OpenSSLRFCTestCase(OpenSSLTestVectorsMixin, RFCTestCasesMixin, - unittest.TestCase): - """OpenSSL implementation of HMAC.""" +class RFCWithOpenSSLHashFunctionTestCasesMixin(RFCTestCasesMixin): def __init_subclass__(cls, *args, **kwargs): super().__init_subclass__(*args, **kwargs) for name in cls.ALGORITHMS: @property + @hashlib_helper.requires_hashlib() @hashlib_helper.requires_hashdigest(name, openssl=True) def func(self, *, __name=name): # __name needed to bind 'name' return getattr(_hashlib, f'openssl_{__name}') setattr(cls, name, func) +class PyRFCTestCase(PyTestVectorsMixin, ThroughObjectMixin, + RFCWithOpenSSLHashFunctionTestCasesMixin, + unittest.TestCase): + """Python implementation of HMAC using hmac.HMAC(). + + The underlying hash functions are OpenSSL-based. + """ + + +class PyDotNewRFCTestCase(PyTestVectorsMixin, ThroughModuleAPIMixin, + RFCWithOpenSSLHashFunctionTestCasesMixin, + unittest.TestCase): + """Python implementation of HMAC using hmac.new(). + + The underlying hash functions are OpenSSL-based. + """ + + +class OpenSSLRFCTestCase(OpenSSLTestVectorsMixin, + RFCWithOpenSSLHashFunctionTestCasesMixin, + unittest.TestCase): + """OpenSSL implementation of HMAC. + + The underlying hash functions are also OpenSSL-based.""" + + +# TODO(picnixz): once we have a HACL* HMAC, we should also test the Python +# implementation of HMAC with a HACL*-based hash function. For now, we only +# test it partially via the '_sha2' module, but for completeness we could +# also test the RFC test vectors against all possible implementations. + + class DigestModTestCaseMixin(CreatorMixin, DigestMixin): """Tests for the 'digestmod' parameter.""" _______________________________________________ Python-checkins mailing list -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: arch...@mail-archive.com