From: Andrew M. Kuchling Date: Wed, 27 Dec 2006 03:31:24 +0000 (+0000) Subject: [Rest of patch #1182394] Add ._current() method so that we can use the written-in... X-Git-Tag: v2.6a1~2329 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=71662323992907f1da51ea61a6f29b09e571c089;p=python [Rest of patch #1182394] Add ._current() method so that we can use the written-in-C .hexdigest() method --- 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.