diff options
| author | Chris McDonough <chrism@plope.com> | 2011-09-24 04:22:52 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2011-09-24 04:22:52 -0400 |
| commit | e1258eef6ed47831a8201e6b53ca341a901ad5c4 (patch) | |
| tree | 296703cd2d71c94c40aca63a089cec9ce946e439 | |
| parent | 44ebac8a36467f2ad65cd40b906c576e4aca0330 (diff) | |
| download | pyramid-e1258eef6ed47831a8201e6b53ca341a901ad5c4.tar.gz pyramid-e1258eef6ed47831a8201e6b53ca341a901ad5c4.tar.bz2 pyramid-e1258eef6ed47831a8201e6b53ca341a901ad5c4.zip | |
fix signed_serialize and signed_deserialize on py3
| -rw-r--r-- | pyramid/session.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/pyramid/session.py b/pyramid/session.py index cd685e51c..a59f9c628 100644 --- a/pyramid/session.py +++ b/pyramid/session.py @@ -10,6 +10,8 @@ from zope.interface import implementer from pyramid.compat import pickle from pyramid.compat import PY3 from pyramid.compat import text_ +from pyramid.compat import bytes_ +from pyramid.compat import native_ from pyramid.interfaces import ISession def manage_accessed(wrapped): @@ -234,8 +236,8 @@ def signed_serialize(data, secret): response.set_cookie('signed_cookie', cookieval) """ pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL) - sig = hmac.new(secret, pickled, sha1).hexdigest() - return sig + base64.standard_b64encode(pickled) + sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest() + return sig + native_(base64.b64encode(pickled)) def signed_deserialize(serialized, secret, hmac=hmac): """ Deserialize the value returned from ``signed_serialize``. If @@ -253,12 +255,12 @@ def signed_deserialize(serialized, secret, hmac=hmac): # hmac parameterized only for unit tests try: input_sig, pickled = (serialized[:40], - base64.standard_b64decode(serialized[40:])) + base64.b64decode(bytes_(serialized[40:]))) except (binascii.Error, TypeError) as e: # Badly formed data can make base64 die raise ValueError('Badly formed base64 data: %s' % e) - sig = hmac.new(secret, pickled, sha1).hexdigest() + sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest() if len(sig) != len(input_sig): raise ValueError('Wrong signature length') |
