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 2013/10/14 18:06:30 UTC

svn commit: r1531959 - /webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java

Author: coheigea
Date: Mon Oct 14 16:06:29 2013
New Revision: 1531959

URL: http://svn.apache.org/r1531959
Log:
A fix for an AsymmetricBinding IssuedToken case

Modified:
    webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java

Modified: webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java?rev=1531959&r1=1531958&r2=1531959&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java Mon Oct 14 16:06:29 2013
@@ -381,10 +381,18 @@ public class OutboundWSSec {
             if (signatureAlgorithm.contains("hmac-sha")
                 && securityToken.getSecretKey(signatureAlgorithm) != null) {
                 return;
-            } else if (!signatureAlgorithm.contains("hmac-sha")
-                && (securityToken.getPublicKey() != null
-                    || securityToken.getX509Certificates() != null)) {
-                return;
+            } else if (!signatureAlgorithm.contains("hmac-sha") && securityToken.getX509Certificates() != null) {
+                if (securityToken.getSecretKey(signatureAlgorithm) != null) {
+                    return;
+                } else {
+                    // We have certs but no private key set. Use the CallbackHandler
+                    Key key = 
+                        securityProperties.getSignatureCrypto().getPrivateKey(
+                            securityToken.getX509Certificates()[0], securityProperties.getCallbackHandler()
+                        );
+                    securityToken.setSecretKey(signatureAlgorithm, key);
+                    return;
+                }
             }
         }