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/28 10:53:44 UTC

svn commit: r615839 [2/2] - in /webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12: ./ builders/

Added: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java?rev=615839&view=auto
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java (added)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java Mon Jan 28 01:53:41 2008
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2001-2004 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.secpolicy12.builders;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyEngine;
+import org.apache.neethi.builders.AssertionBuilder;
+import org.apache.ws.secpolicy.SPConstants;
+import org.apache.ws.secpolicy.SP12Constants;
+import org.apache.ws.secpolicy.model.X509Token;
+
+public class X509TokenBuilder implements AssertionBuilder {
+
+    public Assertion build(OMElement element, AssertionBuilderFactory factory)
+            throws IllegalArgumentException {
+        X509Token x509Token = new X509Token(SPConstants.SP_V12);
+
+        OMElement policyElement = element.getFirstElement();
+        
+        //Process token inclusion
+        OMAttribute  includeAttr = element.getAttribute(SP12Constants.INCLUDE_TOKEN);
+        if(includeAttr != null) {
+            int inclusion = SP12Constants.getInclusionFromAttributeValue(includeAttr.getAttributeValue());
+            x509Token.setInclusion(inclusion);
+        }
+
+        if (policyElement != null) {
+            
+            if (policyElement.getFirstChildWithName(SP12Constants.REQUIRE_DERIVED_KEYS) != null) {
+                x509Token.setDerivedKeys(true);
+            }
+            
+            Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
+            policy = (Policy) policy.normalize(false);
+
+            for (Iterator iterator = policy.getAlternatives(); iterator
+                    .hasNext();) {
+                processAlternative((List) iterator.next(), x509Token);
+                
+                /*
+                 * since there should be only one alternative
+                 */
+                break;
+            }
+        }
+        return x509Token;
+    }
+
+    private void processAlternative(List assertions, X509Token parent) {
+                Assertion assertion;
+        QName name;
+
+        for (Iterator iterator = assertions.iterator(); iterator.hasNext();) {
+            assertion = (Assertion) iterator.next();
+            name = assertion.getName();
+
+            if (SP12Constants.REQUIRE_KEY_IDENTIFIRE_REFERENCE.equals(name)) {
+                parent.setRequireKeyIdentifierReference(true);
+
+            } else if (SP12Constants.REQUIRE_ISSUER_SERIAL_REFERENCE.equals(name)) {
+                parent.setRequireIssuerSerialReference(true);
+
+            } else if (SP12Constants.REQUIRE_EMBEDDED_TOKEN_REFERENCE.equals(name)) {
+                parent.setRequireEmbeddedTokenReference(true);
+
+            } else if (SP12Constants.REQUIRE_THUMBPRINT_REFERENCE.equals(name)) {
+                parent.setRequireThumbprintReference(true);
+
+            } else if (SP12Constants.WSS_X509_V1_TOKEN_10.equals(name)) {
+                parent.setTokenVersionAndType(SPConstants.WSS_X509_V1_TOKEN10);
+
+            } else if (SP12Constants.WSS_X509_V1_TOKEN_11.equals(name)) {
+                parent.setTokenVersionAndType(SPConstants.WSS_X509_V1_TOKEN11);
+
+            } else if (SP12Constants.WSS_X509_V3_TOKEN_10.equals(name)) {
+                parent.setTokenVersionAndType(SPConstants.WSS_X509_V3_TOKEN10);
+
+            } else if (SP12Constants.WSS_X509_V3_TOKEN_11.equals(name)) {
+                parent.setTokenVersionAndType(SPConstants.WSS_X509_V3_TOKEN11);
+
+            } else if (SP12Constants.WSS_X509_PKCS7_TOKEN_10.equals(name)) {
+                parent
+                        .setTokenVersionAndType(SPConstants.WSS_X509_PKCS7_TOKEN10);
+
+            } else if (SP12Constants.WSS_X509_PKCS7_TOKEN_11.equals(name)) {
+                parent
+                        .setTokenVersionAndType(SPConstants.WSS_X509_PKCS7_TOKEN11);
+
+            } else if (SP12Constants.WSS_X509_PKI_PATH_V1_TOKEN_10.equals(name)) {
+                parent
+                        .setTokenVersionAndType(SPConstants.WSS_X509_PKI_PATH_V1_TOKEN10);
+
+            } else if (SP12Constants.WSS_X509_PKI_PATH_V1_TOKEN_11.equals(name)) {
+                parent
+                        .setTokenVersionAndType(SPConstants.WSS_X509_PKI_PATH_V1_TOKEN11);
+            }
+        }
+    }
+
+    public QName[] getKnownElements() {
+        return new QName[] {SP12Constants.X509_TOKEN};
+    }
+}

Propchange: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java
------------------------------------------------------------------------------
    svn:executable = *