X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=blobdiff_plain;f=wrw%2Fauth.py;fp=wrw%2Fauth.py;h=bb0e0cdbb439f6169d218c18768c823e589d53d1;hp=27e2a980c260ff5318dfe02c0a7160a686a5d5a5;hb=b6f62b898efdc272130d3dbdd6742c5b785e7c7d;hpb=e1e1218fd66230e4ac8c7fca36a4c9a7b2496cf5 diff --git a/wrw/auth.py b/wrw/auth.py index 27e2a98..bb0e0cd 100644 --- a/wrw/auth.py +++ b/wrw/auth.py @@ -1,9 +1,9 @@ import binascii, hashlib, threading, time -from . import resp, proto +import resp, proto class unauthorized(resp.httperror): def __init__(self, challenge, message=None, detail=None): - super().__init__(401, message, detail) + super(unauthorized, self).__init__(401, message, detail) if isinstance(challenge, str): challenge = [challenge] self.challenge = challenge @@ -11,11 +11,11 @@ class unauthorized(resp.httperror): def handle(self, req): for challenge in self.challenge: req.ohead.add("WWW-Authenticate", challenge) - return super().handle(req) + return super(unauthorized, self).handle(req) class forbidden(resp.httperror): def __init__(self, message=None, detail=None): - super().__init__(403, message, detail) + super(forbidden, self).__init__(403, message, detail) def parsemech(req): h = req.ihead.get("Authorization", None) @@ -34,10 +34,6 @@ def parsebasic(req): raw = proto.unb64(data) except binascii.Error: return None, None - try: - raw = raw.decode("utf-8") - except UnicodeError: - raw = raw.decode("latin1") p = raw.find(":") if p < 0: return None, None @@ -55,9 +51,9 @@ class basiccache(object): def _obscure(self, nm, pw): dig = hashlib.sha256() - dig.update(self.realm.encode("utf-8")) - dig.update(nm.encode("utf-8")) - dig.update(pw.encode("utf-8")) + dig.update(self.realm) + dig.update(nm) + dig.update(pw) return dig.digest() def check(self, req): @@ -80,7 +76,7 @@ class basiccache(object): with lock: try: ret = self.auth(req, nm, pw) - except forbidden as exc: + except forbidden, exc: with self._lock: self._cache[nm, pwh] = (lock, now, "f", exc) raise