diff roundup/password.py @ 6146:01e9634b81a4

fixed string encoding of SSHA encoded passwords in Python 3
author Christof Meerwald <cmeerw@cmeerw.org>
date Sun, 12 Apr 2020 21:02:57 +0100
parents e27a240430b8
children 120b0bb05b6e
line wrap: on
line diff
--- a/roundup/password.py	Mon Apr 06 11:23:08 2020 -0400
+++ b/roundup/password.py	Sun Apr 12 21:02:57 2020 +0100
@@ -114,7 +114,7 @@
     '''
     shaval = sha1(password)  # nosec
     shaval.update(salt)
-    ssha_digest = b64encode(shaval.digest() + salt).strip()
+    ssha_digest = b2s(b64encode(shaval.digest() + salt).strip())
     return ssha_digest
 
 
@@ -359,6 +359,8 @@
 def test():
     # SHA
     p = Password('sekrit')
+    assert Password(encrypted=str(p)) == 'sekrit'
+    assert 'sekrit' == Password(encrypted=str(p))
     assert p == 'sekrit'
     assert p != 'not sekrit'
     assert 'sekrit' == p
@@ -366,6 +368,8 @@
 
     # MD5
     p = Password('sekrit', 'MD5')
+    assert Password(encrypted=str(p)) == 'sekrit'
+    assert 'sekrit' == Password(encrypted=str(p))
     assert p == 'sekrit'
     assert p != 'not sekrit'
     assert 'sekrit' == p
@@ -374,6 +378,8 @@
     # crypt
     if crypt:  # not available on Windows
         p = Password('sekrit', 'crypt')
+        assert Password(encrypted=str(p)) == 'sekrit'
+        assert 'sekrit' == Password(encrypted=str(p))
         assert p == 'sekrit'
         assert p != 'not sekrit'
         assert 'sekrit' == p
@@ -381,6 +387,8 @@
 
     # SSHA
     p = Password('sekrit', 'SSHA')
+    assert Password(encrypted=str(p)) == 'sekrit'
+    assert 'sekrit' == Password(encrypted=str(p))
     assert p == 'sekrit'
     assert p != 'not sekrit'
     assert 'sekrit' == p
@@ -397,6 +405,8 @@
 
     # PBKDF2 - high level integration
     p = Password('sekrit', 'PBKDF2')
+    assert Password(encrypted=str(p)) == 'sekrit'
+    assert 'sekrit' == Password(encrypted=str(p))
     assert p == 'sekrit'
     assert p != 'not sekrit'
     assert 'sekrit' == p

Roundup Issue Tracker: http://roundup-tracker.org/