You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sh...@apache.org on 2008/08/20 14:59:35 UTC
svn commit: r687306 - in /webservices/axis2/trunk/c: neethi/include/
neethi/src/ neethi/src/secpolicy/builder/ neethi/src/secpolicy/model/
src/core/deployment/
Author: shankar
Date: Wed Aug 20 05:59:34 2008
New Revision: 687306
URL: http://svn.apache.org/viewvc?rev=687306&view=rev
Log:
WS-Security Policy 1.2 and WS-Policy 1.5 support
Modified:
webservices/axis2/trunk/c/neethi/include/neethi_assertion.h
webservices/axis2/trunk/c/neethi/include/rp_defines.h
webservices/axis2/trunk/c/neethi/include/rp_security_context_token.h
webservices/axis2/trunk/c/neethi/include/rp_security_context_token_builder.h
webservices/axis2/trunk/c/neethi/include/rp_token.h
webservices/axis2/trunk/c/neethi/include/rp_x509_token.h
webservices/axis2/trunk/c/neethi/src/assertion_builder.c
webservices/axis2/trunk/c/neethi/src/secpolicy/builder/issued_token_builder.c
webservices/axis2/trunk/c/neethi/src/secpolicy/builder/saml_token_builder.c
webservices/axis2/trunk/c/neethi/src/secpolicy/builder/security_context_token_builder.c
webservices/axis2/trunk/c/neethi/src/secpolicy/builder/x509_token_builder.c
webservices/axis2/trunk/c/neethi/src/secpolicy/model/security_context_token.c
webservices/axis2/trunk/c/neethi/src/secpolicy/model/token.c
webservices/axis2/trunk/c/neethi/src/secpolicy/model/x509_token.c
webservices/axis2/trunk/c/src/core/deployment/module_builder.c
webservices/axis2/trunk/c/src/core/deployment/svc_builder.c
Modified: webservices/axis2/trunk/c/neethi/include/neethi_assertion.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/include/neethi_assertion.h?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/include/neethi_assertion.h (original)
+++ webservices/axis2/trunk/c/neethi/include/neethi_assertion.h Wed Aug 20 05:59:34 2008
@@ -52,6 +52,7 @@
ASSERTION_TYPE_SECURITY_CONTEXT_TOKEN,
ASSERTION_TYPE_REQUIRE_EXTERNAL_URI,
ASSERTION_TYPE_SC10_SECURITY_CONTEXT_TOKEN,
+ ASSERTION_TYPE_SC13_SECURITY_CONTEXT_TOKEN,
ASSERTION_TYPE_ISSUER,
ASSERTION_TYPE_BOOTSTRAP_POLICY,
ASSERTION_TYPE_MUST_SUPPORT_REF_KEY_IDENTIFIER,
@@ -91,7 +92,8 @@
ASSERTION_TYPE_WSS_SAML_V11_TOKEN_V11,
ASSERTION_TYPE_WSS_SAML_V20_TOKEN_V11,
ASSERTION_TYPE_SIGNED_ENCRYPTED_PARTS,
- ASSERTION_TYPE_REQUIRE_DERIVED_KEYS,
+ ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC10,
+ ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC13,
ASSERTION_TYPE_MUST_SUPPORT_CLIENT_CHALLENGE,
ASSERTION_TYPE_MUST_SUPPORT_SERVER_CHALLENGE,
ASSERTION_TYPE_REQUIRE_CLIENT_ENTROPY,
Modified: webservices/axis2/trunk/c/neethi/include/rp_defines.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/include/rp_defines.h?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/include/rp_defines.h (original)
+++ webservices/axis2/trunk/c/neethi/include/rp_defines.h Wed Aug 20 05:59:34 2008
@@ -191,6 +191,7 @@
#define RP_REQUIRE_EXTERNAL_URI_REFERENCE "RequireExternalUriReference"
#define RP_SC10_SECURITY_CONTEXT_TOKEN "SC10SecurityContextToken"
+#define RP_SC13_SECURITY_CONTEXT_TOKEN "SC13SecurityContextToken"
#define RP_BOOTSTRAP_POLICY "BootstrapPolicy"
#define RP_ISSUER "Issuer"
Modified: webservices/axis2/trunk/c/neethi/include/rp_security_context_token.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/include/rp_security_context_token.h?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/include/rp_security_context_token.h (original)
+++ webservices/axis2/trunk/c/neethi/include/rp_security_context_token.h Wed Aug 20 05:59:34 2008
@@ -1,10 +1,11 @@
/*
- * Copyright 2004,2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * 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
*
@@ -25,6 +26,7 @@
#include <rp_includes.h>
#include <neethi_policy.h>
+#include <rp_token.h>
#ifdef __cplusplus
extern "C"
@@ -53,16 +55,27 @@
const axutil_env_t * env,
axis2_char_t * inclusion);
- AXIS2_EXTERN axis2_bool_t AXIS2_CALL
- rp_security_context_token_get_derivedkeys(
+ AXIS2_EXTERN derive_key_type_t AXIS2_CALL
+ rp_security_context_token_get_derivedkey(
rp_security_context_token_t * security_context_token,
const axutil_env_t * env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
- rp_security_context_token_set_derivedkeys(
+ rp_security_context_token_set_derivedkey(
rp_security_context_token_t * security_context_token,
const axutil_env_t * env,
- axis2_bool_t derivedkeys);
+ derive_key_type_t derivedkey);
+
+ AXIS2_EXTERN derive_key_version_t AXIS2_CALL
+ rp_security_context_token_get_derivedkey_version(
+ rp_security_context_token_t *security_context_token,
+ const axutil_env_t *env);
+
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ rp_security_context_token_set_derivedkey_version(
+ rp_security_context_token_t *security_context_token,
+ const axutil_env_t *env,
+ derive_key_version_t version);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rp_security_context_token_get_require_external_uri_ref(
Modified: webservices/axis2/trunk/c/neethi/include/rp_security_context_token_builder.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/include/rp_security_context_token_builder.h?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/include/rp_security_context_token_builder.h (original)
+++ webservices/axis2/trunk/c/neethi/include/rp_security_context_token_builder.h Wed Aug 20 05:59:34 2008
@@ -38,6 +38,7 @@
const axutil_env_t * env,
axiom_node_t * node,
axiom_element_t * element,
+ axis2_char_t *sp_ns_uri,
axis2_bool_t is_secure_conversation_token);
#ifdef __cplusplus
Modified: webservices/axis2/trunk/c/neethi/include/rp_token.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/include/rp_token.h?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/include/rp_token.h (original)
+++ webservices/axis2/trunk/c/neethi/include/rp_token.h Wed Aug 20 05:59:34 2008
@@ -39,6 +39,12 @@
DERIVEKEY_EXPLICIT
} derive_key_type_t;
+ typedef enum
+ {
+ DERIVEKEY_VERSION_SC10 =0,
+ DERIVEKEY_VERSION_SC13
+ } derive_key_version_t;
+
typedef struct rp_token_t rp_token_t;
AXIS2_EXTERN rp_token_t *AXIS2_CALL
@@ -99,6 +105,28 @@
rp_token_t * token,
const axutil_env_t * env);
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ rp_token_set_derive_key_version(
+ rp_token_t *token,
+ const axutil_env_t *env,
+ derive_key_version_t version);
+
+ AXIS2_EXTERN derive_key_version_t AXIS2_CALL
+ rp_token_get_derive_key_version(
+ rp_token_t *token,
+ const axutil_env_t *env);
+
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ rp_token_set_inclusion(
+ rp_token_t *token,
+ const axutil_env_t *env,
+ axis2_char_t *inclusion);
+
+ AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+ rp_token_get_inclusion(
+ rp_token_t *token,
+ const axutil_env_t *env);
+
#ifdef __cplusplus
}
Modified: webservices/axis2/trunk/c/neethi/include/rp_x509_token.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/include/rp_x509_token.h?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/include/rp_x509_token.h (original)
+++ webservices/axis2/trunk/c/neethi/include/rp_x509_token.h Wed Aug 20 05:59:34 2008
@@ -1,10 +1,11 @@
/*
- * Copyright 2004,2005 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * 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
*
@@ -24,6 +25,7 @@
*/
#include <rp_includes.h>
+#include <rp_token.h>
#ifdef __cplusplus
extern "C"
@@ -52,16 +54,27 @@
const axutil_env_t * env,
axis2_char_t * inclusion);
- AXIS2_EXTERN axis2_bool_t AXIS2_CALL
- rp_x509_token_get_derivedkeys(
+ AXIS2_EXTERN derive_key_type_t AXIS2_CALL
+ rp_x509_token_get_derivedkey(
rp_x509_token_t * x509_token,
const axutil_env_t * env);
AXIS2_EXTERN axis2_status_t AXIS2_CALL
- rp_x509_token_set_derivedkeys(
+ rp_x509_token_set_derivedkey(
rp_x509_token_t * x509_token,
const axutil_env_t * env,
- axis2_bool_t derivedkeys);
+ derive_key_type_t derivedkeys);
+
+ AXIS2_EXTERN derive_key_version_t AXIS2_CALL
+ rp_x509_token_get_derivedkey_version(
+ rp_x509_token_t *x509_token,
+ const axutil_env_t *env);
+
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ rp_x509_token_set_derivedkey_version(
+ rp_x509_token_t *x509_token,
+ const axutil_env_t *env,
+ derive_key_version_t version);
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rp_x509_token_get_require_key_identifier_reference(
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=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/src/assertion_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/assertion_builder.c Wed Aug 20 05:59:34 2008
@@ -97,11 +97,11 @@
}
else if(!axutil_strcmp(localname, RP_SECURITY_CONTEXT_TOKEN))
{
- return rp_security_context_token_builder_build(env, node, element, AXIS2_FALSE);
+ return rp_security_context_token_builder_build(env, node, element, ns, AXIS2_FALSE);
}
else if(!axutil_strcmp(localname, RP_SECURE_CONVERSATION_TOKEN))
{
- return rp_security_context_token_builder_build(env, node, element, AXIS2_TRUE);
+ return rp_security_context_token_builder_build(env, node, element, ns, AXIS2_TRUE);
}
else if(!axutil_strcmp(localname, RP_ENCRYPT_BEFORE_SIGNING))
{
@@ -366,7 +366,18 @@
{
neethi_assertion_t *assertion = NULL;
assertion = neethi_assertion_create(env);
- neethi_assertion_set_value(assertion, env, NULL, ASSERTION_TYPE_REQUIRE_DERIVED_KEYS);
+ if(!axutil_strcmp(ns, RP_SP_NS_11))
+ {
+ /* derived key should be as defined in WS-SecConversation 1.0 */
+ neethi_assertion_set_value(
+ assertion, env, NULL, ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC10);
+ }
+ else
+ {
+ /* derived key should be as defined in WS-SecConversation 1.3 */
+ neethi_assertion_set_value(
+ assertion, env, NULL, ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC13);
+ }
return assertion;
}
else if(!axutil_strcmp(localname, RP_REQUIRE_EXTERNAL_URI_REFERENCE))
@@ -384,6 +395,14 @@
ASSERTION_TYPE_SC10_SECURITY_CONTEXT_TOKEN);
return assertion;
}
+ else if(!axutil_strcmp(localname, RP_SC13_SECURITY_CONTEXT_TOKEN))
+ {
+ neethi_assertion_t *assertion = NULL;
+ assertion = neethi_assertion_create(env);
+ neethi_assertion_set_value(assertion, env, NULL,
+ ASSERTION_TYPE_SC13_SECURITY_CONTEXT_TOKEN);
+ return assertion;
+ }
else if(!axutil_strcmp(localname, RP_ISSUER))
{
neethi_assertion_t *assertion = NULL;
Modified: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/issued_token_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/issued_token_builder.c?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/src/secpolicy/builder/issued_token_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/issued_token_builder.c Wed Aug 20 05:59:34 2008
@@ -28,7 +28,7 @@
neethi_all_t *all= NULL;
axutil_array_list_t *alternatives= NULL;
neethi_operator_t *component= NULL;
- axis2_char_t *inclusoin_value= NULL;
+ axis2_char_t *inclusion_value= NULL;
axutil_qname_t *qname= NULL;
axiom_node_t *issuer_node= NULL;
axiom_element_t *issuer_ele= NULL;
@@ -42,15 +42,22 @@
issued_token = rp_issued_token_create(env);
qname = axutil_qname_create(env, RP_INCLUDE_TOKEN, RP_SP_NS_11, RP_SP_PREFIX);
-
- inclusoin_value = axiom_element_get_attribute_value(element, env, qname);
-
+ inclusion_value = axiom_element_get_attribute_value(element, env, qname);
axutil_qname_free(qname, env);
qname = NULL;
- if (inclusoin_value)
+ if(!inclusion_value)
+ {
+ /* we can try whether WS-SP1.2 specific inclusion value */
+ qname = axutil_qname_create(env, RP_INCLUDE_TOKEN, RP_SP_NS_12, RP_SP_PREFIX);
+ inclusion_value = axiom_element_get_attribute_value(element, env, qname);
+ axutil_qname_free(qname, env);
+ qname = NULL;
+ }
+
+ if (inclusion_value)
{
- rp_issued_token_set_inclusion(issued_token, env, inclusoin_value);
+ rp_issued_token_set_inclusion(issued_token, env, inclusion_value);
}
qname = axutil_qname_create(env, RP_ISSUER, RP_SP_NS_11, RP_SP_PREFIX);
@@ -147,7 +154,7 @@
env);
type = neethi_assertion_get_type(assertion, env);
- if (type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS)
+ if (type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC10)
{
rp_issued_token_set_derivedkeys(issued_token, env, AXIS2_TRUE);
}
Modified: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/saml_token_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/saml_token_builder.c?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/src/secpolicy/builder/saml_token_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/saml_token_builder.c Wed Aug 20 05:59:34 2008
@@ -42,12 +42,19 @@
saml_token = rp_saml_token_create(env);
qname = axutil_qname_create(env, RP_INCLUDE_TOKEN, RP_SP_NS_11, RP_SP_PREFIX);
-
inclusion_value = axiom_element_get_attribute_value(element, env, qname);
-
axutil_qname_free(qname, env);
qname = NULL;
+ if(!inclusion_value)
+ {
+ /* we can try whether WS-SP1.2 specific inclusion value */
+ qname = axutil_qname_create(env, RP_INCLUDE_TOKEN, RP_SP_NS_12, RP_SP_PREFIX);
+ inclusion_value = axiom_element_get_attribute_value(element, env, qname);
+ axutil_qname_free(qname, env);
+ qname = NULL;
+ }
+
rp_saml_token_set_inclusion(saml_token, env, inclusion_value);
child_node = axiom_node_get_first_element(node, env);
@@ -122,7 +129,7 @@
(neethi_assertion_t *) neethi_operator_get_value(operator, env);
type = neethi_assertion_get_type(assertion, env);
- if(type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS)
+ if(type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC10)
{
rp_saml_token_set_derivedkeys(saml_token, env, AXIS2_TRUE);
}
Modified: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/security_context_token_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/security_context_token_builder.c?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/src/secpolicy/builder/security_context_token_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/security_context_token_builder.c Wed Aug 20 05:59:34 2008
@@ -36,6 +36,7 @@
const axutil_env_t *env,
axiom_node_t *node,
axiom_element_t *element,
+ axis2_char_t *sp_ns_uri,
axis2_bool_t is_secure_conversation_token)
{
rp_security_context_token_t *security_context_token = NULL;
@@ -52,15 +53,25 @@
neethi_policy_t *normalized_policy = NULL;
security_context_token = rp_security_context_token_create(env);
- qname = axutil_qname_create(env, RP_INCLUDE_TOKEN, RP_SP_NS_11, RP_SP_PREFIX);
-
+ qname = axutil_qname_create(env, RP_INCLUDE_TOKEN, sp_ns_uri, RP_SP_PREFIX);
inclusion_value = axiom_element_get_attribute_value(element, env, qname);
-
axutil_qname_free(qname, env);
qname = NULL;
rp_security_context_token_set_inclusion(security_context_token, env, inclusion_value);
- rp_security_context_token_set_is_secure_conversation_token(security_context_token, env, is_secure_conversation_token);
+ rp_security_context_token_set_is_secure_conversation_token(
+ security_context_token, env, is_secure_conversation_token);
+
+ if(!axutil_strcmp(sp_ns_uri, RP_SP_NS_11))
+ {
+ rp_security_context_token_set_sc10_security_context_token(
+ security_context_token, env, AXIS2_TRUE);
+ }
+ else
+ {
+ rp_security_context_token_set_sc10_security_context_token(
+ security_context_token, env, AXIS2_FALSE);
+ }
child_node = axiom_node_get_first_element(node, env);
if (!child_node)
@@ -89,7 +100,7 @@
axis2_char_t *ns = NULL;
axutil_qname_t *node_qname = NULL;
- node_qname = axiom_element_get_qname(element, env, node);
+ node_qname = axiom_element_get_qname(child_element, env, child_node);
if(!node_qname)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
@@ -177,10 +188,17 @@
(neethi_assertion_t *) neethi_operator_get_value(operator, env);
type = neethi_assertion_get_type(assertion, env);
- if(type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS)
+ if(type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC10)
{
- rp_security_context_token_set_derivedkeys(security_context_token, env,
- AXIS2_TRUE);
+ rp_security_context_token_set_derivedkey(security_context_token, env, DERIVEKEY_NEEDED);
+ rp_security_context_token_set_derivedkey_version(
+ security_context_token, env, DERIVEKEY_VERSION_SC10);
+ }
+ else if(type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC13)
+ {
+ rp_security_context_token_set_derivedkey(security_context_token, env, DERIVEKEY_NEEDED);
+ rp_security_context_token_set_derivedkey_version(
+ security_context_token, env, DERIVEKEY_VERSION_SC13);
}
else if(type == ASSERTION_TYPE_REQUIRE_EXTERNAL_URI)
{
@@ -192,6 +210,11 @@
rp_security_context_token_set_sc10_security_context_token(security_context_token, env,
AXIS2_TRUE);
}
+ else if(type == ASSERTION_TYPE_SC13_SECURITY_CONTEXT_TOKEN)
+ {
+ rp_security_context_token_set_sc10_security_context_token(security_context_token, env,
+ AXIS2_FALSE);
+ }
else if(type == ASSERTION_TYPE_ISSUER)
{
axis2_char_t *issuer = NULL;
Modified: webservices/axis2/trunk/c/neethi/src/secpolicy/builder/x509_token_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/builder/x509_token_builder.c?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/src/secpolicy/builder/x509_token_builder.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/builder/x509_token_builder.c Wed Aug 20 05:59:34 2008
@@ -51,12 +51,19 @@
x509_token = rp_x509_token_create(env);
qname = axutil_qname_create(env, RP_INCLUDE_TOKEN, RP_SP_NS_11, RP_SP_PREFIX);
-
inclusion_value = axiom_element_get_attribute_value(element, env, qname);
-
axutil_qname_free(qname, env);
qname = NULL;
+ if(!inclusion_value)
+ {
+ /* we can try whether WS-SP1.2 specific inclusion value */
+ qname = axutil_qname_create(env, RP_INCLUDE_TOKEN, RP_SP_NS_12, RP_SP_PREFIX);
+ inclusion_value = axiom_element_get_attribute_value(element, env, qname);
+ axutil_qname_free(qname, env);
+ qname = NULL;
+ }
+
rp_x509_token_set_inclusion(x509_token, env, inclusion_value);
child_node = axiom_node_get_first_element(node, env);
@@ -129,11 +136,16 @@
(neethi_assertion_t *) neethi_operator_get_value(operator, env);
type = neethi_assertion_get_type(assertion, env);
- if(type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS)
+ if(type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC10)
+ {
+ rp_x509_token_set_derivedkey(x509_token, env, DERIVEKEY_NEEDED);
+ rp_x509_token_set_derivedkey_version(x509_token, env, DERIVEKEY_VERSION_SC10);
+ }
+ else if(type == ASSERTION_TYPE_REQUIRE_DERIVED_KEYS_SC13)
{
- rp_x509_token_set_derivedkeys(x509_token, env,
- AXIS2_TRUE);
- }
+ rp_x509_token_set_derivedkey(x509_token, env, DERIVEKEY_NEEDED);
+ rp_x509_token_set_derivedkey_version(x509_token, env, DERIVEKEY_VERSION_SC13);
+ }
else if (type == ASSERTION_TYPE_REQUIRE_KEY_IDENTIFIRE_REFERENCE)
{
rp_x509_token_set_require_key_identifier_reference(x509_token, env,
Modified: webservices/axis2/trunk/c/neethi/src/secpolicy/model/security_context_token.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/model/security_context_token.c?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/src/secpolicy/model/security_context_token.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/model/security_context_token.c Wed Aug 20 05:59:34 2008
@@ -1,4 +1,3 @@
-
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -20,11 +19,9 @@
struct rp_security_context_token_t
{
- axis2_char_t *inclusion;
- axis2_bool_t derivedkeys;
+ rp_token_t *token;
axis2_bool_t require_external_uri_ref;
axis2_bool_t sc10_security_context_token;
- axis2_char_t *issuer;
neethi_policy_t *bootstrap_policy;
axis2_bool_t is_secure_conversation_token;
int ref;
@@ -36,29 +33,34 @@
{
rp_security_context_token_t *security_context_token = NULL;
- AXIS2_ENV_CHECK(env, NULL);
-
- security_context_token =
- (rp_security_context_token_t *) AXIS2_MALLOC(env->allocator,
- sizeof
- (rp_security_context_token_t));
+ security_context_token = (rp_security_context_token_t *)
+ AXIS2_MALLOC(env->allocator, sizeof(rp_security_context_token_t));
- if (security_context_token == NULL)
+ if(!security_context_token)
{
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "[neethi] Security context token assertion creation failed. Insufficient memory");
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
return NULL;
}
- security_context_token->inclusion = RP_INCLUDE_ALWAYS;
- security_context_token->derivedkeys = AXIS2_FALSE;
+
+ security_context_token->ref = 0;
security_context_token->require_external_uri_ref = AXIS2_FALSE;
security_context_token->sc10_security_context_token = AXIS2_FALSE;
security_context_token->bootstrap_policy = NULL;
- security_context_token->issuer = NULL;
security_context_token->is_secure_conversation_token = AXIS2_FALSE;
- security_context_token->ref = 0;
- return security_context_token;
+ security_context_token->token = rp_token_create(env);
+ if(!security_context_token->token)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "[neethi] Security context token assertion creation failed.");
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ rp_security_context_token_free(security_context_token, env);
+ return NULL;
+ }
+ return security_context_token;
}
AXIS2_EXTERN void AXIS2_CALL
@@ -66,8 +68,6 @@
rp_security_context_token_t * security_context_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (security_context_token)
{
if (--(security_context_token->ref) > 0)
@@ -80,10 +80,10 @@
neethi_policy_free(security_context_token->bootstrap_policy, env);
}
+ rp_token_free(security_context_token->token, env);
AXIS2_FREE(env->allocator, security_context_token);
security_context_token = NULL;
}
- return;
}
/* Implementations */
@@ -93,9 +93,7 @@
rp_security_context_token_t * security_context_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
- return security_context_token->inclusion;
+ return rp_token_get_inclusion(security_context_token->token, env);
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -104,34 +102,41 @@
const axutil_env_t * env,
axis2_char_t * inclusion)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, inclusion, AXIS2_FAILURE);
-
- security_context_token->inclusion = inclusion;
- return AXIS2_SUCCESS;
+ return rp_token_set_inclusion(security_context_token->token, env, inclusion);
}
-AXIS2_EXTERN axis2_bool_t AXIS2_CALL
-rp_security_context_token_get_derivedkeys(
+AXIS2_EXTERN derive_key_type_t AXIS2_CALL
+rp_security_context_token_get_derivedkey(
rp_security_context_token_t * security_context_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
- return security_context_token->derivedkeys;
+ return rp_token_get_derivedkey_type(security_context_token->token, env);
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
-rp_security_context_token_set_derivedkeys(
+rp_security_context_token_set_derivedkey(
rp_security_context_token_t * security_context_token,
const axutil_env_t * env,
- axis2_bool_t derivedkeys)
+ derive_key_type_t derivedkey)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, derivedkeys, AXIS2_FAILURE);
+ return rp_token_set_derivedkey_type(security_context_token->token, env, derivedkey);
+}
- security_context_token->derivedkeys = derivedkeys;
- return AXIS2_SUCCESS;
+AXIS2_EXTERN derive_key_version_t AXIS2_CALL
+rp_security_context_token_get_derivedkey_version(
+ rp_security_context_token_t *security_context_token,
+ const axutil_env_t *env)
+{
+ return rp_token_get_derive_key_version(security_context_token->token, env);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_security_context_token_set_derivedkey_version(
+ rp_security_context_token_t *security_context_token,
+ const axutil_env_t *env,
+ derive_key_version_t version)
+{
+ return rp_token_set_derive_key_version(security_context_token->token, env, version);
}
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
@@ -139,8 +144,6 @@
rp_security_context_token_t * security_context_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
return security_context_token->require_external_uri_ref;
}
@@ -150,11 +153,7 @@
const axutil_env_t * env,
axis2_bool_t require_external_uri_ref)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, require_external_uri_ref, AXIS2_FAILURE);
-
security_context_token->require_external_uri_ref = require_external_uri_ref;
-
return AXIS2_SUCCESS;
}
@@ -163,9 +162,7 @@
rp_security_context_token_t * security_context_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
- return security_context_token->require_external_uri_ref;
+ return security_context_token->sc10_security_context_token;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -174,22 +171,16 @@
const axutil_env_t * env,
axis2_bool_t sc10_security_context_token)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, sc10_security_context_token, AXIS2_FAILURE);
-
- security_context_token->sc10_security_context_token =
- sc10_security_context_token;
-
+ security_context_token->sc10_security_context_token = sc10_security_context_token;
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
rp_security_context_token_get_issuer(
- rp_security_context_token_t *security_context_token,
- const axutil_env_t *env)
+ rp_security_context_token_t *security_context_token,
+ const axutil_env_t *env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- return security_context_token->issuer;
+ return rp_token_get_issuer(security_context_token->token, env);
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -198,19 +189,14 @@
const axutil_env_t * env,
axis2_char_t *issuer)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, issuer, AXIS2_FAILURE);
-
- security_context_token->issuer = issuer;
- return AXIS2_SUCCESS;
+ return rp_token_set_issuer(security_context_token->token, env, issuer);
}
AXIS2_EXTERN neethi_policy_t *AXIS2_CALL
rp_security_context_token_get_bootstrap_policy(
- rp_security_context_token_t *security_context_token,
- const axutil_env_t *env)
+ rp_security_context_token_t *security_context_token,
+ const axutil_env_t *env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
return security_context_token->bootstrap_policy;
}
@@ -220,19 +206,15 @@
const axutil_env_t * env,
neethi_policy_t *bootstrap_policy)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, bootstrap_policy, AXIS2_FAILURE);
-
security_context_token->bootstrap_policy = bootstrap_policy;
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
rp_security_context_token_get_is_secure_conversation_token(
- rp_security_context_token_t *security_context_token,
- const axutil_env_t *env)
+ rp_security_context_token_t *security_context_token,
+ const axutil_env_t *env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
return security_context_token->is_secure_conversation_token;
}
@@ -242,8 +224,6 @@
const axutil_env_t * env,
axis2_bool_t is_secure_conversation_token)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
security_context_token->is_secure_conversation_token = is_secure_conversation_token;
return AXIS2_SUCCESS;
}
Modified: webservices/axis2/trunk/c/neethi/src/secpolicy/model/token.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/model/token.c?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/src/secpolicy/model/token.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/model/token.c Wed Aug 20 05:59:34 2008
@@ -21,9 +21,11 @@
struct rp_token_t
{
axis2_char_t *issuer;
- axis2_bool_t is_issuer_name; /* shows whether 'issuer' points to issuer name or end point */
+ axis2_char_t *inclusion;
axiom_node_t *claim;
+ axis2_bool_t is_issuer_name; /* shows whether 'issuer' points to issuer name or end point */
derive_key_type_t derive_key;
+ derive_key_version_t derive_key_version;
int ref;
};
@@ -41,10 +43,12 @@
"[neethi] Token creation failed. Insufficient memory");
return NULL;
}
- token->issuer = RP_INCLUDE_ALWAYS;
+ token->issuer = NULL;
token->is_issuer_name = AXIS2_FALSE;
token->claim = NULL;
token->derive_key = DERIVEKEY_NONE;
+ token->derive_key_version = DERIVEKEY_VERSION_SC13;
+ token->inclusion = RP_INCLUDE_ALWAYS_SP12;
token->ref = 0;
return token;
@@ -87,6 +91,42 @@
return AXIS2_SUCCESS;
}
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_token_set_derive_key_version(
+ rp_token_t *token,
+ const axutil_env_t *env,
+ derive_key_version_t version)
+{
+ token->derive_key_version = version;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN derive_key_version_t AXIS2_CALL
+rp_token_get_derive_key_version(
+ rp_token_t *token,
+ const axutil_env_t *env)
+{
+ return token->derive_key_version;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_token_set_inclusion(
+ rp_token_t *token,
+ const axutil_env_t *env,
+ axis2_char_t *inclusion)
+{
+ token->inclusion = inclusion;
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+rp_token_get_inclusion(
+ rp_token_t *token,
+ const axutil_env_t *env)
+{
+ return token->inclusion;
+}
+
AXIS2_EXTERN derive_key_type_t AXIS2_CALL
rp_token_get_derivedkey_type(
rp_token_t * token,
Modified: webservices/axis2/trunk/c/neethi/src/secpolicy/model/x509_token.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/neethi/src/secpolicy/model/x509_token.c?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/neethi/src/secpolicy/model/x509_token.c (original)
+++ webservices/axis2/trunk/c/neethi/src/secpolicy/model/x509_token.c Wed Aug 20 05:59:34 2008
@@ -20,8 +20,7 @@
struct rp_x509_token_t
{
- axis2_char_t *inclusion;
- axis2_bool_t derivedkeys;
+ rp_token_t *token;
axis2_bool_t require_key_identifier_reference;
axis2_bool_t require_issuer_serial_reference;
axis2_bool_t require_embedded_token_reference;
@@ -36,25 +35,29 @@
const axutil_env_t * env)
{
rp_x509_token_t *x509_token = NULL;
+ x509_token = (rp_x509_token_t *) AXIS2_MALLOC(env->allocator, sizeof(rp_x509_token_t));
- AXIS2_ENV_CHECK(env, NULL);
-
- x509_token = (rp_x509_token_t *) AXIS2_MALLOC(env->allocator,
- sizeof(rp_x509_token_t));
-
- if (x509_token == NULL)
+ if (!x509_token)
{
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "[neethi] X509 token assertion creation failed. Insufficient memory");
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
return NULL;
}
- x509_token->inclusion = RP_INCLUDE_ALWAYS;
- x509_token->derivedkeys = AXIS2_FALSE;
x509_token->require_key_identifier_reference = AXIS2_FALSE;
x509_token->require_issuer_serial_reference = AXIS2_FALSE;
x509_token->require_embedded_token_reference = AXIS2_FALSE;
x509_token->require_thumb_print_reference = AXIS2_FALSE;
x509_token->token_version_and_type = RP_WSS_X509_V3_TOKEN_10;
x509_token->ref = 0;
+
+ x509_token->token = rp_token_create(env);
+ if(!x509_token->token)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[neethi] X509 token assertion creation failed.");
+ rp_x509_token_free(x509_token, env);
+ return NULL;
+ }
return x509_token;
}
@@ -63,18 +66,17 @@
rp_x509_token_t * x509_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
if (x509_token)
{
if (--(x509_token->ref) > 0)
{
return;
}
+
+ rp_token_free(x509_token->token, env);
AXIS2_FREE(env->allocator, x509_token);
x509_token = NULL;
}
- return;
}
/* Implementations */
@@ -84,9 +86,7 @@
rp_x509_token_t * x509_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, NULL);
-
- return x509_token->inclusion;
+ return rp_token_get_inclusion(x509_token->token, env);
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -95,35 +95,41 @@
const axutil_env_t * env,
axis2_char_t * inclusion)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, inclusion, AXIS2_FAILURE);
-
- x509_token->inclusion = inclusion;
-
- return AXIS2_SUCCESS;
+ return rp_token_set_inclusion(x509_token->token, env, inclusion);
}
-AXIS2_EXTERN axis2_bool_t AXIS2_CALL
-rp_x509_token_get_derivedkeys(
+AXIS2_EXTERN derive_key_type_t AXIS2_CALL
+rp_x509_token_get_derivedkey(
rp_x509_token_t * x509_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-
- return x509_token->derivedkeys;
+ return rp_token_get_derivedkey_type(x509_token->token, env);
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
-rp_x509_token_set_derivedkeys(
+rp_x509_token_set_derivedkey(
rp_x509_token_t * x509_token,
const axutil_env_t * env,
- axis2_bool_t derivedkeys)
+ derive_key_type_t derivedkeys)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, derivedkeys, AXIS2_FALSE);
- x509_token->derivedkeys = derivedkeys;
+ return rp_token_set_derivedkey_type(x509_token->token, env, derivedkeys);
+}
- return AXIS2_SUCCESS;
+AXIS2_EXTERN derive_key_version_t AXIS2_CALL
+rp_x509_token_get_derivedkey_version(
+ rp_x509_token_t *x509_token,
+ const axutil_env_t *env)
+{
+ return rp_token_get_derive_key_version(x509_token->token, env);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rp_x509_token_set_derivedkey_version(
+ rp_x509_token_t *x509_token,
+ const axutil_env_t *env,
+ derive_key_version_t version)
+{
+ return rp_token_set_derive_key_version(x509_token->token, env, version);
}
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
@@ -131,8 +137,6 @@
rp_x509_token_t * x509_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-
return x509_token->require_key_identifier_reference;
}
@@ -142,14 +146,8 @@
const axutil_env_t * env,
axis2_bool_t require_key_identifier_reference)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, require_key_identifier_reference,
- AXIS2_FAILURE);
- x509_token->require_key_identifier_reference =
- require_key_identifier_reference;
-
+ x509_token->require_key_identifier_reference = require_key_identifier_reference;
return AXIS2_SUCCESS;
-
}
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
@@ -157,8 +155,6 @@
rp_x509_token_t * x509_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-
return x509_token->require_issuer_serial_reference;
}
@@ -168,14 +164,8 @@
const axutil_env_t * env,
axis2_bool_t require_issuer_serial_reference)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, require_issuer_serial_reference,
- AXIS2_FAILURE);
- x509_token->require_issuer_serial_reference =
- require_issuer_serial_reference;
-
+ x509_token->require_issuer_serial_reference = require_issuer_serial_reference;
return AXIS2_SUCCESS;
-
}
AXIS2_EXTERN axis2_bool_t AXIS2_CALL
@@ -183,8 +173,6 @@
rp_x509_token_t * x509_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-
return x509_token->require_embedded_token_reference;
}
@@ -194,12 +182,7 @@
const axutil_env_t * env,
axis2_bool_t require_embedded_token_reference)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, require_embedded_token_reference,
- AXIS2_FAILURE);
- x509_token->require_embedded_token_reference =
- require_embedded_token_reference;
-
+ x509_token->require_embedded_token_reference = require_embedded_token_reference;
return AXIS2_SUCCESS;
}
@@ -208,8 +191,6 @@
rp_x509_token_t * x509_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-
return x509_token->require_thumb_print_reference;
}
@@ -219,10 +200,7 @@
const axutil_env_t * env,
axis2_bool_t require_thumb_print_reference)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, require_thumb_print_reference, AXIS2_FAILURE);
x509_token->require_thumb_print_reference = require_thumb_print_reference;
-
return AXIS2_SUCCESS;
}
@@ -231,8 +209,6 @@
rp_x509_token_t * x509_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, NULL);
-
return x509_token->token_version_and_type;
}
@@ -242,9 +218,6 @@
const axutil_env_t * env,
axis2_char_t * token_version_and_type)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, token_version_and_type, AXIS2_FAILURE);
-
x509_token->token_version_and_type = token_version_and_type;
return AXIS2_SUCCESS;
}
@@ -254,7 +227,6 @@
rp_x509_token_t * x509_token,
const axutil_env_t * env)
{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
x509_token->ref++;
return AXIS2_SUCCESS;
}
Modified: webservices/axis2/trunk/c/src/core/deployment/module_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/module_builder.c?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/module_builder.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/module_builder.c Wed Aug 20 05:59:34 2008
@@ -483,14 +483,18 @@
/* processing <wsp:Policy> .. </..> elements */
- qpolicy =
- axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
- itr =
- axiom_element_get_children_with_qname(op_element, env, qpolicy,
- op_node);
+ qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(op_element, env, qpolicy, op_node);
axutil_qname_free(qpolicy, env);
qpolicy = NULL;
+ if(!axiom_children_qname_iterator_has_next(itr, env))
+ {
+ qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_POLICY_15_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(op_element, env, qpolicy, op_node);
+ axutil_qname_free(qpolicy, env);
+ qpolicy = NULL;
+ }
if (itr)
{
axis2_process_policy_elements(env, AXIS2_MODULE_OPERATION_POLICY, itr,
@@ -498,14 +502,19 @@
}
/* processing <wsp:PolicyReference> .. </..> elements */
- qpolicy =
- axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
- itr =
- axiom_element_get_children_with_qname(op_element, env, qpolicy,
- op_node);
+ qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(op_element, env, qpolicy, op_node);
axutil_qname_free(qpolicy, env);
qpolicy = NULL;
+ if(!axiom_children_qname_iterator_has_next(itr, env))
+ {
+ qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_POLICY_15_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(op_element, env, qpolicy, op_node);
+ axutil_qname_free(qpolicy, env);
+ qpolicy = NULL;
+ }
+
if (itr)
{
axis2_process_policy_reference_elements(env, AXIS2_POLICY_REF, itr,
Modified: webservices/axis2/trunk/c/src/core/deployment/svc_builder.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/svc_builder.c?rev=687306&r1=687305&r2=687306&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/svc_builder.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/svc_builder.c Wed Aug 20 05:59:34 2008
@@ -465,10 +465,16 @@
processing <wsp:Policy> .. </..> elements
*/
qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
- itr = axiom_element_get_children_with_qname(svc_element, env,
- qpolicy, svc_node);
+ itr = axiom_element_get_children_with_qname(svc_element, env, qpolicy, svc_node);
axutil_qname_free(qpolicy, env);
qpolicy = NULL;
+ if(!axiom_children_qname_iterator_has_next(itr, env))
+ {
+ qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_POLICY_15_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(svc_element, env, qpolicy, svc_node);
+ axutil_qname_free(qpolicy, env);
+ qpolicy = NULL;
+ }
if (itr)
{
@@ -477,14 +483,18 @@
}
/* processing <wsp:PolicyReference> .. </..> elements */
- qpolicy =
- axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
- itr =
- axiom_element_get_children_with_qname(svc_element, env, qpolicy,
- svc_node);
+ qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(svc_element, env, qpolicy, svc_node);
axutil_qname_free(qpolicy, env);
qpolicy = NULL;
+ if(!axiom_children_qname_iterator_has_next(itr, env))
+ {
+ qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_POLICY_15_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(svc_element, env, qpolicy, svc_node);
+ axutil_qname_free(qpolicy, env);
+ qpolicy = NULL;
+ }
if (itr)
{
axis2_process_policy_reference_elements(env, AXIS2_POLICY_REF, itr,
@@ -638,14 +648,19 @@
/* processing <wsp:Policy> .. </..> elements */
- qpolicy =
- axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
- itr =
- axiom_element_get_children_with_qname(op_element, env, qpolicy,
- op_node);
+ qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(op_element, env, qpolicy, op_node);
axutil_qname_free(qpolicy, env);
qpolicy = NULL;
+ if(!axiom_children_qname_iterator_has_next(itr, env))
+ {
+ qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_POLICY_15_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(op_element, env, qpolicy, op_node);
+ axutil_qname_free(qpolicy, env);
+ qpolicy = NULL;
+ }
+
if (itr)
{
axis2_process_policy_elements(env, AXIS2_SERVICE_POLICY, itr,
@@ -653,14 +668,19 @@
}
/* processing <wsp:PolicyReference> .. </..> elements */
- qpolicy =
- axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
- itr =
- axiom_element_get_children_with_qname(op_element, env, qpolicy,
- op_node);
+ qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(op_element, env, qpolicy, op_node);
axutil_qname_free(qpolicy, env);
qpolicy = NULL;
+ if(!axiom_children_qname_iterator_has_next(itr, env))
+ {
+ qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_POLICY_15_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(op_element, env, qpolicy, op_node);
+ axutil_qname_free(qpolicy, env);
+ qpolicy = NULL;
+ }
+
if (itr)
{
axis2_process_policy_reference_elements(env, AXIS2_POLICY_REF, itr,
@@ -752,13 +772,18 @@
/* processing <wsp:Policy> .. </..> elements */
- qpolicy =
- axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
- itr =
- axiom_element_get_children_with_qname(element, env, qpolicy,
- node);
+ qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(element, env, qpolicy, node);
axutil_qname_free(qpolicy, env);
qpolicy = NULL;
+
+ if(!axiom_children_qname_iterator_has_next(itr, env))
+ {
+ qpolicy = axutil_qname_create(env, NEETHI_POLICY, NEETHI_POLICY_15_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(element, env, qpolicy, node);
+ axutil_qname_free(qpolicy, env);
+ qpolicy = NULL;
+ }
if (itr)
{
@@ -770,15 +795,19 @@
}
/* processing <wsp:PolicyReference> .. </..> elements */
- qpolicy =
- axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE,
- NULL);
- itr =
- axiom_element_get_children_with_qname(element, env, qpolicy,
- node);
+ qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(element, env, qpolicy,node);
axutil_qname_free(qpolicy, env);
qpolicy = NULL;
+ if(!axiom_children_qname_iterator_has_next(itr, env))
+ {
+ qpolicy = axutil_qname_create(env, NEETHI_REFERENCE, NEETHI_POLICY_15_NAMESPACE, NULL);
+ itr = axiom_element_get_children_with_qname(element, env, qpolicy,node);
+ axutil_qname_free(qpolicy, env);
+ qpolicy = NULL;
+ }
+
if (itr)
{
axis2_process_policy_reference_elements(env, AXIS2_POLICY_REF,