summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMatthias Bussonnier <bussonniermatthias@gmail.com>2018-09-10 18:10:01 (GMT)
committerGregory P. Smith <greg@krypto.org>2018-09-10 18:10:01 (GMT)
commit51a4743d19abd016f0772a57fb31df7af9220e18 (patch)
treefee5036d3e6f4a700f40171b3c0480e2122d0e13 /Lib
parent78deb7f33227972987722bc3fed5bcb45fae869e (diff)
downloadcpython-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.py13
-rw-r--r--Lib/test/test_hmac.py28
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