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 pi...@apache.org on 2007/09/06 12:49:17 UTC

svn commit: r573215 [15/22] - in /webservices/rampart/tags/c/0.90: ./ build/ build/linux/ build/win32/ include/ samples/ samples/authn_provider/ samples/callback/ samples/callback/htpasswd_callback/ samples/client/ samples/client/sec_echo/ samples/clie...

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/https_token_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/https_token_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/https_token_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/https_token_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_https_token_builder.h>
+
+AXIS2_EXTERN rp_https_token_t *AXIS2_CALL
+rp_https_token_builder_build(
+            const axutil_env_t *env,
+            axiom_node_t *https,
+            axiom_element_t *https_ele)
+{
+    rp_https_token_t *https_token = NULL;
+    axiom_node_t *policy = NULL;
+    axiom_element_t *pol_ele = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    https_token = rp_https_token_create(env);
+    if(!https_token)
+        return NULL;
+
+    status = rp_https_token_builder_set_inclusion_value(env,https_token,https_ele);
+    if(status != AXIS2_SUCCESS )
+    {
+        rp_https_token_free(https_token,env);
+        https_token = NULL;
+        return NULL;
+    }
+    status = rp_https_token_builder_set_req_client_cert(env,https_token,https_ele);
+    if(status != AXIS2_SUCCESS )
+    {
+        rp_https_token_free(https_token,env);
+        https_token = NULL;
+        return NULL;
+    }
+    policy = axiom_node_get_first_element(https,env);
+    if(!policy)
+        return https_token;
+
+    if(axiom_node_get_node_type(policy, env) == AXIOM_ELEMENT)
+    {
+        pol_ele = (axiom_element_t*)axiom_node_get_data_element(policy, env);
+        if(pol_ele)
+        {
+            axiom_children_iterator_t *children_iter = NULL;
+            children_iter = axiom_element_get_children(pol_ele, env, policy);
+            if(children_iter )
+            {
+                while(axiom_children_iterator_has_next(children_iter, env))
+                {
+                    axiom_node_t *node = NULL;
+                    axiom_element_t *ele = NULL;
+                    axis2_char_t *local_name = NULL;
+                    node = axiom_children_iterator_next(children_iter, env);
+                    if(node)
+                    {
+                        if(axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
+                        {
+                            ele = (axiom_element_t*)axiom_node_get_data_element(node, env);
+                            if(ele)
+                            {
+                                local_name = axiom_element_get_localname(ele,env);
+                                if(local_name)
+                                {
+                                    status = rp_https_token_builder_set_properties(node,ele,local_name,https_token,env);
+                                    if(status != AXIS2_SUCCESS)
+                                    {
+                                        rp_https_token_free(https_token,env);
+                                        https_token = NULL;
+                                        break;
+                                    }
+                                }
+                            }
+                            
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return https_token;
+}            
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_https_token_builder_set_inclusion_value(
+        const axutil_env_t *env,
+        rp_https_token_t *token,
+        axiom_element_t *element)
+{
+
+	axis2_char_t *inclusion_value = NULL;
+    axutil_qname_t *qname = NULL;	
+
+	AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+    qname = axutil_qname_create(env,RP_INCLUDE_TOKEN,RP_SP_NS,RP_SP_PREFIX);
+    if(!qname)
+        return AXIS2_FAILURE;
+    
+    inclusion_value = axiom_element_get_attribute_value(element,env,qname);
+                
+    axutil_qname_free(qname,env);
+    qname = NULL;         
+
+    return rp_https_token_set_inclusion(token,env,inclusion_value);    
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_https_token_builder_set_req_client_cert(
+        const axutil_env_t *env,
+        rp_https_token_t *token,
+        axiom_element_t *element)
+{
+    axis2_char_t *value = NULL;
+
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+   
+    value = axiom_element_get_attribute_value_by_name(element,env,RP_REQUIRE_CLIENT_CERTIFICATE);
+
+    if(value)
+    {   
+        if(axutil_strcmp(value,"true")==0)
+            return rp_https_token_set_require_client_certificate(token,env,AXIS2_TRUE);
+        else if(axutil_strcmp(value,"false")==0)
+            return rp_https_token_set_require_client_certificate(token,env,AXIS2_FALSE);
+        else
+            return AXIS2_FAILURE;
+    }
+    
+    return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_https_token_builder_set_properties(
+        axiom_node_t *node,
+        axiom_element_t *element,
+        axis2_char_t *local_name,
+        rp_https_token_t *https_token,
+        const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    if(strcmp(local_name,RP_REQUIRE_DERIVED_KEYS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_REQUIRE_DERIVED_KEYS,node,element))
+        {
+            rp_https_token_set_derivedkeys(https_token,env,AXIS2_TRUE);
+            return AXIS2_SUCCESS;
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else
+        return AXIS2_FAILURE;
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/layout_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/layout_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/layout_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/layout_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_layout_builder.h>
+
+AXIS2_EXTERN rp_layout_t *AXIS2_CALL
+rp_layout_builder_build(
+            const axutil_env_t *env,
+            axiom_node_t *layout)
+{
+    rp_layout_t *lay_out = NULL;
+    axiom_node_t *policy = NULL;
+    axiom_node_t *name = NULL;
+    axiom_element_t *name_ele = NULL;
+    axis2_char_t * value = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    if(layout)
+    {
+        policy = axiom_node_get_first_element(layout,env);
+        if(policy)
+        {
+            name = axiom_node_get_first_element(policy,env);
+            if(name)
+            {
+                if(axiom_node_get_node_type(name,env) == AXIOM_ELEMENT)
+                {
+                    name_ele = (axiom_element_t*)axiom_node_get_data_element(name, env);
+                    if(name_ele)
+                    {
+                        value = axiom_element_get_localname(name_ele, env);
+                        if(value)
+                        {
+                            lay_out = rp_layout_create(env);
+                            if(!lay_out)
+                                return NULL;
+                           
+                            status = rp_layout_builder_set_value(name,name_ele,value,lay_out,env); 
+                            if(status!=AXIS2_SUCCESS)
+                            {
+                                rp_layout_free(lay_out,env);
+                                layout = NULL;
+                            }
+                        }                            
+                    }
+                }
+            }
+        }
+    }   
+    return lay_out;
+}            
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_layout_builder_set_value(
+        axiom_node_t *node,
+        axiom_element_t *element,
+        axis2_char_t *value,
+        rp_layout_t *layout,
+        const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    if(strcmp(value,RP_LAYOUT_STRICT)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_LAYOUT_STRICT,node,element))
+        {
+            rp_layout_set_value(layout,env,value);
+            return AXIS2_SUCCESS;
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(strcmp(value,RP_LAYOUT_LAX)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_LAYOUT_LAX,node,element))
+        {
+            rp_layout_set_value(layout,env,value);
+            return AXIS2_SUCCESS;
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(strcmp(value,RP_LAYOUT_LAX_TIMESTAMP_FIRST)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_LAYOUT_LAX_TIMESTAMP_FIRST,node,element))
+        {
+            rp_layout_set_value(layout,env,value);
+            return AXIS2_SUCCESS;
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(strcmp(value,RP_LAYOUT_STRICT)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_LAYOUT_LAX_TIMESTAMP_LAST,node,element))
+        {
+            rp_layout_set_value(layout,env,value);
+            return AXIS2_SUCCESS;
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else
+        return AXIS2_FAILURE;
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/policy_creator.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/policy_creator.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/policy_creator.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/policy_creator.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,165 @@
+#include <rp_layout.h>
+#include <rp_secpolicy_builder.h>
+#include <rp_policy_creator.h>
+#include <rp_qname_matcher.h>
+
+AXIS2_EXTERN rp_secpolicy_t *AXIS2_CALL 
+rp_policy_create_from_file(
+    const axutil_env_t *env,
+    axis2_char_t *filename)
+{
+
+    axiom_xml_reader_t *reader = NULL;
+    axiom_stax_builder_t *builder = NULL;
+    axiom_document_t *document = NULL;
+    axiom_node_t *root = NULL;
+    rp_secpolicy_t *secpolicy = NULL;
+
+    reader = axiom_xml_reader_create_for_file(env,filename,NULL);
+
+    if (!reader)
+    {
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_CREATING_XML_STREAM_READER,
+                AXIS2_FAILURE);
+        return NULL;
+    }
+    
+    builder = axiom_stax_builder_create(env, reader);
+    if(!builder)
+    {
+        axiom_xml_reader_free(reader, env);
+        reader = NULL;
+        return NULL;
+    }
+    document = axiom_stax_builder_get_document(builder, env);
+    if(!document)
+    {
+        axiom_stax_builder_free(builder, env);
+        builder = NULL;
+        return NULL;
+    }
+
+    /*root = axiom_document_get_root_element(document, env);*/
+    /*This is to get rid of the BUG in axiom. We can't use axiom_document_get_root_element without calling the build_all*/
+    root = axiom_document_build_all(document, env);
+    if(!root)
+    {
+        axiom_stax_builder_free(builder, env);
+        builder = NULL;
+        AXIS2_LOG_INFO(env->log,"[rp][policy_creator] Root element is NULL");
+        return NULL;
+    }
+    else    
+    {
+        secpolicy = rp_policy_create_from_om_node(env,root);
+        return secpolicy;
+    }
+}
+
+
+AXIS2_EXTERN rp_secpolicy_t *AXIS2_CALL 
+rp_policy_create_from_om_node(
+    const axutil_env_t *env,
+    axiom_node_t *root)
+{
+
+    axiom_element_t *all_ele = NULL;
+    axiom_element_t *root_ele = NULL;
+    axiom_node_t *exat_node = NULL;
+    axiom_element_t *exat_ele = NULL;
+    axiom_node_t *all_node = NULL;
+    rp_secpolicy_t *secpolicy = NULL;
+    axis2_char_t *local_name = NULL;
+    
+    if(axiom_node_get_node_type(root, env) == AXIOM_ELEMENT)
+    {
+        root_ele = (axiom_element_t*)axiom_node_get_data_element (root, env);
+        if(root_ele)
+        {
+            local_name = axiom_element_get_localname(root_ele,env);
+            if(local_name)
+            {
+                if(axutil_strcmp(local_name,RP_POLICY)==0)
+                {                    
+                    if(!rp_match_policy_qname(env,local_name,root,root_ele))
+                    {
+                        AXIS2_LOG_INFO(env->log,"[rp][policy_creator] Error in policy configurations.");
+                        return NULL;
+                    }
+                }
+                else return NULL;
+            }
+            else return NULL;                
+        }
+        else return NULL;
+    }
+    else
+        return NULL;
+    
+    exat_node = axiom_node_get_first_element(root,env);
+    if(exat_node)
+    {
+        if(axiom_node_get_node_type(exat_node, env) == AXIOM_ELEMENT)
+        {
+            exat_ele = (axiom_element_t*)axiom_node_get_data_element (exat_node, env);
+            if(exat_ele)
+            {
+                local_name = axiom_element_get_localname(exat_ele,env);
+                if(local_name)
+                {
+                    if(axutil_strcmp(local_name,RP_EXACTLY_ONE)==0)
+                    {
+                        if(!rp_match_policy_qname(env,local_name,exat_node,exat_ele))
+                        {
+                            AXIS2_LOG_INFO(env->log,"[rp][policy_creator] Error in policy configurations.");
+                            return NULL;
+                        }
+                    }
+                    else return NULL;
+                }
+                else return NULL;
+            }
+            else return NULL;
+        }
+        else 
+            return NULL;
+    }
+    else
+        return NULL;
+
+    all_node = axiom_node_get_first_element(exat_node,env);
+    if(all_node)
+    {
+        if(axiom_node_get_node_type(all_node, env) == AXIOM_ELEMENT)
+        {
+            all_ele = (axiom_element_t*)axiom_node_get_data_element(all_node, env);
+            if(all_ele)
+            {
+                local_name = axiom_element_get_localname(all_ele,env);
+                if(local_name)
+                {
+                    if(axutil_strcmp(local_name,RP_ALL)==0)
+                    {
+                        if(!rp_match_policy_qname(env,local_name,all_node,all_ele))
+                        {
+                            AXIS2_LOG_INFO(env->log,"[rp][policy_creator] Error in policy configurations.");
+                            return NULL;
+                        }
+                        else
+                        {
+                            secpolicy = rp_secpolicy_builder_build(env,all_node);
+                            return secpolicy;
+                        }
+                    }
+                    else return NULL;
+                }
+                else return NULL;
+            }
+            else return NULL;
+        }
+        else return NULL;
+    }
+    else return NULL;
+}
+
+

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/qname_matcher.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/qname_matcher.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/qname_matcher.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/qname_matcher.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_qname_matcher.h>
+
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+rp_match_secpolicy_qname(
+            const axutil_env_t *env,
+            const axis2_char_t *local_name,
+            axiom_node_t *node,
+            axiom_element_t *element)
+{
+    
+	axutil_qname_t *qname = NULL;
+    axutil_qname_t *node_qname = NULL;
+	
+	AXIS2_ENV_CHECK(env,AXIS2_FALSE);
+
+    node_qname = axiom_element_get_qname(element,env,node);
+
+    if(!node_qname)
+    {
+        axutil_qname_free(qname,env);
+    }
+    else
+    {
+        qname = axutil_qname_create(env,local_name,RP_SP_NS,RP_SP_PREFIX);
+        if(!qname)
+            return AXIS2_FALSE;
+    }
+    if(axutil_qname_equals(qname,env,node_qname))
+    {
+        axutil_qname_free(qname,env);
+        qname = NULL;        
+        return AXIS2_TRUE;
+    }
+    else
+    {
+        axutil_qname_free(qname,env);
+        qname = NULL;
+        return AXIS2_FALSE;
+    }
+}
+
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+rp_match_policy_qname(
+            const axutil_env_t *env,
+            const axis2_char_t *local_name,
+            axiom_node_t *node,
+            axiom_element_t *element)
+{
+    
+	axutil_qname_t *qname = NULL;
+    axutil_qname_t *node_qname = NULL;
+	
+	AXIS2_ENV_CHECK(env,AXIS2_FALSE);
+
+    qname = axutil_qname_create(env,local_name,RP_POLICY_NS,RP_POLICY_PREFIX);
+    if(!qname)
+        return AXIS2_FALSE;
+
+    node_qname = axiom_element_get_qname(element,env,node);
+
+    if(!node_qname)
+    {
+        return AXIS2_FALSE;
+    }
+    else
+    {
+        qname = axutil_qname_create(env,local_name,RP_POLICY_NS,RP_POLICY_PREFIX);
+        if(!qname)
+            return AXIS2_FALSE;
+    }
+    if(axutil_qname_equals(qname,env,node_qname))
+    {        
+        axutil_qname_free(qname,env);
+        qname = NULL;
+        return AXIS2_TRUE;
+    }
+    else
+    {
+        axutil_qname_free(qname,env);
+        qname = NULL;
+        return AXIS2_FALSE;
+    }
+}
+
+
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+rp_match_rampart_config_qname(
+            const axutil_env_t *env,
+            const axis2_char_t *local_name,
+            axiom_node_t *node,
+            axiom_element_t *element)
+{
+    
+	axutil_qname_t *qname = NULL;
+    axutil_qname_t *node_qname = NULL;
+
+	AXIS2_ENV_CHECK(env,AXIS2_FALSE);
+
+    node_qname = axiom_element_get_qname(element,env,node);
+
+    if(!node_qname)
+    {
+        return AXIS2_FALSE;
+    }
+    else
+    {
+        qname = axutil_qname_create(env,local_name,RP_RAMPART_NS,RP_RAMPART_PREFIX);
+        if(!qname)
+            return AXIS2_FALSE;
+    }        
+    if(axutil_qname_equals(qname,env,node_qname))
+    {        
+        axutil_qname_free(qname,env);
+        qname = NULL;
+        return AXIS2_TRUE;
+    }
+    else
+    {        
+        axutil_qname_free(qname,env);
+        qname = NULL;
+        return AXIS2_FALSE;
+    }
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/rampart_config_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/rampart_config_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/rampart_config_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/rampart_config_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,196 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_rampart_config_builder.h>
+
+AXIS2_EXTERN rp_rampart_config_t *AXIS2_CALL 
+rp_rampart_config_builder_build(const axutil_env_t *env, axiom_node_t *config)
+  
+{
+    rp_rampart_config_t *rampart_config = NULL;
+    axiom_element_t *config_ele = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+
+    AXIS2_ENV_CHECK(env, NULL);
+
+    if(config)
+    {
+        if(axiom_node_get_node_type(config,env) == AXIOM_ELEMENT)
+        {
+            config_ele = (axiom_element_t*)axiom_node_get_data_element(config, env);
+
+            rampart_config = rp_rampart_config_create(env);
+            if(!rampart_config)
+                return NULL;
+
+            if(config_ele)
+            {
+                axiom_children_iterator_t *children_iter = NULL;
+                children_iter = axiom_element_get_children(config_ele, env, config);
+                if(children_iter )
+                {
+                    while(axiom_children_iterator_has_next(children_iter, env))
+                    {
+                        axiom_node_t *node = NULL;
+                        axiom_element_t *ele = NULL;
+                        axis2_char_t *local_name = NULL;
+                        node = axiom_children_iterator_next(children_iter, env);
+                        if(node)
+                        {
+                            if(axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
+                            {
+                                ele = (axiom_element_t*)axiom_node_get_data_element(node, env);
+                                if(ele)
+                                {
+                                    local_name = axiom_element_get_localname(ele,env);
+                                    if(local_name)
+                                    {
+                                        {
+                                            status = rp_rampart_config_builder_populate(env,rampart_config,node,ele,local_name);
+                                            if(status!=AXIS2_SUCCESS)
+                                                return NULL;
+                                        }
+                                            
+                                    }
+                                    
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return rampart_config;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_rampart_config_builder_populate(
+            const axutil_env_t *env,
+            rp_rampart_config_t *rampart_config,
+            axiom_node_t *node,
+            axiom_element_t *element,
+            axis2_char_t *local_name)    
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+    
+    if(axutil_strcmp(local_name,RP_USER)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_USER,node,element))
+        {
+            axis2_char_t *user = NULL;
+            user = axiom_element_get_text(element,env,node);
+
+            return rp_rampart_config_set_user(rampart_config,env,user);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_ENCRYPTION_USER)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_ENCRYPTION_USER,node,element))
+        {
+            axis2_char_t *encryption_user = NULL;
+            encryption_user = axiom_element_get_text(element,env,node);
+            return rp_rampart_config_set_encryption_user(rampart_config,env,encryption_user);
+        }
+        else
+            return AXIS2_FAILURE;
+    }    
+    else if(axutil_strcmp(local_name,RP_PASSWORD_CALLBACK_CLASS)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_PASSWORD_CALLBACK_CLASS,node,element))
+        {
+            axis2_char_t *password_callback_class = NULL;
+            password_callback_class = axiom_element_get_text(element,env,node);
+            return rp_rampart_config_set_password_callback_class(rampart_config,env,password_callback_class);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_AUTHN_MODULE_NAME)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_AUTHN_MODULE_NAME,node,element))
+        {
+            axis2_char_t *authenticate_module = NULL;
+            authenticate_module = axiom_element_get_text(element,env,node);
+            return rp_rampart_config_set_authenticate_module(rampart_config,env,authenticate_module);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_PASSWORD_TYPE)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_PASSWORD_TYPE,node,element))
+        {
+            axis2_char_t *password_type = NULL;
+            password_type = axiom_element_get_text(element,env,node);
+            return rp_rampart_config_set_password_type(rampart_config,env,password_type);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+
+    else if(axutil_strcmp(local_name,RP_CERTIFICATE)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_CERTIFICATE,node,element))
+        {
+            axis2_char_t *certificate_file = NULL;
+            certificate_file = axiom_element_get_text(element,env,node);
+            return rp_rampart_config_set_certificate_file(rampart_config,env,certificate_file);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+
+    else if(axutil_strcmp(local_name,RP_RECEIVER_CERTIFICATE)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_RECEIVER_CERTIFICATE,node,element))
+        {
+            axis2_char_t *receiver_certificate_file = NULL;
+            receiver_certificate_file = axiom_element_get_text(element,env,node);
+            return rp_rampart_config_set_receiver_certificate_file(rampart_config,env,receiver_certificate_file);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+
+    else if(axutil_strcmp(local_name,RP_PRIVATE_KEY)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_PRIVATE_KEY,node,element))
+        {
+            axis2_char_t *private_key_file = NULL;
+            private_key_file = axiom_element_get_text(element,env,node);
+            return rp_rampart_config_set_private_key_file(rampart_config,env,private_key_file);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_TIME_TO_LIVE)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_TIME_TO_LIVE,node,element))
+        {
+            axis2_char_t *time_to_live = NULL;
+            time_to_live = axiom_element_get_text(element,env,node);
+            return rp_rampart_config_set_time_to_live(rampart_config,env,time_to_live);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else return AXIS2_FAILURE;
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/secpolicy_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/secpolicy_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/secpolicy_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/secpolicy_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,409 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_layout.h>
+#include <rp_secpolicy_builder.h>
+
+
+
+AXIS2_EXTERN rp_secpolicy_t *AXIS2_CALL 
+rp_secpolicy_builder_build(const axutil_env_t *env, axiom_node_t *all)
+{
+    rp_secpolicy_t *secpolicy = NULL;
+    axiom_element_t *all_ele = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+
+    if(all)
+    {
+        if(axiom_node_get_node_type(all, env) == AXIOM_ELEMENT)
+        {
+            all_ele = (axiom_element_t*)axiom_node_get_data_element (all, env);
+            secpolicy = rp_secpolicy_create(env);
+            if(!secpolicy)
+                return NULL;                        
+            if(all_ele)
+            {
+                axiom_children_iterator_t *children_iter = NULL;
+                children_iter = axiom_element_get_children(all_ele, env, all);
+                if(children_iter )
+                {
+                    while(axiom_children_iterator_has_next(children_iter, env))
+                    {
+                        axiom_node_t *node = NULL;
+                        axiom_element_t *ele = NULL;
+                        axis2_char_t *local_name = NULL;
+                        node = axiom_children_iterator_next(children_iter, env);
+                        if(node)
+                        {
+                            if(axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
+                            {
+                                ele = (axiom_element_t*)axiom_node_get_data_element (node, env);
+                                if(ele)
+                                {
+                                    local_name = axiom_element_get_localname(ele, env);
+                                    if(local_name)
+                                        rp_secpolicy_builder_set_properties(env,secpolicy,node,ele,local_name);                                            
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return secpolicy;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_secpolicy_builder_set_properties(
+            const axutil_env_t *env,
+            rp_secpolicy_t *secpolicy,
+            axiom_node_t *node,
+            axiom_element_t *element,
+            axis2_char_t *local_name)    
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+    
+    if(axutil_strcmp(local_name,RP_SYMMETRIC_BINDING)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SYMMETRIC_BINDING,node,element))
+        {
+            rp_symmetric_binding_t *symmetric_binding = NULL;
+            rp_property_t *binding = NULL;
+            axis2_status_t status = AXIS2_SUCCESS;
+            
+            symmetric_binding = rp_symmetric_binding_builder_build(env,node);
+            if(!symmetric_binding)
+                return AXIS2_FAILURE;
+            
+            binding = rp_property_create(env);
+            if(!binding)
+                return AXIS2_FAILURE;
+
+            status = rp_property_set_value(binding,env,symmetric_binding,RP_BINDING_SYMMETRIC);
+            if(status != AXIS2_SUCCESS)
+            {
+                rp_property_free(binding,env);
+                binding = NULL;
+                return AXIS2_FAILURE;              
+            }
+            return rp_secpolicy_set_binding(secpolicy,env,binding);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_ASYMMETRIC_BINDING)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ASYMMETRIC_BINDING,node,element))
+        {
+            rp_asymmetric_binding_t *asymmetric_binding = NULL;
+            rp_property_t *binding = NULL;
+            axis2_status_t status = AXIS2_SUCCESS;
+            
+            asymmetric_binding = rp_asymmetric_binding_builder_build(env,node);
+            if(!asymmetric_binding)
+                return AXIS2_FAILURE;
+            
+            binding = rp_property_create(env);
+            if(!binding)
+                return AXIS2_FAILURE;
+
+            status = rp_property_set_value(binding,env,asymmetric_binding,RP_BINDING_ASYMMETRIC);
+            if(status != AXIS2_SUCCESS)
+            {
+                rp_property_free(binding,env);
+                binding = NULL;
+                return AXIS2_FAILURE;              
+            }
+            return rp_secpolicy_set_binding(secpolicy,env,binding);
+        }
+        else
+            return AXIS2_FAILURE;
+  
+    }
+    else if(axutil_strcmp(local_name,RP_TRANSPORT_BINDING)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_TRANSPORT_BINDING,node,element))
+        {
+            rp_transport_binding_t *transport_binding = NULL;
+            rp_property_t *binding = NULL;
+            axis2_status_t status = AXIS2_SUCCESS;
+
+            transport_binding = rp_transport_binding_builder_build(env,node);
+            if(!transport_binding)
+                return AXIS2_FAILURE;
+
+            binding = rp_property_create(env);
+            if(!binding)
+                return AXIS2_FAILURE;
+
+            status = rp_property_set_value(binding,env,transport_binding,RP_BINDING_TRANSPORT);
+            if(status != AXIS2_SUCCESS)
+            {
+                rp_property_free(binding,env);
+                binding = NULL;
+                return AXIS2_FAILURE;
+            }
+            return rp_secpolicy_set_binding(secpolicy,env,binding);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_SIGNED_SUPPORTING_TOKENS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SIGNED_SUPPORTING_TOKENS,node,element))
+        {
+            rp_supporting_tokens_t *signed_supporting_tokens = NULL;
+
+            signed_supporting_tokens = rp_supporting_tokens_builder_build(env,node);
+            if(!signed_supporting_tokens)
+                return AXIS2_FAILURE;
+
+            rp_supporting_tokens_set_type(signed_supporting_tokens,env,RP_SUPPORTING_SIGNED_SUPPORTING);
+
+            return rp_secpolicy_set_signed_supporting_tokens(secpolicy,env,signed_supporting_tokens);
+        }
+        else
+            return AXIS2_FAILURE;
+
+    }
+    else if(axutil_strcmp(local_name,RP_SIGNED_ENDORSING_SUPPORTING_TOKENS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SIGNED_ENDORSING_SUPPORTING_TOKENS,node,element))
+        {
+            rp_supporting_tokens_t *signed_endorsing_supporting_tokens = NULL;
+
+            signed_endorsing_supporting_tokens = rp_supporting_tokens_builder_build(env,node);
+            if(!signed_endorsing_supporting_tokens)
+                return AXIS2_FAILURE;
+
+            rp_supporting_tokens_set_type(signed_endorsing_supporting_tokens,env,RP_SUPPORTING_SIGNED_ENDORSING_SUPPORTING);
+
+            return rp_secpolicy_set_signed_endorsing_supporting_tokens(secpolicy,env,signed_endorsing_supporting_tokens);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_SUPPORTING_TOKENS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SUPPORTING_TOKENS,node,element))
+        {
+            rp_supporting_tokens_t *supporting_tokens = NULL;
+
+            supporting_tokens = rp_supporting_tokens_builder_build(env,node);
+            if(!supporting_tokens)
+                return AXIS2_FAILURE;
+
+            rp_supporting_tokens_set_type(supporting_tokens,env,RP_SUPPORTING_SUPPORTING);
+
+            return rp_secpolicy_set_supporting_tokens(secpolicy,env,supporting_tokens);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_ENDORSING_SUPPORTING_TOKENS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENDORSING_SUPPORTING_TOKENS,node,element))
+        {
+            rp_supporting_tokens_t *endorsing_supporting_tokens = NULL;
+
+            endorsing_supporting_tokens = rp_supporting_tokens_builder_build(env,node);
+            if(!endorsing_supporting_tokens)
+                return AXIS2_FAILURE;
+
+            rp_supporting_tokens_set_type(endorsing_supporting_tokens,env,RP_SUPPORTING_ENDORSING_SUPPORTING);
+
+            return rp_secpolicy_set_endorsing_supporting_tokens(secpolicy,env,endorsing_supporting_tokens);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_SIGNED_PARTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SIGNED_PARTS,node,element))
+        {
+            rp_signed_encrypted_parts_t *signed_parts = NULL;
+            signed_parts = rp_signed_encrypted_parts_builder_build(env,node);
+            if(!signed_parts)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_parts_set_signedparts(signed_parts,env,AXIS2_TRUE);
+
+            return rp_secpolicy_set_signed_parts(secpolicy,env,signed_parts);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    
+    else if(axutil_strcmp(local_name,RP_ENCRYPTED_PARTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENCRYPTED_PARTS,node,element))
+        {
+            rp_signed_encrypted_parts_t *encrypted_parts = NULL;
+            encrypted_parts = rp_signed_encrypted_parts_builder_build(env,node);
+            if(!encrypted_parts)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_parts_set_signedparts(encrypted_parts,env,AXIS2_FALSE);
+
+            return rp_secpolicy_set_encrypted_parts(secpolicy,env,encrypted_parts);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_SIGNED_ELEMENTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SIGNED_ELEMENTS,node,element))
+        {
+            rp_signed_encrypted_elements_t *signed_elements = NULL;
+            signed_elements = rp_signed_encrypted_elements_builder_build(env,node);
+            if(!signed_elements)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_elements_set_signedelements(signed_elements,env,AXIS2_TRUE);
+
+            return rp_secpolicy_set_signed_elements(secpolicy,env,signed_elements);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    
+    else if(axutil_strcmp(local_name,RP_ENCRYPTED_ELEMENTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENCRYPTED_ELEMENTS,node,element))
+        {
+            rp_signed_encrypted_elements_t *encrypted_elements = NULL;
+            encrypted_elements = rp_signed_encrypted_elements_builder_build(env,node);
+            if(!encrypted_elements)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_elements_set_signedelements(encrypted_elements,env,AXIS2_FALSE);
+
+            return rp_secpolicy_set_encrypted_elements(secpolicy,env,encrypted_elements);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+
+    else if(axutil_strcmp(local_name,RP_SIGNED_ITEMS)==0)
+    {
+        if( rp_match_rampart_config_qname(env,RP_SIGNED_ITEMS,node,element))
+        {
+            rp_signed_encrypted_items_t *signed_items = NULL;
+            signed_items = rp_signed_encrypted_items_builder_build(env,node);
+            if(!signed_items)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_items_set_signeditems(signed_items,env,AXIS2_TRUE);
+
+            return rp_secpolicy_set_signed_items(secpolicy,env,signed_items);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    
+    else if(axutil_strcmp(local_name,RP_ENCRYPTED_ITEMS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENCRYPTED_ITEMS,node,element))
+        {
+            rp_signed_encrypted_items_t *encrypted_items = NULL;
+            encrypted_items = rp_signed_encrypted_items_builder_build(env,node);
+            if(!encrypted_items)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_items_set_signeditems(encrypted_items,env,AXIS2_FALSE);
+
+            return rp_secpolicy_set_encrypted_items(secpolicy,env,encrypted_items);
+        }
+        else return AXIS2_FAILURE;
+    }
+    
+    else if(axutil_strcmp(local_name,RP_WSS10)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_WSS10,node,element)) 
+        {           
+            rp_wss10_t *wss10 = NULL;
+            rp_property_t *wss = NULL;
+            axis2_status_t status = AXIS2_SUCCESS;
+
+            wss10 = rp_wss10_builder_build(env,node);
+            if(!wss10)
+                return AXIS2_FAILURE;
+
+            wss = rp_property_create(env);
+            if(!wss)
+                return AXIS2_FAILURE;
+
+            status = rp_property_set_value(wss,env,wss10,RP_WSS_WSS10);
+            if(status != AXIS2_SUCCESS)
+            {
+                rp_property_free(wss,env);
+                wss = NULL;
+                return AXIS2_FAILURE;
+            }
+            return rp_secpolicy_set_wss(secpolicy,env,wss);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_WSS11)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_WSS11,node,element)) 
+        {           
+            rp_wss11_t *wss11 = NULL;
+            rp_property_t *wss = NULL;
+            axis2_status_t status = AXIS2_SUCCESS;
+
+            wss11 = rp_wss11_builder_build(env,node);
+            if(!wss11)
+                return AXIS2_FAILURE;
+
+            wss = rp_property_create(env);
+            if(!wss)
+                return AXIS2_FAILURE;
+
+            status = rp_property_set_value(wss,env,wss11,RP_WSS_WSS11);
+            if(status != AXIS2_SUCCESS)
+            {
+                rp_property_free(wss,env);
+                wss = NULL;
+                return AXIS2_FAILURE;
+            }
+            return rp_secpolicy_set_wss(secpolicy,env,wss);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_RAMPART_CONFIG)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_RAMPART_CONFIG,node,element))
+        {
+            rp_rampart_config_t *rampart_config = NULL;
+            rampart_config = rp_rampart_config_builder_build(env,node);
+            if(!rampart_config)
+                return AXIS2_FAILURE;
+
+            return rp_secpolicy_set_rampart_config(secpolicy,env,rampart_config);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else
+        return AXIS2_FAILURE;
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/security_context_token_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/security_context_token_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/security_context_token_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/security_context_token_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_security_context_token_builder.h>
+
+AXIS2_EXTERN rp_security_context_token_t *AXIS2_CALL
+rp_security_context_token_builder_build(
+            const axutil_env_t *env,
+            axiom_node_t *security_context,
+            axiom_element_t *security_context_ele)
+{
+    rp_security_context_token_t *security_context_token = NULL;
+    axiom_node_t *policy = NULL;
+    axiom_element_t *pol_ele = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    security_context_token = rp_security_context_token_create(env);
+    if(!security_context_token)
+        return NULL;
+
+    status = rp_security_context_token_builder_set_inclusion_value(env,security_context_token,security_context_ele);
+    if(status != AXIS2_SUCCESS )
+    {
+        rp_security_context_token_free(security_context_token,env);
+        security_context_token = NULL;
+        return NULL;
+    }
+    policy = axiom_node_get_first_element(security_context,env);
+    if(axiom_node_get_node_type(policy, env) == AXIOM_ELEMENT)
+    {
+        pol_ele = (axiom_element_t*)axiom_node_get_data_element(policy, env);
+        if(pol_ele)
+        {
+            axiom_children_iterator_t *children_iter = NULL;
+            children_iter = axiom_element_get_children(pol_ele, env, policy);
+            if(children_iter )
+            {
+                while(axiom_children_iterator_has_next(children_iter, env))
+                {
+                    axiom_node_t *node = NULL;
+                    axiom_element_t *ele = NULL;
+                    axis2_char_t *local_name = NULL;
+                    node = axiom_children_iterator_next(children_iter, env);
+                    if(node)
+                    {
+                        if(axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
+                        {
+                            ele = (axiom_element_t*)axiom_node_get_data_element(node, env);
+                            if(ele)
+                            {
+                                local_name = axiom_element_get_localname(ele,env);
+                                if(local_name)
+                                {
+                                    status = rp_security_context_token_builder_set_properties(node,ele,local_name,security_context_token,env);
+                                    if(status != AXIS2_SUCCESS)
+                                    {
+                                        rp_security_context_token_free(security_context_token,env);
+                                        security_context_token = NULL;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return security_context_token;
+}            
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_security_context_token_builder_set_inclusion_value(
+        const axutil_env_t *env,
+        rp_security_context_token_t *token,
+        axiom_element_t *element)
+{
+    
+	axis2_char_t *inclusion_value = NULL;
+    axutil_qname_t *qname = NULL;
+	
+	AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    qname = axutil_qname_create(env,RP_INCLUDE_TOKEN,RP_SP_NS,RP_SP_PREFIX);
+    if(!qname)
+        return AXIS2_FAILURE;
+    
+    inclusion_value = axiom_element_get_attribute_value(element,env,qname);
+            
+    axutil_qname_free(qname,env);
+    qname = NULL;         
+
+    return rp_security_context_token_set_inclusion(token,env,inclusion_value);    
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_security_context_token_builder_set_properties(
+        axiom_node_t *node,
+        axiom_element_t *element,
+        axis2_char_t *local_name,
+        rp_security_context_token_t *security_context_token,
+        const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    if(strcmp(local_name,RP_REQUIRE_EXTERNAL_URI_REFERENCE)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_REQUIRE_EXTERNAL_URI_REFERENCE,node,element))
+        {
+            rp_security_context_token_set_require_external_uri_ref(security_context_token,env,AXIS2_TRUE);
+            return AXIS2_SUCCESS;
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(strcmp(local_name,RP_SC10_SECURITY_CONTEXT_TOKEN)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SC10_SECURITY_CONTEXT_TOKEN,node,element))
+        {
+            rp_security_context_token_set_sc10_security_context_token(security_context_token,env,AXIS2_TRUE);
+            return AXIS2_SUCCESS;
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(strcmp(local_name,RP_REQUIRE_DERIVED_KEYS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_REQUIRE_DERIVED_KEYS,node,element))
+        {
+            rp_security_context_token_set_derivedkeys(security_context_token,env,AXIS2_TRUE);
+            return AXIS2_SUCCESS;
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else
+        return AXIS2_FAILURE;
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_elements_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_elements_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_elements_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_elements_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_signed_encrypted_elements_builder.h>
+#include <rp_qname_matcher.h>
+
+AXIS2_EXTERN rp_signed_encrypted_elements_t *AXIS2_CALL
+rp_signed_encrypted_elements_builder_build(
+            const axutil_env_t *env,
+            axiom_node_t *elements)
+{
+    rp_signed_encrypted_elements_t *signed_encrypted_elements = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+    axiom_element_t *elements_ele = NULL;
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    signed_encrypted_elements = rp_signed_encrypted_elements_create(env);
+    if(!signed_encrypted_elements)
+        return NULL;
+
+    if(axiom_node_get_node_type(elements, env) == AXIOM_ELEMENT)
+    {
+        elements_ele = (axiom_element_t*)axiom_node_get_data_element(elements, env);
+        if(elements_ele)
+        {
+            axiom_children_iterator_t *children_iter = NULL;
+            rp_signed_encrypted_elements_builder_set_xpath_version(elements_ele,signed_encrypted_elements,env);
+            children_iter = axiom_element_get_children(elements_ele, env, elements);
+            if(children_iter )
+            {
+                while(axiom_children_iterator_has_next(children_iter, env))
+                {
+                    axiom_node_t *node = NULL;
+                    axiom_element_t *ele = NULL;
+                    axis2_char_t *local_name = NULL;
+                    node = axiom_children_iterator_next(children_iter, env);
+                    if(node)
+                    {
+                        if(axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
+                        {
+                            ele = (axiom_element_t*)axiom_node_get_data_element(node, env);
+                            if(ele)
+                            {
+                                local_name = axiom_element_get_localname(ele,env);
+                                if(local_name)
+                                {
+                                    status = rp_signed_encrypted_elements_builder_set_properties(node,ele,local_name,signed_encrypted_elements,env);
+                                    if(status!=AXIS2_SUCCESS)
+                                    {
+                                        rp_signed_encrypted_elements_free(signed_encrypted_elements,env);
+                                        signed_encrypted_elements = NULL;
+                                    }                           
+                                }
+                            }
+                            
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return signed_encrypted_elements;
+}            
+
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_signed_encrypted_elements_builder_set_properties(
+        axiom_node_t *node,
+        axiom_element_t *element,
+        axis2_char_t *local_name,
+        rp_signed_encrypted_elements_t *signed_encrypted_elements,
+        const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    if(strcmp(local_name,RP_XPATH)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_XPATH,node,element))
+        {
+            axis2_char_t *xpath = NULL;
+            xpath = axiom_element_get_text(element,env,node);
+            if(!xpath)
+                return AXIS2_FAILURE;
+
+            return rp_signed_encrypted_elements_add_expression(signed_encrypted_elements,env,xpath);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else
+        return AXIS2_FAILURE;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL 
+rp_signed_encrypted_elements_builder_set_xpath_version(
+    axiom_element_t *element,
+    rp_signed_encrypted_elements_t *signed_encrypted_elements, 
+    const axutil_env_t *env)
+{
+    axis2_char_t *xpath_version = NULL;
+
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    xpath_version = axiom_element_get_attribute_value_by_name(element,env,RP_XPATH_VERSION);
+    
+    if(xpath_version)
+        rp_signed_encrypted_elements_set_xpath_version(signed_encrypted_elements,env,RP_XPATH_VERSION); 
+    
+    return AXIS2_SUCCESS;
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_items_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_items_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_items_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_items_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,144 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_signed_encrypted_items_builder.h>
+#include <rp_qname_matcher.h>
+/*
+AXIS2_EXTERN rp_header_t *AXIS2_CALL
+rp_signed_encrypted_items_builder_build_header(
+    axiom_element_t *element,
+    const axutil_env_t *env);
+*/
+
+AXIS2_EXTERN rp_signed_encrypted_items_t *AXIS2_CALL
+rp_signed_encrypted_items_builder_build(
+            const axutil_env_t *env,
+            axiom_node_t *items)
+{
+    rp_signed_encrypted_items_t *signed_encrypted_items = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+    axiom_element_t *items_ele = NULL;
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    signed_encrypted_items = rp_signed_encrypted_items_create(env);
+    if(!signed_encrypted_items)
+        return NULL;
+
+    if(axiom_node_get_node_type(items, env) == AXIOM_ELEMENT)
+    {
+        items_ele = (axiom_element_t*)axiom_node_get_data_element(items, env);
+        if(items_ele)
+        {
+            axiom_children_iterator_t *children_iter = NULL;
+            children_iter = axiom_element_get_children(items_ele, env, items);
+            if(children_iter )
+            {
+                while(axiom_children_iterator_has_next(children_iter, env))
+                {
+                    axiom_node_t *node = NULL;
+                    axiom_element_t *ele = NULL;
+                    axis2_char_t *local_name = NULL;
+                    node = axiom_children_iterator_next(children_iter, env);
+                    if(node)
+                    {
+                        if(axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
+                        {
+                            ele = (axiom_element_t*)axiom_node_get_data_element(node, env);
+                            if(ele)
+                            {
+                                local_name = axiom_element_get_localname(ele,env);
+                                if(local_name)
+                                {
+                                    status = rp_signed_encrypted_items_builder_set_properties(node,ele,local_name,signed_encrypted_items,env);
+                                    if(status!=AXIS2_SUCCESS)
+                                    {
+                                        rp_signed_encrypted_items_free(signed_encrypted_items,env);
+                                        signed_encrypted_items = NULL;
+                                    }                           
+                                }
+                            }
+                            
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return signed_encrypted_items;
+}            
+
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_signed_encrypted_items_builder_set_properties(
+        axiom_node_t *node,
+        axiom_element_t *ele,
+        axis2_char_t *local_name,
+        rp_signed_encrypted_items_t *signed_encrypted_items,
+        const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    if(strcmp(local_name,RP_ELEMENT)==0)
+    {
+        if(rp_match_rampart_config_qname(env,RP_ELEMENT,node,ele))
+        {
+            rp_element_t *element = NULL;
+            element = rp_signed_encrypted_items_builder_build_element(ele,env);
+            if(!element)
+                return AXIS2_FAILURE;
+            
+            return rp_signed_encrypted_items_add_element(signed_encrypted_items,env,element);    
+        }
+        else 
+            return AXIS2_FAILURE;
+    }
+    else
+        return AXIS2_FAILURE;
+}
+
+AXIS2_EXTERN rp_element_t *AXIS2_CALL 
+rp_signed_encrypted_items_builder_build_element(
+    axiom_element_t *ele,
+    const axutil_env_t *env)
+{
+    rp_element_t *element = NULL;
+    axis2_char_t *name = NULL;
+    axis2_char_t *namespace = NULL;    
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    element = rp_element_create(env);    
+    if(!element)
+        return NULL;
+
+    name = axiom_element_get_attribute_value_by_name(ele,env,RP_NAME);
+    namespace = axiom_element_get_attribute_value_by_name(ele,env,RP_NAMESPACE);
+    if(!namespace)
+    {
+        rp_element_free(element,env);
+        element = NULL;
+        return NULL;    
+    }     
+    if(name)
+        rp_element_set_name(element,env,name); 
+    
+    rp_element_set_namespace(element,env,namespace);    
+    
+    return element;
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_parts_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_parts_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_parts_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/signed_encrypted_parts_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_signed_encrypted_parts_builder.h>
+#include <rp_qname_matcher.h>
+/*
+AXIS2_EXTERN rp_header_t *AXIS2_CALL
+rp_signed_encrypted_parts_builder_build_header(
+    axiom_element_t *element,
+    const axutil_env_t *env);
+*/
+
+AXIS2_EXTERN rp_signed_encrypted_parts_t *AXIS2_CALL
+rp_signed_encrypted_parts_builder_build(
+            const axutil_env_t *env,
+            axiom_node_t *parts)
+{
+    rp_signed_encrypted_parts_t *signed_encrypted_parts = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+    axiom_element_t *parts_ele = NULL;
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    signed_encrypted_parts = rp_signed_encrypted_parts_create(env);
+    if(!signed_encrypted_parts)
+        return NULL;
+
+    if(axiom_node_get_node_type(parts, env) == AXIOM_ELEMENT)
+    {
+        parts_ele = (axiom_element_t*)axiom_node_get_data_element(parts, env);
+        if(parts_ele)
+        {
+            axiom_children_iterator_t *children_iter = NULL;
+            children_iter = axiom_element_get_children(parts_ele, env, parts);
+            if(children_iter )
+            {
+                while(axiom_children_iterator_has_next(children_iter, env))
+                {
+                    axiom_node_t *node = NULL;
+                    axiom_element_t *ele = NULL;
+                    axis2_char_t *local_name = NULL;
+                    node = axiom_children_iterator_next(children_iter, env);
+                    if(node)
+                    {
+                        if(axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
+                        {
+                            ele = (axiom_element_t*)axiom_node_get_data_element(node, env);
+                            if(ele)
+                            {
+                                local_name = axiom_element_get_localname(ele,env);
+                                if(local_name)
+                                {
+                                    status = rp_signed_encrypted_parts_builder_set_properties(node,ele,local_name,signed_encrypted_parts,env);
+                                    if(status!=AXIS2_SUCCESS)
+                                    {
+                                        rp_signed_encrypted_parts_free(signed_encrypted_parts,env);
+                                        signed_encrypted_parts = NULL;
+                                    }                           
+                                }
+                            }
+                            
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return signed_encrypted_parts;
+}            
+
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_signed_encrypted_parts_builder_set_properties(
+        axiom_node_t *node,
+        axiom_element_t *element,
+        axis2_char_t *local_name,
+        rp_signed_encrypted_parts_t *signed_encrypted_parts,
+        const axutil_env_t *env)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    if(strcmp(local_name,RP_BODY)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_BODY,node,element))
+        {
+            rp_signed_encrypted_parts_set_body(signed_encrypted_parts,env,AXIS2_TRUE);
+            return AXIS2_SUCCESS;
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(strcmp(local_name,RP_HEADER)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_HEADER,node,element))
+        {
+            rp_header_t *header = NULL;
+            header = rp_signed_encrypted_parts_builder_build_header(element,env);
+            if(!header)
+                return AXIS2_FAILURE;
+            
+            return rp_signed_encrypted_parts_add_header(signed_encrypted_parts,env,header);    
+        }
+        else 
+            return AXIS2_FAILURE;
+    }
+    else
+        return AXIS2_FAILURE;
+}
+
+AXIS2_EXTERN rp_header_t *AXIS2_CALL 
+rp_signed_encrypted_parts_builder_build_header(
+    axiom_element_t *element,
+    const axutil_env_t *env)
+{
+    rp_header_t *header = NULL;
+    axis2_char_t *name = NULL;
+    axis2_char_t *namespace = NULL;    
+
+    AXIS2_ENV_CHECK(env,NULL);
+
+    header = rp_header_create(env);    
+    if(!header)
+        return NULL;
+
+    name = axiom_element_get_attribute_value_by_name(element,env,RP_NAME);
+    namespace = axiom_element_get_attribute_value_by_name(element,env,RP_NAMESPACE);
+    if(!namespace)
+    {
+        rp_header_free(header,env);
+        header = NULL;
+        return NULL;    
+    }     
+    if(name)
+        rp_header_set_name(header,env,name); 
+    
+    rp_header_set_namespace(header,env,namespace);    
+    
+    return header;
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/supporting_tokens_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/supporting_tokens_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/supporting_tokens_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/supporting_tokens_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,218 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_supporting_tokens_builder.h>
+
+AXIS2_EXTERN rp_supporting_tokens_t *AXIS2_CALL 
+rp_supporting_tokens_builder_build(const axutil_env_t *env, axiom_node_t *supporting)
+  
+{
+    rp_supporting_tokens_t *supporting_tokens = NULL;
+    axiom_element_t *pol_ele = NULL;
+    axiom_node_t *policy = NULL;
+    rp_property_t *property = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+
+    AXIS2_ENV_CHECK(env, NULL);
+
+    if(supporting)
+    {
+        policy = axiom_node_get_first_element(supporting,env);
+
+        if(axiom_node_get_node_type(policy, env) == AXIOM_ELEMENT)
+        {
+            pol_ele = (axiom_element_t*)axiom_node_get_data_element(policy, env);
+
+            supporting_tokens = rp_supporting_tokens_create(env);
+            if(!supporting_tokens)
+                return NULL;
+
+            if(pol_ele)
+            {
+                axiom_children_iterator_t *children_iter = NULL;
+                children_iter = axiom_element_get_children(pol_ele, env, policy);
+                if(children_iter )
+                {
+                    while(axiom_children_iterator_has_next(children_iter, env))
+                    {
+                        axiom_node_t *node = NULL;
+                        axiom_element_t *ele = NULL;
+                        axis2_char_t *local_name = NULL;
+                        node = axiom_children_iterator_next(children_iter, env);
+                        if(node)
+                        {
+                            if(axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
+                            {
+                                ele = (axiom_element_t*)axiom_node_get_data_element(node, env);
+                                if(ele)
+                                {
+                                    local_name = axiom_element_get_localname(ele,env);
+                                    if(local_name)
+                                    {
+                                        if(rp_supporting_tokens_builder_istoken(env,local_name))
+                                        {
+                                            property = rp_property_create(env);
+                                            if(!property)
+                                                return NULL;
+                                            status = rp_token_builder_set_token(node,ele,local_name,property,env);
+                                            if(status!=AXIS2_SUCCESS)
+                                            {
+                                                rp_property_free(property,env);
+                                                property = NULL;
+                                                return NULL; 
+                                            }
+                                            status = rp_supporting_tokens_add_token(supporting_tokens,env,property);  
+                                            if(status!=AXIS2_SUCCESS)
+                                            {
+                                                rp_property_free(property,env);
+                                                property = NULL;
+                                                return NULL;
+                                            }
+                                        }
+                                        else
+                                        {
+                                            status = rp_supporting_tokens_builder_set_other_properties(env,supporting_tokens,node,ele,local_name);
+                                            if(status!=AXIS2_SUCCESS)
+                                                return NULL;
+                                        }
+                                            
+                                    }
+                                    
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return supporting_tokens;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_supporting_tokens_builder_set_other_properties(
+            const axutil_env_t *env,
+            rp_supporting_tokens_t *supporting_tokens,
+            axiom_node_t *node,
+            axiom_element_t *element,
+            axis2_char_t *local_name)    
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+    
+    if(axutil_strcmp(local_name,RP_ALGORITHM_SUITE)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ALGORITHM_SUITE,node,element))
+        {
+            rp_algorithmsuite_t *algorithmsuite = NULL;
+            algorithmsuite = rp_algorithmsuite_builder_build(env,node);
+            if(!algorithmsuite)
+                return AXIS2_FAILURE;
+
+            return rp_supporting_tokens_set_algorithmsuite(supporting_tokens,env,algorithmsuite);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_SIGNED_PARTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SIGNED_PARTS,node,element))
+        {
+            rp_signed_encrypted_parts_t *signed_parts = NULL;
+            signed_parts = rp_signed_encrypted_parts_builder_build(env,node);
+            if(!signed_parts)
+                return AXIS2_FAILURE;
+            
+            rp_signed_encrypted_parts_set_signedparts(signed_parts,env,AXIS2_TRUE);
+
+            return rp_supporting_tokens_set_signed_parts(supporting_tokens,env,signed_parts);
+        }
+        else
+            return AXIS2_FAILURE;
+    }    
+    else if(axutil_strcmp(local_name,RP_SIGNED_ELEMENTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SIGNED_ELEMENTS,node,element))
+        {
+            rp_signed_encrypted_elements_t *signed_elements = NULL;
+            signed_elements = rp_signed_encrypted_elements_builder_build(env,node);
+            if(!signed_elements)
+                return AXIS2_FAILURE;
+            
+            rp_signed_encrypted_elements_set_signedelements(signed_elements,env,AXIS2_TRUE);
+
+            return rp_supporting_tokens_set_signed_elements(supporting_tokens,env,signed_elements);
+        }
+        else
+            return AXIS2_FAILURE;
+
+    }
+    else if(axutil_strcmp(local_name,RP_ENCRYPTED_PARTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENCRYPTED_PARTS,node,element))
+        {
+            rp_signed_encrypted_parts_t *encrypted_parts = NULL;
+            encrypted_parts = rp_signed_encrypted_parts_builder_build(env,node);
+            if(!encrypted_parts)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_parts_set_signedparts(encrypted_parts,env,AXIS2_FALSE);
+
+            return rp_supporting_tokens_set_encrypted_parts(supporting_tokens,env,encrypted_parts);
+        }
+        else
+            return AXIS2_FAILURE;
+            
+    }
+    else if(axutil_strcmp(local_name,RP_ENCRYPTED_ELEMENTS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENCRYPTED_ELEMENTS,node,element))
+        {
+            rp_signed_encrypted_elements_t *encrypted_elements = NULL;
+            encrypted_elements = rp_signed_encrypted_elements_builder_build(env,node);
+            if(!encrypted_elements)
+                return AXIS2_FAILURE;
+
+            rp_signed_encrypted_elements_set_signedelements(encrypted_elements,env,AXIS2_FALSE);
+
+            return rp_supporting_tokens_set_encrypted_elements(supporting_tokens,env,encrypted_elements);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else return AXIS2_FAILURE;
+}
+
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+rp_supporting_tokens_builder_istoken(
+        const axutil_env_t *env,
+        axis2_char_t *local_name)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FALSE);
+
+    if(axutil_strcmp(local_name,RP_USERNAME_TOKEN)==0)
+        return AXIS2_TRUE;
+    
+    else if(axutil_strcmp(local_name,RP_X509_TOKEN)==0)
+        return AXIS2_TRUE;
+
+    else if(axutil_strcmp(local_name,RP_SECURITY_CONTEXT_TOKEN)==0)
+        return AXIS2_TRUE;
+
+    else
+        return AXIS2_FALSE;
+}

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/symmetric_asymmetric_commons_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/symmetric_asymmetric_commons_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/symmetric_asymmetric_commons_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/symmetric_asymmetric_commons_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_symmetric_asymmetric_commons_builder.h>
+#include <rp_qname_matcher.h>
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_symmetric_asymmetric_commons_builder_build(
+            const axutil_env_t *env,
+            axiom_node_t *node,
+            axiom_element_t *element,
+            axis2_char_t *local_name,    
+            rp_symmetric_asymmetric_binding_commons_t *as_commons,
+            rp_binding_commons_t *commons)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+
+    if(axutil_strcmp(local_name,RP_ENCRYPT_BEFORE_SIGNING)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENCRYPT_BEFORE_SIGNING,node,element))
+        {            
+            rp_symmetric_asymmetric_binding_commons_set_protection_order(as_commons,env,local_name);
+            return AXIS2_SUCCESS;
+        }
+        return AXIS2_FAILURE;
+    }        
+    
+    else if(axutil_strcmp(local_name,RP_ENCRYPT_SIGNATURE)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENCRYPT_SIGNATURE,node,element))
+        {
+            rp_symmetric_asymmetric_binding_commons_set_signature_protection(as_commons,env,AXIS2_TRUE);
+            return AXIS2_SUCCESS;
+        }
+        return AXIS2_FAILURE;
+    }
+    
+    else if(axutil_strcmp(local_name,RP_PROTECT_TOKENS)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_PROTECT_TOKENS,node,element))
+        {
+            rp_symmetric_asymmetric_binding_commons_set_token_protection(as_commons,env,AXIS2_TRUE);
+            return AXIS2_SUCCESS;
+        }
+        return AXIS2_FAILURE;
+    }
+
+    else if(axutil_strcmp(local_name,RP_ONLY_SIGN_ENTIRE_HEADERS_AND_BODY)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ONLY_SIGN_ENTIRE_HEADERS_AND_BODY,node,element))
+        {
+            rp_symmetric_asymmetric_binding_commons_set_entire_headers_and_body_signatures(as_commons,env,AXIS2_TRUE);
+            return AXIS2_SUCCESS;
+        }
+        return AXIS2_FAILURE;
+    }
+    else  
+        return rp_binding_commons_builder_build(env,node,element,local_name,commons);
+}
+

Added: webservices/rampart/tags/c/0.90/src/secpolicy/builder/symmetric_binding_builder.c
URL: http://svn.apache.org/viewvc/webservices/rampart/tags/c/0.90/src/secpolicy/builder/symmetric_binding_builder.c?rev=573215&view=auto
==============================================================================
--- webservices/rampart/tags/c/0.90/src/secpolicy/builder/symmetric_binding_builder.c (added)
+++ webservices/rampart/tags/c/0.90/src/secpolicy/builder/symmetric_binding_builder.c Thu Sep  6 03:48:44 2007
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+
+#include <rp_symmetric_binding_builder.h>
+#include <rp_qname_matcher.h>
+#include <rp_token_builder.h>
+
+AXIS2_EXTERN rp_symmetric_binding_t *AXIS2_CALL 
+rp_symmetric_binding_builder_build(const axutil_env_t *env, axiom_node_t *symmetric)
+  
+{
+    rp_symmetric_binding_t *symmetric_binding = NULL;
+    rp_symmetric_asymmetric_binding_commons_t *as_commons = NULL;
+    rp_binding_commons_t *commons = NULL;        
+    axiom_element_t *pol_ele = NULL;
+    axiom_node_t *policy = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+
+    if(symmetric)
+    {
+        policy = axiom_node_get_first_element(symmetric,env);
+
+        if(axiom_node_get_node_type(policy, env) == AXIOM_ELEMENT)
+        {
+            pol_ele = (axiom_element_t*)axiom_node_get_data_element(policy, env);
+
+            symmetric_binding = rp_symmetric_binding_create(env);
+            if(!symmetric_binding)
+                return NULL;
+
+            as_commons = rp_symmetric_asymmetric_binding_commons_create(env);
+            if(!as_commons)
+                return NULL;
+
+            commons = rp_binding_commons_create(env);
+            if(!commons)
+                return NULL;
+                        
+            if(pol_ele)
+            {
+                axiom_children_iterator_t *children_iter = NULL;
+                children_iter = axiom_element_get_children(pol_ele, env, policy);
+                if(children_iter )
+                {
+                    while(axiom_children_iterator_has_next(children_iter, env))
+                    {
+                        axiom_node_t *node = NULL;
+                        axiom_element_t *ele = NULL;
+                        axis2_char_t *local_name = NULL;
+                        node = axiom_children_iterator_next(children_iter, env);
+                        if(node)
+                        {
+                            if(axiom_node_get_node_type(node, env) == AXIOM_ELEMENT)
+                            {
+                                ele = (axiom_element_t*)axiom_node_get_data_element(node, env);
+                                if(ele)
+                                {
+                                    local_name = axiom_element_get_localname(ele,env);
+                                    if(local_name)
+                                    {
+                                        if(rp_symmetric_binding_builder_istoken(env,local_name))
+                                            rp_symmetric_binding_builder_set_token_type(env,symmetric_binding,node,ele,local_name); 
+                                        else
+                                            rp_symmetric_asymmetric_commons_builder_build(env,node,ele,local_name,as_commons,commons);                                                         
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                rp_symmetric_asymmetric_binding_commons_set_binding_commons(as_commons,env,commons);
+                rp_symmetric_binding_set_symmetric_asymmetric_binding_commons(symmetric_binding,env,as_commons);               
+            }
+        }
+    }
+    return symmetric_binding;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_symmetric_binding_builder_set_token_type(
+            const axutil_env_t *env,
+            rp_symmetric_binding_t *symmetric_binding,
+            axiom_node_t *node,
+            axiom_element_t *element,
+            axis2_char_t *local_name)    
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FAILURE);
+    
+    if(axutil_strcmp(local_name,RP_PROTECTION_TOKEN)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_PROTECTION_TOKEN,node,element))
+        {
+            rp_property_t *protection_token = NULL;
+            protection_token = rp_token_builder_build(env,node);
+            if(!protection_token)
+                return AXIS2_FAILURE;
+
+            return rp_symmetric_binding_set_protection_token(symmetric_binding,env,protection_token);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else if(axutil_strcmp(local_name,RP_ENCRYPTION_TOKEN)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_ENCRYPTION_TOKEN,node,element))
+        {
+            rp_property_t *encryption_token = NULL;
+            encryption_token = rp_token_builder_build(env,node);
+            if(!encryption_token)
+                return AXIS2_FAILURE;
+
+            return rp_symmetric_binding_set_encryption_token(symmetric_binding,env,encryption_token);
+        }
+        else
+            return AXIS2_FAILURE;
+        
+    }
+    else if(axutil_strcmp(local_name,RP_SIGNATURE_TOKEN)==0)
+    {
+        if(rp_match_secpolicy_qname(env,RP_SIGNATURE_TOKEN,node,element))
+        {
+            rp_property_t *signature_token = NULL;
+            signature_token = rp_token_builder_build(env,node);
+            if(!signature_token)
+                return AXIS2_FAILURE;
+
+            return rp_symmetric_binding_set_signature_token(symmetric_binding,env,signature_token);
+        }
+        else
+            return AXIS2_FAILURE;
+    }
+    else
+        return AXIS2_FAILURE;
+}
+
+AXIS2_EXTERN axis2_bool_t AXIS2_CALL
+rp_symmetric_binding_builder_istoken(
+        const axutil_env_t *env,
+        axis2_char_t *local_name)
+{
+    AXIS2_ENV_CHECK(env,AXIS2_FALSE);
+
+    if(axutil_strcmp(local_name,RP_PROTECTION_TOKEN)==0)
+        return AXIS2_TRUE;
+    
+    else if(axutil_strcmp(local_name,RP_ENCRYPTION_TOKEN)==0)
+        return AXIS2_TRUE;
+
+    else if(axutil_strcmp(local_name,RP_SIGNATURE_TOKEN)==0)
+        return AXIS2_TRUE;
+
+    else
+        return AXIS2_FALSE;
+}