[jboss-svn-commits] JBossWS SVN: r878 - trunk/src/main/java/org/jboss/ws/wsse

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Sep 1 05:23:26 EDT 2006


Author: thomas.diesler at jboss.com
Date: 2006-09-01 05:23:24 -0400 (Fri, 01 Sep 2006)
New Revision: 878

Modified:
   trunk/src/main/java/org/jboss/ws/wsse/SecurityStore.java
Log:
Error handling, debugging

Modified: trunk/src/main/java/org/jboss/ws/wsse/SecurityStore.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/wsse/SecurityStore.java	2006-09-01 09:11:50 UTC (rev 877)
+++ trunk/src/main/java/org/jboss/ws/wsse/SecurityStore.java	2006-09-01 09:23:24 UTC (rev 878)
@@ -21,6 +21,8 @@
  */
 package org.jboss.ws.wsse;
 
+// $Id: $
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.InputStream;
@@ -129,28 +131,51 @@
       if (storeType == null)
          storeType = "jks";
 
-      storePassword = getPassword(storePassword);
+      KeyStore keyStore = null; 
       try
       {
          log.debug("loadStore: " + storeURL);
          InputStream stream = storeURL.openStream();
-         KeyStore keyStore = KeyStore.getInstance(storeType);
-         keyStore.load(stream, storePassword.toCharArray());
-
-         return keyStore;
+         if (stream == null)
+            throw new WSSecurityException("Cannot load store from: " + storeURL);
+         
+         keyStore = KeyStore.getInstance(storeType);
+         if (keyStore == null)
+            throw new WSSecurityException("Cannot get keystore for type: " + storeType);
+         
+         String decryptedPassword = decryptPassword(storePassword);
+         if (decryptedPassword == null)
+            throw new WSSecurityException("Cannot decrypt store password");
+         
+         keyStore.load(stream, decryptedPassword.toCharArray());
       }
-      catch (Exception e)
+      catch (RuntimeException rte)
       {
-         throw new WSSecurityException("Problems loading " + type + ": " + e.getMessage(), e);
+         throw rte;
       }
+      catch (WSSecurityException ex)
+      {
+         throw ex;
+      }
+      catch (Exception ex)
+      {
+         throw new WSSecurityException("Problems loading " + type + ": " + ex.getMessage(), ex);
+      }
+      
+      return keyStore;
    }
 
    /**
     * This method examines the password for the presence of a encryption algorithm, if found
     * decrypts and returns the password, else returns the password as is.
     */
-   private String getPassword(String password) throws WSSecurityException
+   private String decryptPassword(String password) throws WSSecurityException
    {
+      log.trace("decrypt password: " + password);
+      
+      if (password == null)
+         throw new WSSecurityException("Invalid null password for security store");
+      
       if (password.charAt(0) == '{')
       {
          StringTokenizer tokenizer = new StringTokenizer(password, "{}");
@@ -169,7 +194,10 @@
             throw new WSSecurityException("Unknown keyStorePasswordCmdType: " + keyStorePasswordCmdType);
          }
       }
-
+      if (password == null)
+         throw new WSSecurityException("Cannot decrypt password, result is null");
+      
+      log.trace("decrypted password: " + password);
       return password;
    }
 
@@ -361,7 +389,7 @@
       PrivateKey key;
       try
       {
-         key = (PrivateKey)keyStore.getKey(alias, getPassword(keyStorePassword).toCharArray());
+         key = (PrivateKey)keyStore.getKey(alias, decryptPassword(keyStorePassword).toCharArray());
       }
       catch (Exception e)
       {




More information about the jboss-svn-commits mailing list