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/08/27 12:08:03 UTC

svn commit: r1620847 - in /webservices/wss4j/trunk: ws-security-common/src/main/java/org/apache/wss4j/common/crypto/ ws-security-dom/src/test/java/org/apache/wss4j/dom/components/crypto/ ws-security-dom/src/test/resources/

Author: coheigea
Date: Wed Aug 27 10:08:03 2014
New Revision: 1620847

URL: http://svn.apache.org/r1620847
Log:
Fixing a bug in loading MerlinDevice

Added:
    webservices/wss4j/trunk/ws-security-dom/src/test/resources/crypto_device.properties
Modified:
    webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoFactory.java
    webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/MerlinDevice.java
    webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/components/crypto/CryptoTest.java

Modified: webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoFactory.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoFactory.java?rev=1620847&r1=1620846&r2=1620847&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoFactory.java (original)
+++ webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoFactory.java Wed Aug 27 10:08:03 2014
@@ -216,9 +216,17 @@ public abstract class CryptoFactory {
             LOG.debug("Using Crypto Engine [" + cryptoClass + "]");
         }
         try {
-            Class<?>[] classes = new Class[]{Map.class, ClassLoader.class};
-            Constructor<? extends Crypto> c = cryptoClass.getConstructor(classes);
-            return c.newInstance(map, loader);
+            Constructor<? extends Crypto> c = null;
+            try {
+                Class<?>[] classes = new Class[]{Map.class, ClassLoader.class};
+                c = cryptoClass.getConstructor(classes);
+                return c.newInstance(map, loader);
+            } catch (NoSuchMethodException ex) {
+                Class<?>[] classes = 
+                    new Class[]{Properties.class, Map.class, PasswordEncryptor.class};
+                c = cryptoClass.getConstructor(classes);
+                return c.newInstance(map, loader, null);
+            }
         } catch (java.lang.Exception e) {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Unable to instantiate: " + cryptoClass.getName(), e);
@@ -244,9 +252,17 @@ public abstract class CryptoFactory {
             LOG.debug("Using Crypto Engine [" + cryptoClass + "]");
         }
         try {
-            Class<?>[] classes = new Class[]{Properties.class, ClassLoader.class};
-            Constructor<? extends Crypto> c = cryptoClass.getConstructor(classes);
-            return c.newInstance(map, loader);
+            Constructor<? extends Crypto> c = null;
+            try {
+                Class<?>[] classes = new Class[]{Properties.class, ClassLoader.class};
+                c = cryptoClass.getConstructor(classes);
+                return c.newInstance(map, loader);
+            } catch (NoSuchMethodException ex) {
+                Class<?>[] classes = 
+                    new Class[]{Properties.class, ClassLoader.class, PasswordEncryptor.class};
+                c = cryptoClass.getConstructor(classes);
+                return c.newInstance(map, loader, null);
+            }
         } catch (java.lang.Exception e) {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Unable to instantiate: " + cryptoClass.getName(), e);

Modified: webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/MerlinDevice.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/MerlinDevice.java?rev=1620847&r1=1620846&r2=1620847&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/MerlinDevice.java (original)
+++ webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/MerlinDevice.java Wed Aug 27 10:08:03 2014
@@ -43,6 +43,14 @@ public class MerlinDevice extends Merlin
         org.slf4j.LoggerFactory.getLogger(MerlinDevice.class);
     private static final boolean DO_DEBUG = LOG.isDebugEnabled();
 
+    public MerlinDevice() {
+        super();
+    }
+    
+    public MerlinDevice(Properties properties, ClassLoader loader, PasswordEncryptor passwordEncryptor) 
+        throws WSSecurityException, IOException {
+        super(properties, loader, passwordEncryptor);
+    }
     
     @Override
     public void loadProperties(Properties properties, ClassLoader loader,  PasswordEncryptor passwordEncryptor) 

Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/components/crypto/CryptoTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/components/crypto/CryptoTest.java?rev=1620847&r1=1620846&r2=1620847&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/components/crypto/CryptoTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/wss4j/dom/components/crypto/CryptoTest.java Wed Aug 27 10:08:03 2014
@@ -21,6 +21,7 @@ package org.apache.wss4j.dom.components.
 
 import java.io.InputStream;
 import java.security.KeyStore;
+import java.util.Properties;
 
 import org.apache.wss4j.dom.WSConstants;
 import org.apache.wss4j.dom.WSSConfig;
@@ -136,6 +137,24 @@ public class CryptoTest extends org.juni
         }
     }
     
+    @org.junit.Test
+    public void testCryptoFactoryMerlin() throws Exception {
+        ClassLoader classLoader = this.getClass().getClassLoader();
+        Properties properties = CryptoFactory.getProperties("crypto.properties", classLoader);
+        Crypto crypto = 
+            CryptoFactory.getInstance(properties, classLoader, null);
+        assertTrue(crypto instanceof Merlin);
+    }
+    
+    @org.junit.Test
+    public void testCryptoFactoryMerlinDevice() throws Exception {
+        ClassLoader classLoader = this.getClass().getClassLoader();
+        Properties properties = CryptoFactory.getProperties("crypto_device.properties", classLoader);
+        Crypto crypto = 
+            CryptoFactory.getInstance(properties, classLoader, null);
+        assertTrue(crypto instanceof Merlin);
+    }
+    
     /**
      * WSS-102 -- ensure Merlin will null properties
      * can be instantiated

Added: webservices/wss4j/trunk/ws-security-dom/src/test/resources/crypto_device.properties
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/resources/crypto_device.properties?rev=1620847&view=auto
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/resources/crypto_device.properties (added)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/resources/crypto_device.properties Wed Aug 27 10:08:03 2014
@@ -0,0 +1,5 @@
+org.apache.wss4j.crypto.provider=org.apache.wss4j.common.crypto.MerlinDevice
+org.apache.wss4j.crypto.merlin.keystore.type=pkcs12
+org.apache.wss4j.crypto.merlin.keystore.password=security
+org.apache.wss4j.crypto.merlin.keystore.alias=16c73ab6-b892-458f-abf5-2f875f74882e
+org.apache.wss4j.crypto.merlin.keystore.file=keys/x509.PFX.MSFT