Author: coheigea
Date: Mon Nov 25 16:24:55 2013
New Revision: 1545335

URL: http://svn.apache.org/r1545335
Log:
[WSS-485] - Patch applied
 - Thanks to Andrei Shakirin for the patch

Modified:
    
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoType.java
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSConstants.java
    
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncrypt.java

Modified: 
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoType.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoType.java?rev=1545335&r1=1545334&r2=1545335&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoType.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/crypto/CryptoType.java
 Mon Nov 25 16:24:55 2013
@@ -37,7 +37,7 @@ public class CryptoType {
      * specific, for example - it could be a java KeyStore alias.
      */
     public enum TYPE {
-        ISSUER_SERIAL, THUMBPRINT_SHA1, SKI_BYTES, SUBJECT_DN, ALIAS
+        ISSUER_SERIAL, THUMBPRINT_SHA1, SKI_BYTES, SUBJECT_DN, ALIAS, ENDPOINT
     }
     
     private TYPE type;
@@ -46,6 +46,7 @@ public class CryptoType {
     private byte[] bytes;
     private String subjectDN;
     private String alias;
+    private String endpoint;
     
     /**
      * Default constructor
@@ -151,5 +152,21 @@ public class CryptoType {
     public String getAlias() {
         return alias;
     }
+
+    /**
+     * Set the endpoint to locate certificate.
+     * @param endpoint to locate.
+     */
+    public void setEndpoint(String endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    /**
+     * Get the endpoint to locate certificate.
+     * @return endpoint to locate certificate.
+     */
+    public String getEndpoint() {
+        return endpoint;
+    }
     
 }

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSConstants.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSConstants.java?rev=1545335&r1=1545334&r2=1545335&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSConstants.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/WSConstants.java
 Mon Nov 25 16:24:55 2013
@@ -459,6 +459,15 @@ public final class WSConstants {
      */
     public static final int KEY_VALUE = 13;
     
+    /**
+     * <code>ENDPOINT_KEY_IDENTIFIER</code> is used to specify service 
endpoint as public key 
+     * identifier.
+     * 
+     * Constant is useful in case of symmetric holder of key, where token 
service can determine 
+     * target service public key to encrypt shared secret. 
+     */
+    public static final int ENDPOINT_KEY_IDENTIFIER = 14;
+
     /*
      * The following values are bits that can be combined to for a set.
      * Be careful when selecting new values.

Modified: 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncrypt.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncrypt.java?rev=1545335&r1=1545334&r2=1545335&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncrypt.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/wss4j/dom/message/WSSecEncrypt.java
 Mon Nov 25 16:24:55 2013
@@ -151,8 +151,14 @@ public class WSSecEncrypt extends WSSecE
         if (encryptSymmKey) {
             X509Certificate remoteCert = useThisCert;
             if (remoteCert == null) {
-                CryptoType cryptoType = new CryptoType(CryptoType.TYPE.ALIAS);
-                cryptoType.setAlias(user);
+                CryptoType cryptoType = null;
+                if (keyIdentifierType == WSConstants.ENDPOINT_KEY_IDENTIFIER) {
+                    cryptoType = new CryptoType(CryptoType.TYPE.ENDPOINT);
+                    cryptoType.setEndpoint(user);
+                } else {
+                    cryptoType = new CryptoType(CryptoType.TYPE.ALIAS);
+                    cryptoType.setAlias(user);
+                }
                 X509Certificate[] certs = 
crypto.getX509Certificates(cryptoType);
                 if (certs == null || certs.length <= 0) {
                     throw new WSSecurityException(


Reply via email to