You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by na...@apache.org on 2008/01/29 15:34:25 UTC

svn commit: r616344 - in /webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model: ContentEncryptedElements.java RequiredElements.java RequiredParts.java SignedEncryptedParts.java Token.java UsernameToken.java

Author: nandana
Date: Tue Jan 29 06:34:22 2008
New Revision: 616344

URL: http://svn.apache.org/viewvc?rev=616344&view=rev
Log:
rampart-policy related changes to support WS Security Policy 1.2

Added:
    webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/ContentEncryptedElements.java
    webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredElements.java
    webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredParts.java
Modified:
    webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedParts.java
    webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Token.java
    webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/UsernameToken.java

Added: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/ContentEncryptedElements.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/ContentEncryptedElements.java?rev=616344&view=auto
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/ContentEncryptedElements.java (added)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/ContentEncryptedElements.java Tue Jan 29 06:34:22 2008
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ws.secpolicy.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.HashMap;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.SP11Constants;
+import org.apache.ws.secpolicy.SP12Constants;
+import org.apache.ws.secpolicy.SPConstants;
+
+public class ContentEncryptedElements extends AbstractSecurityAssertion {
+
+    private ArrayList xPathExpressions = new ArrayList();
+    
+    private HashMap declaredNamespaces = new HashMap();
+
+    private String xPathVersion;
+
+    public ContentEncryptedElements(int version) {
+        setVersion(version);
+    }
+
+    /**
+     * @return Returns the xPathExpressions.
+     */
+    public ArrayList getXPathExpressions() {
+        return xPathExpressions;
+    }
+
+    public void addXPathExpression(String expr) {
+        this.xPathExpressions.add(expr);
+    }
+
+    /**
+     * @return Returns the xPathVersion.
+     */
+    public String getXPathVersion() {
+        return xPathVersion;
+    }
+
+    /**
+     * @param pathVersion
+     *            The xPathVersion to set.
+     */
+    public void setXPathVersion(String pathVersion) {
+        xPathVersion = pathVersion;
+    }
+    
+    public HashMap getDeclaredNamespaces () {
+        return declaredNamespaces;
+    }
+    
+    public void addDeclaredNamespaces(String uri, String prefix ) {
+        declaredNamespaces.put(prefix, uri);
+    }
+        
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+
+        String localName = getName().getLocalPart();
+        String namespaceURI = getName().getNamespaceURI();
+
+        String prefix;
+        String writerPrefix = writer.getPrefix(namespaceURI);
+
+        if (writerPrefix == null) {
+            prefix = getName().getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        } else {
+            prefix = writerPrefix;
+        }
+
+        //  <sp:ContentEncryptedElements>
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        
+        // xmlns:sp=".."
+        writer.writeNamespace(prefix, namespaceURI);
+
+        if (writerPrefix == null) {
+            // xmlns:sp=".."
+            writer.writeNamespace(prefix, namespaceURI);
+        }
+
+        if (xPathVersion != null) {
+            writer.writeAttribute(prefix, namespaceURI, SPConstants.XPATH_VERSION, xPathVersion);
+        }
+
+        String xpathExpression;
+
+        for (Iterator iterator = xPathExpressions.iterator(); iterator
+                .hasNext();) {
+            xpathExpression = (String) iterator.next();
+            // <sp:XPath ..>
+            writer.writeStartElement(prefix, SPConstants.XPATH_EXPR, namespaceURI);
+            writer.writeCharacters(xpathExpression);
+            writer.writeEndElement();
+        }
+
+        //</sp:ContentEncryptedElements>
+        writer.writeEndElement();
+    }
+
+    public QName getName() {
+        return SP12Constants.CONTENT_ENCRYPTED_ELEMENTS;
+    }
+
+    public PolicyComponent normalize() {
+        return this;
+    }
+}

