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 2017/03/24 11:38:57 UTC

svn commit: r1788412 - in /webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom: message/ processor/

Author: coheigea
Date: Fri Mar 24 11:38:57 2017
New Revision: 1788412

URL: http://svn.apache.org/viewvc?rev=1788412&view=rev
Log:
WSS-558 - org.apache.ws.security.message.WSSecSignature can't support custom provider

Modified:
    webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java
    webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncryptedKey.java
    webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java
    webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedKeyProcessor.java
    webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SAMLTokenProcessor.java
    webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java

Modified: webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java?rev=1788412&r1=1788411&r2=1788412&view=diff
==============================================================================
--- webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java (original)
+++ webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecDKSign.java Fri Mar 24 11:38:57 2017
@@ -20,6 +20,7 @@
 package org.apache.wss4j.dom.message;
 
 import java.security.NoSuchProviderException;
+import java.security.Provider;
 import java.util.List;
 
 import javax.xml.crypto.XMLStructure;
@@ -78,17 +79,25 @@ public class WSSecDKSign extends WSSecDe
     private boolean addInclusivePrefixes = true;
 
     public WSSecDKSign() {
+        this(null);
+    }
+
+    public WSSecDKSign(Provider provider) {
         super();
-        init();
+        init(provider);
     }
 
