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(