Author: ritchiem
Date: Mon Apr  2 03:50:06 2007
New Revision: 524763

URL: http://svn.apache.org/viewvc?view=rev&rev=524763
Log:
Added verify password method to PrincipalDatabase

Modified:
    
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java
    
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
    
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java
    
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
    
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java

Modified: 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
--- 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java
 (original)
+++ 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/MD5PasswordFilePrincipalDatabase.java
 Mon Apr  2 03:50:06 2007
@@ -67,7 +67,7 @@
         cram.initialise(this);
         // Accept Plain incomming and hash it for comparison to the file.
         CRAMMD5Initialiser plain = new CRAMMD5Initialiser();
-        plain.initialise(this,CRAMMD5Initialiser.HashDirection.INCOMMING);     
   
+        plain.initialise(this, CRAMMD5Initialiser.HashDirection.INCOMMING);
 
         _saslServers.put(plain.getMechanismName(), cram);
         _saslServers.put(cram.getMechanismName(), plain);
@@ -111,10 +111,40 @@
         }
     }
 
+    public boolean verifyPassword(Principal principal, char[] password) throws 
AccountNotFoundException
+    {
+        try
+        {
+            char[] pwd = lookupPassword(principal.getName());
+            return compareCharArray(pwd, password);
+        }
+        catch (IOException e)
+        {
+            return false;
+        }
+    }
+
     public Map<String, AuthenticationProviderInitialiser> getMechanisms()
     {
         return _saslServers;
     }
+
+    private boolean compareCharArray(char[] a, char[] b)
+    {
+        boolean equal = false;
+        if (a.length == b.length)
+        {
+            equal = true;
+            int index = 0;
+            while (equal && index < a.length)
+            {
+                equal = a[index] == b[index];
+                index++;
+            }
+        }
+        return equal;
+    }
+
 
     /**
      * Looks up the password for a specified user in the password file. Note 
this code is <b>not</b> secure since it

Modified: 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
--- 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
 (original)
+++ 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
 Mon Apr  2 03:50:06 2007
@@ -119,9 +119,38 @@
         }
     }
 
+    public boolean verifyPassword(Principal principal, char[] password) throws 
AccountNotFoundException
+    {
+        try
+        {
+            char[] pwd = lookupPassword(principal.getName());
+            return compareCharArray(pwd, password);
+        }
+        catch (IOException e)
+        {
+            return false;
+        }
+    }
+
     public Map<String, AuthenticationProviderInitialiser> getMechanisms()
     {
         return _saslServers;
+    }
+
+    private boolean compareCharArray(char[] a, char[] b)
+    {
+        boolean equal = false;
+        if (a.length == b.length)
+        {
+            equal = true;
+            int index = 0;
+            while (equal && index < a.length)
+            {
+                equal = a[index] == b[index];
+                index++;
+            }
+        }
+        return equal;
     }
 
 

Modified: 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
--- 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java
 (original)
+++ 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordVhostFilePrincipalDatabase.java
 Mon Apr  2 03:50:06 2007
@@ -126,4 +126,5 @@
     {
         return "PlainPasswordVhostFile";
     }
+    
 }

Modified: 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
--- 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
 (original)
+++ 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
 Mon Apr  2 03:50:06 2007
@@ -46,5 +46,19 @@
     void setPassword(Principal principal, PasswordCallback callback)
             throws IOException, AccountNotFoundException;
 
+       /**
+     * Set the password for a given principal in the specified callback. This 
is used for certain SASL providers. The
+     * user database implementation should look up the password in any way it 
chooses and set it in the callback by
+     * calling its setPassword method.
+     *
+     * @param principal the principal
+     * @param password  the password to be verified
+     *
+     * @throws AccountNotFoundException if the account for specified principal 
could not be found
+     * @return true if the account is verified.
+     */
+    boolean verifyPassword(Principal principal, char[] password)
+            throws AccountNotFoundException;
+
     public Map<String, AuthenticationProviderInitialiser> getMechanisms();
 }

Modified: 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java?view=diff&rev=524763&r1=524762&r2=524763
==============================================================================
--- 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java
 (original)
+++ 
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PropertiesPrincipalDatabase.java
 Mon Apr  2 03:50:06 2007
@@ -76,6 +76,29 @@
         }
     }
 
+    public boolean verifyPassword(Principal principal, char[] password) throws 
AccountNotFoundException
+    {
+        char[] pwd = _users.getProperty(principal.getName()).toCharArray();
+
+        return compareCharArray(pwd, password);
+    }
+
+    private boolean compareCharArray(char[] a, char[] b)
+    {
+        boolean equal = false;
+        if (a.length == b.length)
+        {
+            equal = true;
+            int index = 0;
+            while (equal && index < a.length)
+            {
+                equal = a[index] == b[index];
+                index++;
+            }
+        }
+        return equal;
+    }
+
     public Map<String, AuthenticationProviderInitialiser> getMechanisms()
     {
         return _saslServers;


Reply via email to