You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by co...@apache.org on 2014/09/10 11:40:52 UTC

svn commit: r1623958 - /webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/JasyptPasswordEncryptor.java

Author: coheigea
Date: Wed Sep 10 09:40:52 2014
New Revision: 1623958

URL: http://svn.apache.org/r1623958
Log:
Delay asking a CallbackHandler for a password for the JasyptPasswordEncryptor until it is actually needed

Modified:
    webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/JasyptPasswordEncryptor.java

Modified: webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/JasyptPasswordEncryptor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/JasyptPasswordEncryptor.java?rev=1623958&r1=1623957&r2=1623958&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/JasyptPasswordEncryptor.java (original)
+++ webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/JasyptPasswordEncryptor.java Wed Sep 10 09:40:52 2014
@@ -41,6 +41,7 @@ public class JasyptPasswordEncryptor imp
         org.slf4j.LoggerFactory.getLogger(JasyptPasswordEncryptor.class);
     
     private final StandardPBEStringEncryptor passwordEncryptor;
+    private CallbackHandler callbackHandler;
     
     public JasyptPasswordEncryptor(String masterPassword) {
         this(masterPassword, DEFAULT_ALGORITHM);
@@ -59,19 +60,7 @@ public class JasyptPasswordEncryptor imp
     public JasyptPasswordEncryptor(CallbackHandler callbackHandler, String algorithm) {
         passwordEncryptor = new StandardPBEStringEncryptor();
         passwordEncryptor.setAlgorithm(algorithm);
-        
-        WSPasswordCallback pwCb = 
-            new WSPasswordCallback("", WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD);
-        try {
-            callbackHandler.handle(new Callback[]{pwCb});
-        } catch (IOException e) {
-            LOG.debug("Error in getting master password: ", e);
-        } catch (UnsupportedCallbackException e) {
-            LOG.debug("Error in getting master password: ", e);
-        }
-        if (pwCb.getPassword() != null) {
-            passwordEncryptor.setPassword(pwCb.getPassword());
-        }
+        this.callbackHandler = callbackHandler;
     }
 
     /**
@@ -80,6 +69,20 @@ public class JasyptPasswordEncryptor imp
      * @return the encrypted password
      */
     public String encrypt(String password) {
+        if (callbackHandler != null) {
+            WSPasswordCallback pwCb = 
+                new WSPasswordCallback("", WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD);
+            try {
+                callbackHandler.handle(new Callback[]{pwCb});
+            } catch (IOException e) {
+                LOG.debug("Error in getting master password: ", e);
+            } catch (UnsupportedCallbackException e) {
+                LOG.debug("Error in getting master password: ", e);
+            }
+            if (pwCb.getPassword() != null) {
+                passwordEncryptor.setPassword(pwCb.getPassword());
+            }
+        }
         return passwordEncryptor.encrypt(password);
     }
     
@@ -89,6 +92,20 @@ public class JasyptPasswordEncryptor imp
      * @return the decrypted password
      */
     public String decrypt(String encryptedPassword) {
+        if (callbackHandler != null) {
+            WSPasswordCallback pwCb = 
+                new WSPasswordCallback("", WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD);
+            try {
+                callbackHandler.handle(new Callback[]{pwCb});
+            } catch (IOException e) {
+                LOG.debug("Error in getting master password: ", e);
+            } catch (UnsupportedCallbackException e) {
+                LOG.debug("Error in getting master password: ", e);
+            }
+            if (pwCb.getPassword() != null) {
+                passwordEncryptor.setPassword(pwCb.getPassword());
+            }
+        }
         return passwordEncryptor.decrypt(encryptedPassword);
     }