summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/hmac.py16
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS2
3 files changed, 15 insertions, 4 deletions
diff --git a/Lib/hmac.py b/Lib/hmac.py
index ed5afc711a..88c3fd5377 100644
--- a/Lib/hmac.py
+++ b/Lib/hmac.py
@@ -78,6 +78,15 @@ class HMAC:
other.outer = self.outer.copy()
return other
+ def _current(self):
+ """Return a hash object for the current state.
+
+ To be used only internally with digest() and hexdigest().
+ """
+ h = self.outer.copy()
+ h.update(self.inner.digest())
+ return h
+
def digest(self):
"""Return the hash value of this hashing object.
@@ -85,15 +94,14 @@ class HMAC:
not altered in any way by this function; you can continue
updating the object after calling this function.
"""
- h = self.outer.copy()
- h.update(self.inner.digest())
+ h = self._current()
return h.digest()
def hexdigest(self):
"""Like digest(), but returns a string of hexadecimal digits instead.
"""
- return "".join([hex(ord(x))[2:].zfill(2)
- for x in tuple(self.digest())])
+ h = self._current()
+ return h.hexdigest()
def new(key, msg = None, digestmod = None):
"""Create a new hashing object and return it.
diff --git a/Misc/ACKS b/Misc/ACKS
index d5d7675bc2..b1981140b0 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -285,6 +285,7 @@ Chris Hoffman
Albert Hofkamp
Jonathan Hogg
Gerrit Holl
+Shane Holloway
Rune Holm
Philip Homburg
Naofumi Honda
diff --git a/Misc/NEWS b/Misc/NEWS
index 92f81ebff4..363320b1ea 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -103,6 +103,8 @@ Core and builtins
Library
-------
+- Patch #1182394 from Shane Holloway: speed up HMAC.hexdigest.
+
- Patch #1262036: Prevent TarFiles from being added to themselves under
certain conditions.