Skip to content

Commit

Permalink
handle unicode to utf-8 conversion in md5 computation
Browse files Browse the repository at this point in the history
  • Loading branch information
jcarbaugh committed Mar 1, 2011
1 parent 6b5e3b7 commit 6b51deb
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions cloudmailin/views.py
Expand Up @@ -4,8 +4,9 @@
import hashlib

def generate_signature(params, secret):
sig = "".join(params[k] for k in sorted(params.keys()) if k != "signature")
return hashlib.md5(sig + secret).hexdigest()
sig = "".join(params[k].encode('utf-8') for k in sorted(params.keys()) if k != "signature")
sig = hashlib.md5(sig + secret).hexdigest()
return sig

class MailHandler(object):

Expand All @@ -17,17 +18,21 @@ def __init__(self, *args, **kwargs):

def __call__(self, request, *args, **kwargs):

to = request.POST.get('to', None)
params = dict((k, v) for k, v in request.POST.iteritems())

to = params.get('to', None)
addr = self._addresses.get(to, None)

if addr is None:
return HttpResponseNotFound("recipient address is not found", mimetype="text/plain")

if not self.is_valid_signature(request.POST, addr['secret']):
return HttpResponseForbidden("invalid message signature", mimetype="text/plain")

try:
addr['callback'](**dict((k, v) for k, v in request.POST.iteritems()))

if not self.is_valid_signature(params, addr['secret']):
return HttpResponseForbidden("invalid message signature", mimetype="text/plain")

addr['callback'](**params)

except Exception, e:
return HttpResponseServerError(e.message, mimetype="text/plain")

Expand Down

0 comments on commit 6b51deb

Please sign in to comment.