Added: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredElements.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredElements.java?rev=616344&view=auto
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredElements.java (added)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredElements.java Tue Jan 29 06:34:22 2008
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ws.secpolicy.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.HashMap;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.SP11Constants;
+import org.apache.ws.secpolicy.SP12Constants;
+import org.apache.ws.secpolicy.SPConstants;
+
+public class RequiredElements extends AbstractSecurityAssertion {
+
+    private ArrayList xPathExpressions = new ArrayList();
+    
+    private HashMap declaredNamespaces = new HashMap();
+
+    private String xPathVersion;
+
+    public RequiredElements(int version) {
+        setVersion(version);
+    }
+
+    /**
+     * @return Returns the xPathExpressions.
+     */
+    public ArrayList getXPathExpressions() {
+        return xPathExpressions;
+    }
+
+    public void addXPathExpression(String expr) {
+        this.xPathExpressions.add(expr);
+    }
+
+    /**
+     * @return Returns the xPathVersion.
+     */
+    public String getXPathVersion() {
+        return xPathVersion;
+    }
+
+    /**
+     * @param pathVersion
+     *            The xPathVersion to set.
+     */
+    public void setXPathVersion(String pathVersion) {
+        xPathVersion = pathVersion;
+    }
+    
+    public HashMap getDeclaredNamespaces () {
+        return declaredNamespaces;
+    }
+    
+    public void addDeclaredNamespaces(String uri, String prefix ) {
+        declaredNamespaces.put(prefix, uri);
+    }
+        
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+
+        String localName = getName().getLocalPart();
+        String namespaceURI = getName().getNamespaceURI();
+
+        String prefix;
+        String writerPrefix = writer.getPrefix(namespaceURI);
+
+        if (writerPrefix == null) {
+            prefix = getName().getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        } else {
+            prefix = writerPrefix;
+        }
+
+        //  <sp:RequiredElements>
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        
+        // xmlns:sp=".."
+        writer.writeNamespace(prefix, namespaceURI);
+
+        if (writerPrefix == null) {
+            // xmlns:sp=".."
+            writer.writeNamespace(prefix, namespaceURI);
+        }
+
+        if (xPathVersion != null) {
+            writer.writeAttribute(prefix, namespaceURI, SPConstants.XPATH_VERSION, xPathVersion);
+        }
+
+        String xpathExpression;
+
+        for (Iterator iterator = xPathExpressions.iterator(); iterator
+                .hasNext();) {
+            xpathExpression = (String) iterator.next();
+            // <sp:XPath ..>
+            writer.writeStartElement(prefix, SPConstants.XPATH_EXPR, namespaceURI);
+            writer.writeCharacters(xpathExpression);
+            writer.writeEndElement();
+        }
+
+        //</sp:RequiredElements>
+        writer.writeEndElement();
+    }
+
+    public QName getName() {
+        if (version == SPConstants.SP_V12) {
+            return SP12Constants.REQUIRED_ELEMENTS;
+        } else {
+            return SP11Constants.REQUIRED_ELEMENTS;
+        }      
+    }
+
+    public PolicyComponent normalize() {
+        return this;
+    }
+}

Added: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredParts.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredParts.java?rev=616344&view=auto
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredParts.java (added)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/RequiredParts.java Tue Jan 29 06:34:22 2008
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ws.secpolicy.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.PolicyComponent;
+import org.apache.ws.secpolicy.SP11Constants;
+import org.apache.ws.secpolicy.SP12Constants;
+import org.apache.ws.secpolicy.SPConstants;
+
+public class RequiredParts extends AbstractSecurityAssertion {
+    
+    private ArrayList headers = new ArrayList();
+    
+    public RequiredParts(int version) {
+        setVersion(version);
+    }
+
+    /**
+     * @return Returns the headers.
+     */
+    public ArrayList getHeaders() {
+        return this.headers;
+    }
+
+    /**
+     * @param headers The headers to set.
+     */
+    public void addHeader(Header header) {
+        this.headers.add(header);
+    }
+
+
+    public QName getName() {
+         return SP12Constants.REQUIRED_PARTS;         
+    }
+
+    public PolicyComponent normalize() {
+        return this;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+        String localName = getName().getLocalPart();
+        String namespaceURI = getName().getNamespaceURI();
+
+        String prefix = writer.getPrefix(namespaceURI);
+
+        if (prefix == null) {
+            prefix = getName().getPrefix();
+            writer.setPrefix(prefix, namespaceURI);
+        }
+            
+        // <sp:RequiredParts> 
+        writer.writeStartElement(prefix, localName, namespaceURI);
+        
+        // xmlns:sp=".."
+        writer.writeNamespace(prefix, namespaceURI);
+        
+        Header header;        
+        for (Iterator iterator = headers.iterator(); iterator.hasNext();) {
+            header = (Header) iterator.next();
+            // <sp:Header Name=".." Namespace=".." />
+            writer.writeStartElement(prefix, SPConstants.HEADER, namespaceURI);
+            // Name attribute is optional
+            if (header.getName() != null) {
+                writer.writeAttribute("Name", header.getName());
+            }
+            writer.writeAttribute("Namespace", header.getNamespace());
+            
+            writer.writeEndElement();
+        }
+        
+        // </sp:RequiredParts>
+        writer.writeEndElement();
+    }    
+    
+    
+}

Modified: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedParts.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedParts.java?rev=616344&r1=616343&r2=616344&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedParts.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedParts.java Tue Jan 29 06:34:22 2008
@@ -32,6 +32,8 @@
 
     private boolean body;
     
