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;
+}