You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wss4j-dev@ws.apache.org by dk...@apache.org on 2009/02/24 22:57:10 UTC

svn commit: r747563 - in /webservices/wss4j/trunk/src/org/apache/ws/security: WSConstants.java message/WSSecEncrypt.java message/WSSecSignature.java

Author: dkulp
Date: Tue Feb 24 21:57:09 2009
New Revision: 747563

URL: http://svn.apache.org/viewvc?rev=747563&view=rev
Log:
[WSS-163, WSS-164] Add some flags/apis to enable creating refs to keys by direct identifier and set value type on encryption key refs

Modified:
    webservices/wss4j/trunk/src/org/apache/ws/security/WSConstants.java
    webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecEncrypt.java
    webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSignature.java

Modified: webservices/wss4j/trunk/src/org/apache/ws/security/WSConstants.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/org/apache/ws/security/WSConstants.java?rev=747563&r1=747562&r2=747563&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/WSConstants.java (original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/WSConstants.java Tue Feb 24 21:57:09 2009
@@ -386,6 +386,14 @@
      */
     public static final int ENCRYPTED_KEY_SHA1_IDENTIFIER = 10;
     
+    /**
+     * <code>CUSTOM_SYMM_SIGNING_DIRECT</code> is used internally only to set a 
+     * specific Signature behavior.
+     * 
+     * The signing key, reference id and value type are set externally. 
+     */
+    public static final int CUSTOM_SYMM_SIGNING_DIRECT = 11;
+    
     
     public static final String ENCRYPTED_HEADER = "EncryptedHeader";
 

Modified: webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecEncrypt.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecEncrypt.java?rev=747563&r1=747562&r2=747563&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecEncrypt.java (original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecEncrypt.java Tue Feb 24 21:57:09 2009
@@ -86,6 +86,16 @@
      * Custom reference value
      */
     private String customReferenceValue;
+    
+    /**
+     * ValueType for the encrypted key reference
+     */
+    private String encKeyValueType;
+    
+    /**
+     * True if the encKeyId is a direct reference to a key identifier instead of a URI to a key
+     */
+    private boolean encKeyIdDirectId;
 
     /**
      * Constructor.
@@ -513,7 +523,14 @@
                 keyInfo = new KeyInfo(document);
                 SecurityTokenReference secToken = new SecurityTokenReference(document);
                 Reference ref = new Reference(document);
-                ref.setURI("#" + encKeyId);
+                if (encKeyIdDirectId) {
+                    ref.setURI(encKeyId);
+                } else {
+                    ref.setURI("#" + encKeyId);                    
+                }
+                if (encKeyValueType != null) {
+                    ref.setValueType(encKeyValueType);
+                }
                 secToken.setReference(ref);
                 keyInfo.addUnknownElement(secToken.getElement());
                 Element keyInfoElement = keyInfo.getElement();
@@ -770,4 +787,10 @@
         this.customReferenceValue = customReferenceValue;
     }
     
+    public void setEncKeyValueType(String e) {
+        encKeyValueType = e;
+    }
+    public void setEncKeyIdDirectId(boolean b) {
+        encKeyIdDirectId = b;
+    }
 }

Modified: webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSignature.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSignature.java?rev=747563&r1=747562&r2=747563&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSignature.java (original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/message/WSSecSignature.java Tue Feb 24 21:57:09 2009
@@ -309,6 +309,7 @@
         X509Certificate[] certs = null;
         if (keyIdentifierType != WSConstants.UT_SIGNING
                 && keyIdentifierType != WSConstants.CUSTOM_SYMM_SIGNING
+                && keyIdentifierType != WSConstants.CUSTOM_SYMM_SIGNING_DIRECT
                   && keyIdentifierType != WSConstants.ENCRYPTED_KEY_SHA1_IDENTIFIER) {
             certs = crypto.getCertificates(user);
             if (certs == null || certs.length <= 0) {
@@ -454,6 +455,12 @@
             refCust.setURI("#" + this.customTokenId);
             secRef.setReference(refCust);
             break;
+        case WSConstants.CUSTOM_SYMM_SIGNING_DIRECT :
+            Reference refCustd = new Reference(document);
+            refCustd.setValueType(this.customTokenValueType);
+            refCustd.setURI(this.customTokenId);
+            secRef.setReference(refCustd);
+            break;
         default:
             throw new WSSecurityException(WSSecurityException.FAILURE,
                     "unsupportedKeyId");
@@ -698,6 +705,7 @@
         try {
             if (keyIdentifierType == WSConstants.UT_SIGNING ||
                     keyIdentifierType == WSConstants.CUSTOM_SYMM_SIGNING ||
+                    keyIdentifierType == WSConstants.CUSTOM_SYMM_SIGNING_DIRECT ||
                       keyIdentifierType == WSConstants.ENCRYPTED_KEY_SHA1_IDENTIFIER) {
                 sig.sign(sig.createSecretKey(secretKey));
             } else {



---------------------------------------------------------------------
To unsubscribe, e-mail: wss4j-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wss4j-dev-help@ws.apache.org