[Repoze-checkins] r771 - in repoze.pam/trunk: . repoze/pam repoze/pam/plugins

Chris McDonough chrism at agendaless.com
Wed Mar 5 15:09:20 UTC 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Wed Mar  5 10:09:19 2008
New Revision: 771

Log:
0.3 (03-05-2008)

  - Make SQLAuthenticatorPlugin's default_password_compare use
    hexdigest sha instead of base64'ed binary sha for simpler
    conversion.



Modified:
   repoze.pam/trunk/CHANGES.txt
   repoze.pam/trunk/repoze/pam/plugins/sql.py
   repoze.pam/trunk/repoze/pam/tests.py
   repoze.pam/trunk/setup.py

Modified: repoze.pam/trunk/CHANGES.txt
==============================================================================
--- repoze.pam/trunk/CHANGES.txt	(original)
+++ repoze.pam/trunk/CHANGES.txt	Wed Mar  5 10:09:19 2008
@@ -1,3 +1,9 @@
+0.3 (03-05-2008)
+
+  - Make SQLAuthenticatorPlugin's default_password_compare use
+    hexdigest sha instead of base64'ed binary sha for simpler
+    conversion.
+
 0.2 (03-04-2008)
 
   - Added SQLAuthenticatorPlugin (see plugins/sql.py).

Modified: repoze.pam/trunk/repoze/pam/plugins/sql.py
==============================================================================
--- repoze.pam/trunk/repoze/pam/plugins/sql.py	(original)
+++ repoze.pam/trunk/repoze/pam/plugins/sql.py	Wed Mar  5 10:09:19 2008
@@ -4,18 +4,13 @@
 
 def default_password_compare(cleartext_password, stored_password_hash):
     import sha
-    import binascii
 
-    # the stored password is stored as '{SHA}<base64(<binary SHA digest>)>'.
+    # the stored password is stored as '{SHA}<SHA hexdigest>'.
     # or as a cleartext password (no {SHA} prefix)
 
     if stored_password_hash.startswith('{SHA}'):
         stored_password_hash = stored_password_hash[5:]
-        digest = sha.new(cleartext_password).digest()
-        try:
-            stored_password_hash = stored_password_hash.decode('base64')
-        except binascii.Error:
-            return False
+        digest = sha.new(cleartext_password).hexdigest()
     else:
         digest = cleartext_password
         

Modified: repoze.pam/trunk/repoze/pam/tests.py
==============================================================================
--- repoze.pam/trunk/repoze/pam/tests.py	(original)
+++ repoze.pam/trunk/repoze/pam/tests.py	Wed Mar  5 10:09:19 2008
@@ -1002,14 +1002,9 @@
         from repoze.pam.plugins.sql import default_password_compare
         return default_password_compare
 
-    def test_shaprefix_bad_decode(self):
-        compare = self._getFUT()
-        result = compare('password', '{SHA}undecodable')
-        self.assertEqual(result, False)
-
     def test_shaprefix_success(self):
         import sha
-        stored = sha.new('password').digest().encode('base64').rstrip()
+        stored = sha.new('password').hexdigest()
         stored = '{SHA}' + stored
         compare = self._getFUT()
         result = compare('password', stored)
@@ -1017,7 +1012,7 @@
 
     def test_shaprefix_fail(self):
         import sha
-        stored = sha.new('password').digest().encode('base64').rstrip()
+        stored = sha.new('password').hexdigest()
         stored = '{SHA}' + stored
         compare = self._getFUT()
         result = compare('notpassword', stored)

Modified: repoze.pam/trunk/setup.py
==============================================================================
--- repoze.pam/trunk/setup.py	(original)
+++ repoze.pam/trunk/setup.py	Wed Mar  5 10:09:19 2008
@@ -12,7 +12,7 @@
 #
 ##############################################################################
 
-__version__ = '0.2'
+__version__ = '0.3'
 
 import os
 


More information about the Repoze-checkins mailing list