-    private void init() {
-        // Try to install the Santuario Provider - fall back to the JDK provider if this does
-        // not work
-        try {
-            signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
-        } catch (NoSuchProviderException ex) {
-            signatureFactory = XMLSignatureFactory.getInstance("DOM");
+    private void init(Provider provider) {
+        if (provider == null) {
+            // Try to install the Santuario Provider - fall back to the JDK provider if this does
+            // not work
+            try {
+                signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
+            } catch (NoSuchProviderException ex) {
+                signatureFactory = XMLSignatureFactory.getInstance("DOM");
+            }
+        } else {
+            signatureFactory = XMLSignatureFactory.getInstance("DOM", provider);
         }
     }
 

Modified: webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncryptedKey.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncryptedKey.java?rev=1788412&r1=1788411&r2=1788412&view=diff
==============================================================================
--- webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncryptedKey.java (original)
+++ webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncryptedKey.java Fri Mar 24 11:38:57 2017
@@ -22,6 +22,7 @@ package org.apache.wss4j.dom.message;
 import java.security.InvalidAlgorithmParameterException;
 import java.security.InvalidKeyException;
 import java.security.NoSuchProviderException;
+import java.security.Provider;
 import java.security.PublicKey;
 import java.security.cert.X509Certificate;
 import java.security.spec.MGF1ParameterSpec;
@@ -146,9 +147,15 @@ public class WSSecEncryptedKey extends W
     private boolean bstAddedToSecurityHeader;
     private boolean includeEncryptionToken;
     private Element customEKKeyInfoElement;
+    private Provider provider;
 
     public WSSecEncryptedKey() {
+        this(null);
+    }
+
+    public WSSecEncryptedKey(Provider provider) {
         super();
+        this.provider = provider;
     }
 
     /**
@@ -539,10 +546,16 @@ public class WSSecEncryptedKey extends W
             default:
                 try {
                     XMLSignatureFactory signatureFactory;
-                    try {
-                        signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
-                    } catch (NoSuchProviderException ex) {
-                        signatureFactory = XMLSignatureFactory.getInstance("DOM");
+                    if (provider == null) {
+                        // Try to install the Santuario Provider - fall back to the JDK provider if this does
+                        // not work
+                        try {
+                            signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
+                        } catch (NoSuchProviderException ex) {
+                            signatureFactory = XMLSignatureFactory.getInstance("DOM");
+                        }
+                    } else {
+                        signatureFactory = XMLSignatureFactory.getInstance("DOM", provider);
                     }
                     
                     KeyInfoFactory keyInfoFactory = signatureFactory.getKeyInfoFactory();

Modified: webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java?rev=1788412&r1=1788411&r2=1788412&view=diff
==============================================================================
--- webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java (original)
+++ webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecSignature.java Fri Mar 24 11:38:57 2017
@@ -20,6 +20,7 @@
 package org.apache.wss4j.dom.message;
 
 import java.security.NoSuchProviderException;
+import java.security.Provider;
 import java.security.cert.CertificateEncodingException;
 import java.security.cert.X509Certificate;
 import java.util.List;
@@ -109,17 +110,25 @@ public class WSSecSignature extends WSSe
     private boolean addInclusivePrefixes = true;
 
     public WSSecSignature() {
+        this(null);
+    }
+
+    public WSSecSignature(Provider provider) {
         super();
-        init();
+        init(provider);
     }
 
-    private void init() {
-        // Try to install the Santuario Provider - fall back to the JDK provider if this does
-        // not work
-        try {
-            signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
-        } catch (NoSuchProviderException ex) {
-            signatureFactory = XMLSignatureFactory.getInstance("DOM");
+    private void init(Provider provider) {
+        if (provider == null) {
+            // Try to install the Santuario Provider - fall back to the JDK provider if this does
+            // not work
+            try {
+                signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
+            } catch (NoSuchProviderException ex) {
+                signatureFactory = XMLSignatureFactory.getInstance("DOM");
+            }
+        } else {
+            signatureFactory = XMLSignatureFactory.getInstance("DOM", provider);
         }
     }
 

Modified: webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedKeyProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedKeyProcessor.java?rev=1788412&r1=1788411&r2=1788412&view=diff
==============================================================================
--- webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedKeyProcessor.java (original)
+++ webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/EncryptedKeyProcessor.java Fri Mar 24 11:38:57 2017
@@ -25,6 +25,7 @@ import java.io.InputStream;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchProviderException;
 import java.security.PrivateKey;
+import java.security.Provider;
 import java.security.PublicKey;
 import java.security.cert.X509Certificate;
 import java.security.spec.MGF1ParameterSpec;
@@ -73,6 +74,16 @@ public class EncryptedKeyProcessor imple
     private static final org.slf4j.Logger LOG =
         org.slf4j.LoggerFactory.getLogger(EncryptedKeyProcessor.class);
 
+    private Provider provider;
+
+    public EncryptedKeyProcessor() {
+        // complete
+    }
+
+    public EncryptedKeyProcessor(Provider provider) {
+        this.provider = provider;
+    }
+
     public List<WSSecurityEngineResult> handleToken(
         Element elem,
         RequestData data,
@@ -160,10 +171,16 @@ public class EncryptedKeyProcessor imple
                 certs = getCertificatesFromX509Data(keyInfoChildElement, data);
                 if (certs == null) {
                     XMLSignatureFactory signatureFactory;
-                    try {
-                        signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
-                    } catch (NoSuchProviderException ex) {
-                        signatureFactory = XMLSignatureFactory.getInstance("DOM");
+                    if (provider == null) {
+                        // Try to install the Santuario Provider - fall back to the JDK provider if this does
+                        // not work
+                        try {
+                            signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
+                        } catch (NoSuchProviderException ex) {
+                            signatureFactory = XMLSignatureFactory.getInstance("DOM");
+                        }
+                    } else {
+                        signatureFactory = XMLSignatureFactory.getInstance("DOM", provider);
                     }
                     
                     publicKey = X509Util.parseKeyValue((Element)keyInfoChildElement.getParentNode(), 

Modified: webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SAMLTokenProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SAMLTokenProcessor.java?rev=1788412&r1=1788411&r2=1788412&view=diff
==============================================================================
--- webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SAMLTokenProcessor.java (original)
+++ webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SAMLTokenProcessor.java Fri Mar 24 11:38:57 2017
@@ -20,6 +20,7 @@
 package org.apache.wss4j.dom.processor;
 
 import java.security.NoSuchProviderException;
+import java.security.Provider;
 import java.security.PublicKey;
 import java.util.ArrayList;
 import java.util.List;
@@ -60,12 +61,24 @@ public class SAMLTokenProcessor implemen
     private XMLSignatureFactory signatureFactory;
 
     public SAMLTokenProcessor() {
-        // Try to install the Santuario Provider - fall back to the JDK provider if this does
-        // not work
-        try {
-            signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
-        } catch (NoSuchProviderException ex) {
-            signatureFactory = XMLSignatureFactory.getInstance("DOM");
+        init(null);
+    }
+
+    public SAMLTokenProcessor(Provider provider) {
+        init(provider);
+    }
+
+    private void init(Provider provider) {
+        if (provider == null) {
+            // Try to install the Santuario Provider - fall back to the JDK provider if this does
+            // not work
+            try {
+                signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
+            } catch (NoSuchProviderException ex) {
+                signatureFactory = XMLSignatureFactory.getInstance("DOM");
+            }
+        } else {
+            signatureFactory = XMLSignatureFactory.getInstance("DOM", provider);
         }
     }
 

Modified: webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java?rev=1788412&r1=1788411&r2=1788412&view=diff
==============================================================================
--- webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java (original)
+++ webservices/wss4j/branches/2_1_x-fixes/ws-security-dom/src/main/java/org/apache/wss4j/dom/processor/SignatureProcessor.java Fri Mar 24 11:38:57 2017
@@ -22,6 +22,7 @@ package org.apache.wss4j.dom.processor;
 import java.security.Key;
 import java.security.NoSuchProviderException;
 import java.security.Principal;
+import java.security.Provider;
 import java.security.PublicKey;
 import java.security.cert.X509Certificate;
 import java.security.spec.AlgorithmParameterSpec;
@@ -95,12 +96,24 @@ public class SignatureProcessor implemen
     private XMLSignatureFactory signatureFactory;
 
     public SignatureProcessor() {
-        // Try to install the Santuario Provider - fall back to the JDK provider if this does
-        // not work
-        try {
-            signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
-        } catch (NoSuchProviderException ex) {
-            signatureFactory = XMLSignatureFactory.getInstance("DOM");
+        init(null);
+    }
+
+    public SignatureProcessor(Provider provider) {
+        init(provider);
+    }
+
+    private void init(Provider provider) {
+        if (provider == null) {
+            // Try to install the Santuario Provider - fall back to the JDK provider if this does
+            // not work
+            try {
+                signatureFactory = XMLSignatureFactory.getInstance("DOM", "ApacheXMLDSig");
+            } catch (NoSuchProviderException ex) {
+                signatureFactory = XMLSignatureFactory.getInstance("DOM");
+            }
+        } else {
+            signatureFactory = XMLSignatureFactory.getInstance("DOM", provider);
         }
     }