Tres Seaver
2012-11-09 4cc78d522a125aaea864c910d67117a82592d1a3
Work around Py32's hashib nannyism.
3 files modified
18 ■■■■ changed files
repoze/who/_compat.py 5 ●●●●● patch | view | raw | blame | history
repoze/who/plugins/htpasswd.py 5 ●●●●● patch | view | raw | blame | history
repoze/who/plugins/tests/test_htpasswd.py 8 ●●●●● patch | view | raw | blame | history
repoze/who/_compat.py
@@ -126,3 +126,8 @@
        except UnicodeDecodeError:
            return value.decode('latin1')
    return value
def must_encode(value):
    if type(value) is u:
        return value.encode('utf-8')
    return value
repoze/who/plugins/htpasswd.py
@@ -98,8 +98,9 @@
def sha1_check(password, hashed):
    from hashlib import sha1
    import base64
    encrypted_string = base64.standard_b64encode(sha1(password).digest())
    from base64 import standard_b64encode
    from repoze.who._compat import must_encode
    encrypted_string = standard_b64encode(sha1(must_encode(password)).digest())
    return _same_string(hashed, "%s%s" % ("{SHA}", encrypted_string))
def plain_check(password, hashed):
repoze/who/plugins/tests/test_htpasswd.py
@@ -129,13 +129,15 @@
        self.assertEqual(crypt_check('notpassword', hashed), False)
    def test_sha1_check(self):
        import base64
        from base64 import standard_b64encode
        from hashlib import sha1
        from repoze.who._compat import must_encode
        from repoze.who.plugins.htpasswd import sha1_check
        encrypted_string = base64.standard_b64encode(sha1("password").digest())
        encrypted_string = standard_b64encode(sha1(
                                must_encode("password")).digest())
        self.assertEqual(sha1_check('password',
                         "%s%s" % ("{SHA}",encrypted_string)), True)
                         "%s%s" % ("{SHA}", encrypted_string)), True)
        self.assertEqual(sha1_check('notpassword',
                         "%s%s" % ("{SHA}", encrypted_string)), False)