From 7cb8892fdb2a5437240e0d66b4eb5d1857820c41 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sat, 12 Dec 2009 05:25:50 +0000 Subject: [PATCH] Fixed #12362 -- Corrected Python 2.4 incompatibility with hmac constructor in contrib.messages. Thanks to Jeremy Dunck for the report and patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@11814 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/messages/storage/cookie.py | 5 ++--- django/utils/hashcompat.py | 4 ++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/django/contrib/messages/storage/cookie.py b/django/contrib/messages/storage/cookie.py index 248791d3e7..1ac1afe550 100644 --- a/django/contrib/messages/storage/cookie.py +++ b/django/contrib/messages/storage/cookie.py @@ -1,7 +1,7 @@ import hmac from django.conf import settings -from django.utils.hashcompat import sha_constructor +from django.utils.hashcompat import sha_hmac from django.contrib.messages import constants from django.contrib.messages.storage.base import BaseStorage, Message from django.utils import simplejson as json @@ -41,7 +41,6 @@ class MessageDecoder(json.JSONDecoder): decoded = super(MessageDecoder, self).decode(s, **kwargs) return self.process_messages(decoded) - class CookieStorage(BaseStorage): """ Stores messages in a cookie. @@ -103,7 +102,7 @@ class CookieStorage(BaseStorage): SECRET_KEY, modified to make it unique for the present purpose. """ key = 'django.contrib.messages' + settings.SECRET_KEY - return hmac.new(key, value, sha_constructor).hexdigest() + return hmac.new(key, value, sha_hmac).hexdigest() def _encode(self, messages, encode_empty=False): """ diff --git a/django/utils/hashcompat.py b/django/utils/hashcompat.py index 8880d92646..b1e6021890 100644 --- a/django/utils/hashcompat.py +++ b/django/utils/hashcompat.py @@ -8,9 +8,13 @@ available. try: import hashlib md5_constructor = hashlib.md5 + md5_hmac = md5_constructor sha_constructor = hashlib.sha1 + sha_hmac = sha_constructor except ImportError: import md5 md5_constructor = md5.new + md5_hmac = md5 import sha sha_constructor = sha.new + sha_hmac = sha