Return-Path: Delivered-To: apmail-ws-axis-cvs-archive@www.apache.org Received: (qmail 22813 invoked from network); 3 Oct 2007 12:07:38 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 3 Oct 2007 12:07:38 -0000 Received: (qmail 58987 invoked by uid 500); 3 Oct 2007 12:07:26 -0000 Delivered-To: apmail-ws-axis-cvs-archive@ws.apache.org Received: (qmail 58888 invoked by uid 500); 3 Oct 2007 12:07:26 -0000 Mailing-List: contact axis-cvs-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-cvs@ws.apache.org Received: (qmail 58877 invoked by uid 500); 3 Oct 2007 12:07:26 -0000 Delivered-To: apmail-ws-axis2-cvs@ws.apache.org Received: (qmail 58874 invoked by uid 99); 3 Oct 2007 12:07:26 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 03 Oct 2007 05:07:26 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 03 Oct 2007 12:07:26 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 59CD01A9832; Wed, 3 Oct 2007 05:06:36 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r581577 - in /webservices/axis2/trunk/c/neethi/src: ./ secpolicy/builder/ Date: Wed, 03 Oct 2007 12:06:35 -0000 To: axis2-cvs@ws.apache.org From: manjula@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071003120636.59CD01A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: manjula Date: Wed Oct 3 05:06:33 2007 New Revision: 581577 URL: http://svn.apache.org/viewvc?rev=581577&view=rev Log: Adds symmetric binding support through policy. Added: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/encryption_token_builder.c webservices/axis2/trunk/c/neethi/src/secpolicy/builder/protection_token_builder.c webservices/axis2/trunk/c/neethi/src/secpolicy/builder/signature_token_builder.c webservices/axis2/trunk/c/neethi/src/secpolicy/builder/symmetric_binding_builder.c Modified: webservices/axis2/trunk/c/neethi/src/assertion.c webservices/axis2/trunk/c/neethi/src/assertion_builder.c webservices/axis2/trunk/c/neethi/src/secpolicy/builder/Makefile.am Modified: webservices/axis2/trunk/c/neethi/src/assertion.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/assertion.c?rev=581577&r1=581576&r2=581577&view=diff ============================================================================== --- webservices/axis2/trunk/c/neethi/src/assertion.c (original) +++ webservices/axis2/trunk/c/neethi/src/assertion.c Wed Oct 3 05:06:33 2007 @@ -27,6 +27,7 @@ #include #include #include +#include struct neethi_assertion_t { @@ -119,6 +120,18 @@ { rp_property_increment_ref((rp_property_t *) value, env); } + if (type == ASSERTION_TYPE_PROTECTION_TOKEN) + { + rp_property_increment_ref((rp_property_t *) value, env); + } + if (type == ASSERTION_TYPE_ENCRYPTION_TOKEN) + { + rp_property_increment_ref((rp_property_t *) value, env); + } + if (type == ASSERTION_TYPE_SIGNATURE_TOKEN) + { + rp_property_increment_ref((rp_property_t *) value, env); + } if (type == ASSERTION_TYPE_LAYOUT) { rp_layout_increment_ref((rp_layout_t *) value, env); @@ -146,6 +159,13 @@ rp_asymmetric_binding_increment_ref((rp_asymmetric_binding_t *) value, env); } + + if (type == ASSERTION_TYPE_SYMMETRIC_BINDING) + { + rp_symmetric_binding_increment_ref((rp_symmetric_binding_t *) value, + env); + } + if (type == ASSERTION_TYPE_SIGNED_ENCRYPTED_PARTS) { rp_signed_encrypted_parts_increment_ref((rp_signed_encrypted_parts_t *) Modified: webservices/axis2/trunk/c/neethi/src/assertion_builder.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/assertion_builder.c?rev=581577&r1=581576&r2=581577&view=diff ============================================================================== --- webservices/axis2/trunk/c/neethi/src/assertion_builder.c (original) +++ webservices/axis2/trunk/c/neethi/src/assertion_builder.c Wed Oct 3 05:06:33 2007 @@ -43,7 +43,7 @@ return NULL; } - if (axutil_strcmp(localname, RP_ASYMMETRIC_BINDING) == 0) + else if (axutil_strcmp(localname, RP_ASYMMETRIC_BINDING) == 0) { if (rp_match_secpolicy_qname(env, RP_ASYMMETRIC_BINDING, node, element)) { @@ -53,6 +53,16 @@ return NULL; } + else if (axutil_strcmp(localname, RP_SYMMETRIC_BINDING) == 0) + { + if (rp_match_secpolicy_qname(env, RP_SYMMETRIC_BINDING, node, element)) + { + return rp_symmetric_binding_builder_build(env, node, element); + } + else + return NULL; + } + else if (axutil_strcmp(localname, RP_TRANSPORT_TOKEN) == 0) { if (rp_match_secpolicy_qname(env, RP_TRANSPORT_TOKEN, node, element)) @@ -72,6 +82,7 @@ else return NULL; } + else if (axutil_strcmp(localname, RP_INITIATOR_TOKEN) == 0) { if (rp_match_secpolicy_qname(env, RP_INITIATOR_TOKEN, node, element)) @@ -81,6 +92,37 @@ else return NULL; } + + else if (axutil_strcmp(localname, RP_PROTECTION_TOKEN) == 0) + { + if (rp_match_secpolicy_qname(env, RP_PROTECTION_TOKEN, node, element)) + { + return rp_protection_token_builder_build(env, node, element); + } + else + return NULL; + } + + else if (axutil_strcmp(localname, RP_ENCRYPTION_TOKEN) == 0) + { + if (rp_match_secpolicy_qname(env, RP_ENCRYPTION_TOKEN, node, element)) + { + return rp_encryption_token_builder_build(env, node, element); + } + else + return NULL; + } + + else if (axutil_strcmp(localname, RP_SIGNATURE_TOKEN) == 0) + { + if (rp_match_secpolicy_qname(env, RP_SIGNATURE_TOKEN, node, element)) + { + return rp_signature_token_builder_build(env, node, element); + } + else + return NULL; + } + else if (axutil_strcmp(localname, RP_X509_TOKEN) == 0) { if (rp_match_secpolicy_qname(env, RP_X509_TOKEN, node, element)) Modified: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/Makefile.am URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/Makefile.am?rev=581577&r1=581576&r2=581577&view=diff ============================================================================== --- webservices/axis2/trunk/c/neethi/src/secpolicy/builder/Makefile.am (original) +++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/Makefile.am Wed Oct 3 05:06:33 2007 @@ -9,8 +9,9 @@ wss10_builder.c transport_token_builder.c \ token_identifier.c https_token_builder.c rampart_config_builder.c \ asymmetric_binding_builder.c x509_token_builder.c initiator_token_builder.c \ - recipient_token_builder.c signed_encrypted_parts_builder.c secpolicy_builder.c - + recipient_token_builder.c signed_encrypted_parts_builder.c secpolicy_builder.c \ + symmetric_binding_builder.c protection_token_builder.c signature_token_builder.c \ + encryption_token_builder.c librp_builder_la_LIBADD = ../../../../axiom/src/om/libaxis2_axiom.la \ ../../../../util/src/libaxutil.la Added: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/encryption_token_builder.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/encryption_token_builder.c?rev=581577&view=auto ============================================================================== --- webservices/axis2/trunk/c/neethi/src/secpolicy/builder/encryption_token_builder.c (added) +++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/encryption_token_builder.c Wed Oct 3 05:06:33 2007 @@ -0,0 +1,150 @@ + +/* + * 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 +#include +#include +#include +#include +#include +#include + +/*private functions*/ + +axis2_status_t AXIS2_CALL encryption_token_process_alternatives( + const axutil_env_t * env, + neethi_all_t * all, + rp_property_t * encryption_token); + +/***********************************/ + +AXIS2_EXTERN neethi_assertion_t *AXIS2_CALL +rp_encryption_token_builder_build( + const axutil_env_t * env, + axiom_node_t * node, + axiom_element_t * element) +{ + rp_property_t *encryption_token = NULL; + neethi_policy_t *policy = NULL; + axiom_node_t *child_node = NULL; + axiom_element_t *child_element = NULL; + axutil_array_list_t *alternatives = NULL; + neethi_operator_t *component = NULL; + neethi_all_t *all = NULL; + neethi_assertion_t *assertion = NULL; + neethi_policy_t *normalized_policy = NULL; + + encryption_token = rp_property_create(env); + + child_node = axiom_node_get_first_element(node, env); + if (!child_node) + { + return NULL; + } + + if (axiom_node_get_node_type(child_node, env) == AXIOM_ELEMENT) + { + child_element = + (axiom_element_t *) axiom_node_get_data_element(child_node, env); + if (child_element) + { + policy = neethi_engine_get_policy(env, child_node, child_element); + if (!policy) + { + return NULL; + } + normalized_policy = + neethi_engine_get_normalize(env, AXIS2_FALSE, policy); + neethi_policy_free(policy, env); + policy = NULL; + alternatives = + neethi_policy_get_alternatives(normalized_policy, env); + component = + (neethi_operator_t *) axutil_array_list_get(alternatives, env, + 0); + all = (neethi_all_t *) neethi_operator_get_value(component, env); + encryption_token_process_alternatives(env, all, encryption_token); + + assertion = + neethi_assertion_create_with_args(env, + (void *) rp_property_free, + encryption_token, + ASSERTION_TYPE_ENCRYPTION_TOKEN); + + neethi_policy_free(normalized_policy, env); + normalized_policy = NULL; + + return assertion; + } + else + return NULL; + } + else + return NULL; +} + +axis2_status_t AXIS2_CALL +encryption_token_process_alternatives( + const axutil_env_t * env, + neethi_all_t * all, + rp_property_t * encryption_token) +{ + + neethi_operator_t *operator = NULL; + axutil_array_list_t *arraylist = NULL; + neethi_assertion_t *assertion = NULL; + neethi_assertion_type_t type; + void *value = NULL; + + int i = 0; + + arraylist = neethi_all_get_policy_components(all, env); + + for (i = 0; i < axutil_array_list_size(arraylist, env); i++) + { + operator =(neethi_operator_t *) axutil_array_list_get(arraylist, env, + i); + assertion = + (neethi_assertion_t *) neethi_operator_get_value(operator, env); + value = neethi_assertion_get_value(assertion, env); + type = neethi_assertion_get_type(assertion, env); + + if (value) + { + if (type == ASSERTION_TYPE_X509_TOKEN) + { + rp_x509_token_t *x509_token = NULL; + x509_token = + (rp_x509_token_t *) neethi_assertion_get_value(assertion, + env); + if (x509_token) + { + rp_property_set_value(encryption_token, env, x509_token, + RP_PROPERTY_X509_TOKEN); + } + else + return AXIS2_FAILURE; + } + else + return AXIS2_FAILURE; + } + else + return AXIS2_FAILURE; + } + return AXIS2_SUCCESS; +} Added: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/protection_token_builder.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/protection_token_builder.c?rev=581577&view=auto ============================================================================== --- webservices/axis2/trunk/c/neethi/src/secpolicy/builder/protection_token_builder.c (added) +++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/protection_token_builder.c Wed Oct 3 05:06:33 2007 @@ -0,0 +1,150 @@ + +/* + * 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 +#include +#include +#include +#include +#include +#include + +/*private functions*/ + +axis2_status_t AXIS2_CALL protection_token_process_alternatives( + const axutil_env_t * env, + neethi_all_t * all, + rp_property_t * protection_token); + +/***********************************/ + +AXIS2_EXTERN neethi_assertion_t *AXIS2_CALL +rp_protection_token_builder_build( + const axutil_env_t * env, + axiom_node_t * node, + axiom_element_t * element) +{ + rp_property_t *protection_token = NULL; + neethi_policy_t *policy = NULL; + axiom_node_t *child_node = NULL; + axiom_element_t *child_element = NULL; + axutil_array_list_t *alternatives = NULL; + neethi_operator_t *component = NULL; + neethi_all_t *all = NULL; + neethi_assertion_t *assertion = NULL; + neethi_policy_t *normalized_policy = NULL; + + protection_token = rp_property_create(env); + + child_node = axiom_node_get_first_element(node, env); + if (!child_node) + { + return NULL; + } + + if (axiom_node_get_node_type(child_node, env) == AXIOM_ELEMENT) + { + child_element = + (axiom_element_t *) axiom_node_get_data_element(child_node, env); + if (child_element) + { + policy = neethi_engine_get_policy(env, child_node, child_element); + if (!policy) + { + return NULL; + } + normalized_policy = + neethi_engine_get_normalize(env, AXIS2_FALSE, policy); + neethi_policy_free(policy, env); + policy = NULL; + alternatives = + neethi_policy_get_alternatives(normalized_policy, env); + component = + (neethi_operator_t *) axutil_array_list_get(alternatives, env, + 0); + all = (neethi_all_t *) neethi_operator_get_value(component, env); + protection_token_process_alternatives(env, all, protection_token); + + assertion = + neethi_assertion_create_with_args(env, + (void *) rp_property_free, + protection_token, + ASSERTION_TYPE_PROTECTION_TOKEN); + + neethi_policy_free(normalized_policy, env); + normalized_policy = NULL; + + return assertion; + } + else + return NULL; + } + else + return NULL; +} + +axis2_status_t AXIS2_CALL +protection_token_process_alternatives( + const axutil_env_t * env, + neethi_all_t * all, + rp_property_t * protection_token) +{ + + neethi_operator_t *operator = NULL; + axutil_array_list_t *arraylist = NULL; + neethi_assertion_t *assertion = NULL; + neethi_assertion_type_t type; + void *value = NULL; + + int i = 0; + + arraylist = neethi_all_get_policy_components(all, env); + + for (i = 0; i < axutil_array_list_size(arraylist, env); i++) + { + operator =(neethi_operator_t *) axutil_array_list_get(arraylist, env, + i); + assertion = + (neethi_assertion_t *) neethi_operator_get_value(operator, env); + value = neethi_assertion_get_value(assertion, env); + type = neethi_assertion_get_type(assertion, env); + + if (value) + { + if (type == ASSERTION_TYPE_X509_TOKEN) + { + rp_x509_token_t *x509_token = NULL; + x509_token = + (rp_x509_token_t *) neethi_assertion_get_value(assertion, + env); + if (x509_token) + { + rp_property_set_value(protection_token, env, x509_token, + RP_PROPERTY_X509_TOKEN); + } + else + return AXIS2_FAILURE; + } + else + return AXIS2_FAILURE; + } + else + return AXIS2_FAILURE; + } + return AXIS2_SUCCESS; +} Added: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/signature_token_builder.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/signature_token_builder.c?rev=581577&view=auto ============================================================================== --- webservices/axis2/trunk/c/neethi/src/secpolicy/builder/signature_token_builder.c (added) +++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/signature_token_builder.c Wed Oct 3 05:06:33 2007 @@ -0,0 +1,150 @@ + +/* + * 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 +#include +#include +#include +#include +#include +#include + +/*private functions*/ + +axis2_status_t AXIS2_CALL signature_token_process_alternatives( + const axutil_env_t * env, + neethi_all_t * all, + rp_property_t * signature_token); + +/***********************************/ + +AXIS2_EXTERN neethi_assertion_t *AXIS2_CALL +rp_signature_token_builder_build( + const axutil_env_t * env, + axiom_node_t * node, + axiom_element_t * element) +{ + rp_property_t *signature_token = NULL; + neethi_policy_t *policy = NULL; + axiom_node_t *child_node = NULL; + axiom_element_t *child_element = NULL; + axutil_array_list_t *alternatives = NULL; + neethi_operator_t *component = NULL; + neethi_all_t *all = NULL; + neethi_assertion_t *assertion = NULL; + neethi_policy_t *normalized_policy = NULL; + + signature_token = rp_property_create(env); + + child_node = axiom_node_get_first_element(node, env); + if (!child_node) + { + return NULL; + } + + if (axiom_node_get_node_type(child_node, env) == AXIOM_ELEMENT) + { + child_element = + (axiom_element_t *) axiom_node_get_data_element(child_node, env); + if (child_element) + { + policy = neethi_engine_get_policy(env, child_node, child_element); + if (!policy) + { + return NULL; + } + normalized_policy = + neethi_engine_get_normalize(env, AXIS2_FALSE, policy); + neethi_policy_free(policy, env); + policy = NULL; + alternatives = + neethi_policy_get_alternatives(normalized_policy, env); + component = + (neethi_operator_t *) axutil_array_list_get(alternatives, env, + 0); + all = (neethi_all_t *) neethi_operator_get_value(component, env); + signature_token_process_alternatives(env, all, signature_token); + + assertion = + neethi_assertion_create_with_args(env, + (void *) rp_property_free, + signature_token, + ASSERTION_TYPE_SIGNATURE_TOKEN); + + neethi_policy_free(normalized_policy, env); + normalized_policy = NULL; + + return assertion; + } + else + return NULL; + } + else + return NULL; +} + +axis2_status_t AXIS2_CALL +signature_token_process_alternatives( + const axutil_env_t * env, + neethi_all_t * all, + rp_property_t * signature_token) +{ + + neethi_operator_t *operator = NULL; + axutil_array_list_t *arraylist = NULL; + neethi_assertion_t *assertion = NULL; + neethi_assertion_type_t type; + void *value = NULL; + + int i = 0; + + arraylist = neethi_all_get_policy_components(all, env); + + for (i = 0; i < axutil_array_list_size(arraylist, env); i++) + { + operator =(neethi_operator_t *) axutil_array_list_get(arraylist, env, + i); + assertion = + (neethi_assertion_t *) neethi_operator_get_value(operator, env); + value = neethi_assertion_get_value(assertion, env); + type = neethi_assertion_get_type(assertion, env); + + if (value) + { + if (type == ASSERTION_TYPE_X509_TOKEN) + { + rp_x509_token_t *x509_token = NULL; + x509_token = + (rp_x509_token_t *) neethi_assertion_get_value(assertion, + env); + if (x509_token) + { + rp_property_set_value(signature_token, env, x509_token, + RP_PROPERTY_X509_TOKEN); + } + else + return AXIS2_FAILURE; + } + else + return AXIS2_FAILURE; + } + else + return AXIS2_FAILURE; + } + return AXIS2_SUCCESS; +} Added: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/symmetric_binding_builder.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/symmetric_binding_builder.c?rev=581577&view=auto ============================================================================== --- webservices/axis2/trunk/c/neethi/src/secpolicy/builder/symmetric_binding_builder.c (added) +++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/symmetric_binding_builder.c Wed Oct 3 05:06:33 2007 @@ -0,0 +1,247 @@ + +/* + * 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 +#include +#include +#include +#include +#include + +/*private functions*/ + +axis2_status_t AXIS2_CALL symmetric_binding_process_alternatives( + const axutil_env_t * env, + neethi_all_t * all, + rp_symmetric_binding_t * symmetric_binding); + +/***********************************/ + +AXIS2_EXTERN neethi_assertion_t *AXIS2_CALL +rp_symmetric_binding_builder_build( + const axutil_env_t * env, + axiom_node_t * node, + axiom_element_t * element) +{ + rp_symmetric_binding_t *symmetric_binding = NULL; + neethi_policy_t *policy = NULL; + axiom_node_t *child_node = NULL; + axiom_element_t *child_element = NULL; + axutil_array_list_t *alternatives = NULL; + neethi_operator_t *component = NULL; + neethi_all_t *all = NULL; + neethi_assertion_t *assertion = NULL; + neethi_policy_t *normalized_policy = NULL; + + symmetric_binding = rp_symmetric_binding_create(env); + + child_node = axiom_node_get_first_element(node, env); + if (!child_node) + { + return NULL; + } + + if (axiom_node_get_node_type(child_node, env) == AXIOM_ELEMENT) + { + child_element = + (axiom_element_t *) axiom_node_get_data_element(child_node, env); + if (child_element) + { + policy = neethi_engine_get_policy(env, child_node, child_element); + if (!policy) + { + return NULL; + } + normalized_policy = + neethi_engine_get_normalize(env, AXIS2_FALSE, policy); + alternatives = + neethi_policy_get_alternatives(normalized_policy, env); + neethi_policy_free(policy, env); + policy = NULL; + component = + (neethi_operator_t *) axutil_array_list_get(alternatives, env, + 0); + all = (neethi_all_t *) neethi_operator_get_value(component, env); + symmetric_binding_process_alternatives(env, all, + symmetric_binding); + + assertion = + neethi_assertion_create_with_args(env, + (void *) + rp_symmetric_binding_free, + symmetric_binding, + ASSERTION_TYPE_SYMMETRIC_BINDING); + neethi_policy_free(normalized_policy, env); + normalized_policy = NULL; + + return assertion; + } + else + return NULL; + } + else + return NULL; +} + +axis2_status_t AXIS2_CALL +symmetric_binding_process_alternatives( + const axutil_env_t * env, + neethi_all_t * all, + rp_symmetric_binding_t * symmetric_binding) +{ + + neethi_operator_t *operator = NULL; + axutil_array_list_t *arraylist = NULL; + neethi_assertion_t *assertion = NULL; + neethi_assertion_type_t type; + void *value = NULL; + rp_binding_commons_t *commons = NULL; + rp_symmetric_asymmetric_binding_commons_t *as_commons = NULL; + + int i = 0; + + arraylist = neethi_all_get_policy_components(all, env); + commons = rp_binding_commons_create(env); + as_commons = rp_symmetric_asymmetric_binding_commons_create(env); + + for (i = 0; i < axutil_array_list_size(arraylist, env); i++) + { + operator =(neethi_operator_t *) axutil_array_list_get(arraylist, env, + i); + assertion = + (neethi_assertion_t *) neethi_operator_get_value(operator, env); + value = neethi_assertion_get_value(assertion, env); + type = neethi_assertion_get_type(assertion, env); + + if (type == ASSERTION_TYPE_PROTECTION_TOKEN) + { + rp_property_t *protection_token = NULL; + protection_token = + (rp_property_t *) neethi_assertion_get_value(assertion, env); + if (protection_token) + { + rp_symmetric_binding_set_protection_token(symmetric_binding, + env, protection_token); + } + else + return AXIS2_FAILURE; + } + else if (type == ASSERTION_TYPE_ENCRYPTION_TOKEN) + { + rp_property_t *encryption_token = NULL; + encryption_token = + (rp_property_t *) neethi_assertion_get_value(assertion, env); + if (encryption_token) + { + rp_symmetric_binding_set_encryption_token(symmetric_binding, + env, encryption_token); + } + else + return AXIS2_FAILURE; + } + else if (type == ASSERTION_TYPE_ALGORITHM_SUITE) + { + rp_algorithmsuite_t *algorithmsuite = NULL; + algorithmsuite = + (rp_algorithmsuite_t *) neethi_assertion_get_value(assertion, + env); + if (algorithmsuite) + { + rp_binding_commons_set_algorithmsuite(commons, env, + algorithmsuite); + } + else + return AXIS2_FAILURE; + } + else if (type == ASSERTION_TYPE_INCLUDE_TIMESTAMP) + { + rp_binding_commons_set_include_timestamp(commons, env, AXIS2_TRUE); + } + else if (type == ASSERTION_TYPE_LAYOUT) + { + rp_layout_t *layout = NULL; + layout = (rp_layout_t *) neethi_assertion_get_value(assertion, env); + if (layout) + { + rp_binding_commons_set_layout(commons, env, layout); + } + else + return AXIS2_FAILURE; + } + else if (type == ASSERTION_TYPE_ENCRYPT_BEFORE_SIGNING) + { + rp_symmetric_asymmetric_binding_commons_set_protection_order + (as_commons, env, RP_ENCRYPT_BEFORE_SIGNING); + } + else if (type == ASSERTION_TYPE_SIGN_BEFORE_ENCRYPTING) + { + rp_symmetric_asymmetric_binding_commons_set_protection_order + (as_commons, env, RP_SIGN_BEFORE_ENCRYPTING); + } + else if (type == ASSERTION_TYPE_ENCRYPT_SIGNATURE) + { + rp_symmetric_asymmetric_binding_commons_set_signature_protection + (as_commons, env, AXIS2_TRUE); + } + else if (type == ASSERTION_TYPE_PROTECT_TOKENS) + { + rp_symmetric_asymmetric_binding_commons_set_token_protection + (as_commons, env, AXIS2_TRUE); + } + else if (type == ASSERTION_TYPE_ONLY_SIGN_ENTIRE_HEADERS_AND_BODY) + { + rp_symmetric_asymmetric_binding_commons_set_entire_headers_and_body_signatures + (as_commons, env, AXIS2_TRUE); + } + else if (type == ASSERTION_TYPE_SUPPORTING_TOKENS) + { + rp_supporting_tokens_t *supporting_tokens = NULL; + supporting_tokens = + (rp_supporting_tokens_t *) neethi_assertion_get_value(assertion, + env); + if (supporting_tokens) + { + rp_property_type_t type; + type = rp_supporting_tokens_get_type(supporting_tokens, env); + if (type == RP_PROPERTY_SIGNED_SUPPORTING_TOKEN) + { + rp_binding_commons_set_signed_supporting_tokens(commons, + env, + supporting_tokens); + } + else if (type == RP_PROPERTY_SIGNED_ENDORSING_SUPPORTING_TOKEN) + { + rp_binding_commons_set_signed_endorsing_supporting_tokens + (commons, env, supporting_tokens); + } + else + return AXIS2_FAILURE; + } + else + return AXIS2_FAILURE; + } + else + return AXIS2_FAILURE; + } + 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 AXIS2_SUCCESS; +} --------------------------------------------------------------------- To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org For additional commands, e-mail: axis-cvs-help@ws.apache.org