diff options
author | Matthias Bussonnier <bussonniermatthias@gmail.com> | 2018-09-10 18:10:01 (GMT) |
---|---|---|
committer | Gregory P. Smith <greg@krypto.org> | 2018-09-10 18:10:01 (GMT) |
commit | 51a4743d19abd016f0772a57fb31df7af9220e18 (patch) | |
tree | fee5036d3e6f4a700f40171b3c0480e2122d0e13 /Lib | |
parent | 78deb7f33227972987722bc3fed5bcb45fae869e (diff) | |
download | cpython-51a4743d19abd016f0772a57fb31df7af9220e18.zip cpython-51a4743d19abd016f0772a57fb31df7af9220e18.tar.gz cpython-51a4743d19abd016f0772a57fb31df7af9220e18.tar.bz2 |
bpo-33604: Remove deprecated HMAC default value marked for removal in 3.8 (GH-7063)
HMAC's digestmod was deprecated marked for removal, this removes it as planned.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/hmac.py | 13 | ||||
-rw-r--r-- | Lib/test/test_hmac.py | 28 |
2 files changed, 10 insertions, 31 deletions
diff --git a/Lib/hmac.py b/Lib/hmac.py index 43b7212..890eaba 100644 --- a/Lib/hmac.py +++ b/Lib/hmac.py @@ -35,12 +35,9 @@ class HMAC: key: key for the keyed hash object. msg: Initial input for the hash, if provided. - digestmod: A module supporting PEP 247. *OR* - A hashlib constructor returning a new hash object. *OR* + digestmod: Required. A module supporting PEP 247. *OR* + A hashlib constructor returning a new hash object. *OR* A hash name suitable for hashlib.new(). - Defaults to hashlib.md5. - Implicit default to hashlib.md5 is deprecated since Python - 3.4 and will be removed in Python 3.8. Note: key and msg must be a bytes or bytearray objects. """ @@ -49,11 +46,7 @@ class HMAC: raise TypeError("key: expected bytes or bytearray, but got %r" % type(key).__name__) if digestmod is None: - _warnings.warn("HMAC() without an explicit digestmod argument " - "is deprecated since Python 3.4, and will be removed " - "in 3.8", - DeprecationWarning, 2) - digestmod = _hashlib.md5 + raise ValueError('`digestmod` is required.') if callable(digestmod): self.digest_cons = digestmod diff --git a/Lib/test/test_hmac.py b/Lib/test/test_hmac.py index 7f49013..896bbe9 100644 --- a/Lib/test/test_hmac.py +++ b/Lib/test/test_hmac.py @@ -302,45 +302,38 @@ class TestVectorsTestCase(unittest.TestCase): hmac.HMAC(b'a', b'b', digestmod=MockCrazyHash) self.fail('Expected warning about small block_size') - def test_with_digestmod_warning(self): - with self.assertWarns(DeprecationWarning): + def test_with_digestmod_no_default(self): + with self.assertRaises(ValueError): key = b"\x0b" * 16 data = b"Hi There" - digest = "9294727A3638BB1C13F48EF8158BFC9D" - h = hmac.HMAC(key, data) - self.assertEqual(h.hexdigest().upper(), digest) - + hmac.HMAC(key, data, digestmod=None) class ConstructorTestCase(unittest.TestCase): - @ignore_warning def test_normal(self): # Standard constructor call. failed = 0 try: - h = hmac.HMAC(b"key") + h = hmac.HMAC(b"key", digestmod='md5') except Exception: self.fail("Standard constructor call raised exception.") - @ignore_warning def test_with_str_key(self): # Pass a key of type str, which is an error, because it expects a key # of type bytes with self.assertRaises(TypeError): - h = hmac.HMAC("key") + h = hmac.HMAC("key", digestmod='md5') - @ignore_warning def test_dot_new_with_str_key(self): # Pass a key of type str, which is an error, because it expects a key # of type bytes with self.assertRaises(TypeError): - h = hmac.new("key") + h = hmac.new("key", digestmod='md5') - @ignore_warning def test_withtext(self): # Constructor call with text. try: - h = hmac.HMAC(b"key", b"hash this!") + h = hmac.HMAC(b"key", b"hash this!", digestmod='md5') except Exception: self.fail("Constructor call with text argument raised exception.") self.assertEqual(h.hexdigest(), '34325b639da4cfd95735b381e28cb864') @@ -369,13 +362,6 @@ class ConstructorTestCase(unittest.TestCase): class SanityTestCase(unittest.TestCase): - @ignore_warning - def test_default_is_md5(self): - # Testing if HMAC defaults to MD5 algorithm. - # NOTE: this whitebox test depends on the hmac class internals - h = hmac.HMAC(b"key") - self.assertEqual(h.digest_cons, hashlib.md5) - def test_exercise_all_methods(self): # Exercising all methods once. # This must not raise any exceptions |