summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-08-21 02:45:15 (GMT)
committerBenjamin Peterson <benjamin@python.org>2010-08-21 02:45:15 (GMT)
commit0cc7444ea9870c11b6ce0c61e4c761609f295f69 (patch)
treea224dd4313542388b7260dac81680a80e4e56240
parentbf6f31b65fa0947c97276b0007adc3276040c706 (diff)
downloadcpython-0cc7444ea9870c11b6ce0c61e4c761609f295f69.zip
cpython-0cc7444ea9870c11b6ce0c61e4c761609f295f69.tar.gz
cpython-0cc7444ea9870c11b6ce0c61e4c761609f295f69.tar.bz2
speed hack can be implemented more cleanly by directly calling __new__
-rw-r--r--Lib/hmac.py10
1 files changed, 2 insertions, 8 deletions
diff --git a/Lib/hmac.py b/Lib/hmac.py
index 5572751..e878e1a 100644
--- a/Lib/hmac.py
+++ b/Lib/hmac.py
@@ -12,10 +12,6 @@ trans_36 = bytes((x ^ 0x36) for x in range(256))
# hashing module used. Use digest_size from the instance of HMAC instead.
digest_size = None
-# A unique object passed by HMAC.copy() to the HMAC constructor, in order
-# that the latter return very quickly. HMAC("") in contrast is quite
-# expensive.
-_secret_backdoor_key = object()
class HMAC:
"""RFC 2104 HMAC class. Also complies with RFC 4231.
@@ -36,9 +32,6 @@ class HMAC:
Note: key and msg must be bytes objects.
"""
- if key is _secret_backdoor_key: # cheap
- return
-
if not isinstance(key, bytes):
raise TypeError("expected bytes, but got %r" % type(key).__name__)
@@ -89,7 +82,8 @@ class HMAC:
An update to this copy won't affect the original object.
"""
- other = self.__class__(_secret_backdoor_key)
+ # Call __new__ directly to avoid the expensive __init__.
+ other = self.__class__.__new__(self.__class__)
other.digest_cons = self.digest_cons
other.digest_size = self.digest_size
other.inner = self.inner.copy()