summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Jenvey <pjenvey@underboss.org>2011-04-25 01:04:17 -0700
committerPhilip Jenvey <pjenvey@underboss.org>2011-04-25 01:04:17 -0700
commitbf6be9eae4d0be7789effd36875148b6319d77e1 (patch)
tree7ffd049bdf20cc72bf93b00ed1fb5054678c7fe2
parenta5702cd86382603cc1a3071bc16b9b493e21ebeb (diff)
downloadpyramid-bf6be9eae4d0be7789effd36875148b6319d77e1.tar.gz
pyramid-bf6be9eae4d0be7789effd36875148b6319d77e1.tar.bz2
pyramid-bf6be9eae4d0be7789effd36875148b6319d77e1.zip
revert a5702cd8: oops, it undoes timing attack protection
-rw-r--r--pyramid/session.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/pyramid/session.py b/pyramid/session.py
index c284ce91b..5772c80d0 100644
--- a/pyramid/session.py
+++ b/pyramid/session.py
@@ -18,7 +18,6 @@ import os
from zope.interface import implements
-from pyramid.compat import any
from pyramid.interfaces import ISession
def manage_accessed(wrapped):
@@ -277,13 +276,16 @@ def signed_deserialize(serialized, secret, hmac=hmac):
sig = hmac.new(secret, pickled, sha1).hexdigest()
- # Avoid timing attacks (see
- # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)
-
if len(sig) != len(input_sig):
raise ValueError('Wrong signature length')
- if any(a != b for a, b in zip(sig, input_sig)):
+ # Avoid timing attacks (see
+ # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)
+ invalid_bits = 0
+ for a, b in zip(sig, input_sig):
+ invalid_bits += a != b
+
+ if invalid_bits:
raise ValueError('Invalid bits in signature')
return pickle.loads(pickled)