diff options
| author | Michael Merickel <michael@merickel.org> | 2013-10-26 20:54:03 -0700 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2013-10-26 20:54:03 -0700 |
| commit | d7337b1b9d6009d8e6da07162b9f4c403c3d0370 (patch) | |
| tree | 964a4dbe3723e27ee3e99e82d1fca7383f2084d8 | |
| parent | a4492a9bbe0a58aaed68f12657d3ddf979d22921 (diff) | |
| parent | 5d1f9cbf40309548edb445512f2f950a6d207354 (diff) | |
| download | pyramid-d7337b1b9d6009d8e6da07162b9f4c403c3d0370.tar.gz pyramid-d7337b1b9d6009d8e6da07162b9f4c403c3d0370.tar.bz2 pyramid-d7337b1b9d6009d8e6da07162b9f4c403c3d0370.zip | |
Merge pull request #1177 from bertjwregeer/fix/signed_serialize_deserialize
digestmod() has to accept a parameter in certain cases
| -rw-r--r-- | pyramid/session.py | 2 | ||||
| -rw-r--r-- | pyramid/tests/test_session.py | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/pyramid/session.py b/pyramid/session.py index 9e0733661..d3a4113b9 100644 --- a/pyramid/session.py +++ b/pyramid/session.py @@ -565,7 +565,7 @@ def SignedCookieSessionFactory( if deserialize is None: deserialize = pickle.loads - digestmod = lambda: hashlib.new(hashalg) + digestmod = lambda string=b'': hashlib.new(hashalg, string) digest_size = digestmod().digest_size salted_secret = bytes_(salt or '') + bytes_(secret) diff --git a/pyramid/tests/test_session.py b/pyramid/tests/test_session.py index c13d3ce5c..a9f70d6a0 100644 --- a/pyramid/tests/test_session.py +++ b/pyramid/tests/test_session.py @@ -370,6 +370,24 @@ class TestSignedCookieSession(SharedCookieSessionTests, unittest.TestCase): session = self._makeOne(request) self.assertEqual(session, {}) + def test_very_long_key(self): + verylongkey = b'a' * 1024 + import webob + request = testing.DummyRequest() + session = self._makeOne(request, secret=verylongkey) + session['a'] = 1 + callbacks = request.response_callbacks + self.assertEqual(len(callbacks), 1) + response = webob.Response() + + try: + result = callbacks[0](request, response) + except TypeError as e: # pragma: no cover + self.fail('HMAC failed to initialize due to key length.') + + self.assertEqual(result, None) + self.assertTrue('Set-Cookie' in dict(response.headerlist)) + class TestUnencryptedCookieSession(SharedCookieSessionTests, unittest.TestCase): def setUp(self): super(TestUnencryptedCookieSession, self).setUp() |