+    private boolean attachments;
+    
     private ArrayList headers = new ArrayList();
     
     private boolean signedParts;
@@ -54,6 +56,20 @@
     public void setBody(boolean body) {
         this.body = body;
     }
+    
+    /**
+     * @return Returns the attachments.
+     */
+    public boolean isAttachments() {
+        return attachments;
+    }
+
+    /**
+     * @param attachments The attachments to set.
+     */
+    public void setAttachments(boolean attachments) {
+        this.attachments = attachments;
+    }
 
     /**
      * @return Returns the headers.
@@ -131,6 +147,12 @@
             }
             writer.writeAttribute("Namespace", header.getNamespace());
             
+            writer.writeEndElement();
+        }
+        
+        if (isAttachments() && version == SPConstants.SP_V12) {
+            // <sp:Attachments />
+            writer.writeStartElement(prefix, SPConstants.ATTACHMENTS, namespaceURI);
             writer.writeEndElement();
         }
         

Modified: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Token.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Token.java?rev=616344&r1=616343&r2=616344&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Token.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Token.java Tue Jan 29 06:34:22 2008
@@ -30,6 +30,10 @@
      */
     private boolean derivedKeys;
     
+    private boolean impliedDerivedKeys;
+    
+    private boolean explicitDerivedKeys;
+    
     /**
      * @return Returns the inclusion.
      */
@@ -65,6 +69,23 @@
      */
     public void setDerivedKeys(boolean derivedKeys) {
         this.derivedKeys = derivedKeys;
-    }    
+    } 
+    
+    
+    public boolean isExplicitDerivedKeys() {
+        return explicitDerivedKeys;
+    }
+    
+    public void setExplicitDerivedKeys(boolean explicitDerivedKeys) {
+        this.explicitDerivedKeys = explicitDerivedKeys;
+    }
+    
+    public boolean isImpliedDerivedKeys() {
+        return impliedDerivedKeys;
+    }
+    
+    public void setImpliedDerivedKeys(boolean impliedDerivedKeys) {
+        this.impliedDerivedKeys = impliedDerivedKeys;
+    }
     
 }

Modified: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/UsernameToken.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/UsernameToken.java?rev=616344&r1=616343&r2=616344&view=diff
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/UsernameToken.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/UsernameToken.java Tue Jan 29 06:34:22 2008
@@ -31,6 +31,10 @@
 
     private boolean useUTProfile11 = false;
     
+    private boolean noPassword;
+    
+    private boolean hashPassword;
+    
     public UsernameToken(int version){
         setVersion(version);
     }
@@ -49,6 +53,22 @@
     public void setUseUTProfile11(boolean useUTProfile11) {
         this.useUTProfile11 = useUTProfile11;
     }
+    
+    public boolean isNoPassword() {
+        return noPassword;
+    }
+    
+    public void setNoPassword(boolean noPassword) {
+        this.noPassword = noPassword;
+    }
+    
+    public boolean isHashPassword() {
+        return hashPassword;
+    }
+    
+    public void setHashPassword(boolean hashPassword) {
+        this.hashPassword = hashPassword;
+    }
 
     public boolean isUseUTProfile10() {
         return useUTProfile10;
@@ -116,6 +136,29 @@
             } else {
                 // <sp:WssUsernameToken11 />
                 writer.writeStartElement(prefix, SPConstants.USERNAME_TOKEN11 , namespaceURI);
+            }
+            
+            if (version == SPConstants.SP_V12) {
+                
+                if (isNoPassword()) {
+                    writer.writeStartElement(prefix, SPConstants.NO_PASSWORD, namespaceURI);
+                    writer.writeEndElement();    
+                } else if (isHashPassword()){
+                    writer.writeStartElement(prefix, SPConstants.HASH_PASSWORD, namespaceURI);
+                    writer.writeEndElement(); 
+                }
+                
+                if (isDerivedKeys()) {
+                    writer.writeStartElement(prefix, SPConstants.REQUIRE_DERIVED_KEYS, namespaceURI);
+                    writer.writeEndElement();  
+                } else if (isExplicitDerivedKeys()) {
+                    writer.writeStartElement(prefix, SPConstants.REQUIRE_EXPLICIT_DERIVED_KEYS, namespaceURI);
+                    writer.writeEndElement();  
+                } else if (isImpliedDerivedKeys()) {
+                    writer.writeStartElement(prefix, SPConstants.REQUIRE_IMPLIED_DERIVED_KEYS, namespaceURI);
+                    writer.writeEndElement();  
+                }
+                
             }
             writer.writeEndElement();