Here is a patch for the identity module which will allow the passwords to be stored in the database using either md5 or sha encryption. All that's required is to put a 'identity.encryption="(md5|sha)"' in your config file. If you put nothing, the behavior is the same as it was. I've tested it using clear passwords, md5, and sha. Is this something anyone is interested in? (Oh, since I'm doing a hexdigest rather than a plain digest, I had to up the password length to 40 - it should be 20 if I had done plain digest.)



Index: model/somodel.py
===================================================================
--- model/somodel.py    (revision 341)
+++ model/somodel.py    (working copy)
@@ -54,7 +54,7 @@
     userId= UnicodeCol( length=16, alternateID=True )
     emailAddress= UnicodeCol( length=255, alternateID=True )
     displayName= UnicodeCol( length=255 )
-    password= UnicodeCol( length=16 )
+    password= UnicodeCol( length=40 )
     created= DateTimeCol( default=datetime.now )

     # groups this user belongs to
Index: provider/soprovider.py
===================================================================
--- provider/soprovider.py      (revision 341)
+++ provider/soprovider.py      (working copy)
@@ -1,5 +1,6 @@
 import cherrypy
 import sha
+import md5
 import datetime
 import random

@@ -59,6 +60,13 @@
         '''
         try:
             user= self.userClass.byUserId( userId )
+
+ encryption_algorithm = cherrypy.config.get("identity.encryption")
+            if encryption_algorithm == "md5":
+                password = md5.new(password).hexdigest()
+            elif encryption_algorithm == "sha":
+                password = sha.new(password).hexdigest()
+
             if (user.password!=password):
                 return None

Reply via email to