Author: kaushalye
Date: Mon Jul 23 02:01:05 2007
New Revision: 558665
URL: http://svn.apache.org/viewvc?view=rev&rev=558665
Log:
Changes made on identifying the attributes without depending on the prefix.
Modified:
webservices/rampart/trunk/c/include/oxs_axiom.h
webservices/rampart/trunk/c/include/oxs_constants.h
webservices/rampart/trunk/c/src/omxmlsec/axiom.c
webservices/rampart/trunk/c/src/omxmlsec/tokens/token_encrypted_data.c
webservices/rampart/trunk/c/src/omxmlsec/xml_signature.c
webservices/rampart/trunk/c/src/util/rampart_signature.c
webservices/rampart/trunk/c/src/util/rampart_token_processor.c
Modified: webservices/rampart/trunk/c/include/oxs_axiom.h
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/oxs_axiom.h?view=diff&rev=558665&r1=558664&r2=558665
==============================================================================
--- webservices/rampart/trunk/c/include/oxs_axiom.h (original)
+++ webservices/rampart/trunk/c/include/oxs_axiom.h Mon Jul 23 02:01:05 2007
@@ -71,6 +71,10 @@
axiom_node_t *node,
axis2_char_t *attribute_name);
+ AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+ oxs_axiom_get_attribute_val_of_node_by_qname(const axutil_env_t *env,
+ axiom_node_t *node,
+ axutil_qname_t *qname);
AXIS2_EXTERN axiom_node_t* AXIS2_CALL
oxs_axiom_get_first_child_node_by_name(const axutil_env_t *env,
Modified: webservices/rampart/trunk/c/include/oxs_constants.h
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/oxs_constants.h?view=diff&rev=558665&r1=558664&r2=558665
==============================================================================
--- webservices/rampart/trunk/c/include/oxs_constants.h (original)
+++ webservices/rampart/trunk/c/include/oxs_constants.h Mon Jul 23 02:01:05 2007
@@ -40,6 +40,7 @@
#define OXS_WSSE_XMLNS
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
#define OXS_WSSE_11_XMLNS
"http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd"
#define OXS_WSU "wsu"
+#define OXS_WSU_XMLNS
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
/****************************************************************
ID Prefixes
****************************************************************/
Modified: webservices/rampart/trunk/c/src/omxmlsec/axiom.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/omxmlsec/axiom.c?view=diff&rev=558665&r1=558664&r2=558665
==============================================================================
--- webservices/rampart/trunk/c/src/omxmlsec/axiom.c (original)
+++ webservices/rampart/trunk/c/src/omxmlsec/axiom.c Mon Jul 23 02:01:05 2007
@@ -174,16 +174,79 @@
{
axis2_char_t *attribute_value = NULL;
axiom_element_t *ele = NULL;
- /*axutil_qname_t *qname = NULL;*/
+ axutil_qname_t *qname = NULL;
ele = axiom_node_get_data_element(node, env);
+ /*Interop FIX*/
+ /*attribute_value = axiom_element_get_attribute_value_by_name(ele, env,
attribute_name);*/
+ qname = axutil_qname_create(env, attribute_name, OXS_WSU_XMLNS, NULL);
+ /*attribute_value = axiom_element_get_attribute_value(ele ,env, qname);*/
+ attribute_value = oxs_axiom_get_attribute_val_of_node_by_qname(env, node,
qname);
+ /*if(!attribute_value){
+ oxs_error(env, ERROR_LOCATION, OXS_ERROR_INVALID_DATA,
+ "Cannot find %s attribute", attribute_name);
+ return NULL;
+
+ }*/
+ return attribute_value;
+}
- attribute_value = axiom_element_get_attribute_value_by_name(ele, env,
attribute_name);/*Interop FIX*/
-/* qname = axutil_qname_create(env, "Id", NULL, NULL);
- attribute_value = axiom_element_get_attribute_value(ele ,env, qname);*/
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_axiom_get_attribute_val_of_node_by_qname(const axutil_env_t *env,
+ axiom_node_t *node,
+ axutil_qname_t *qname)
+{
+ /*Qname might NOT contain the prefix*/
+ axiom_element_t *ele = NULL;
+ axutil_hash_t *attr_list = NULL;
+ axutil_hash_index_t *hi = NULL;
+ axis2_char_t *local_name = NULL;
+ axis2_char_t *ns_uri = NULL;
- return attribute_value;
+ ele = axiom_node_get_data_element(node, env);
+ /*Get attribute list of the element*/
+ attr_list = axiom_element_extract_attributes(ele, env, node);
+ if(!attr_list){
+ return NULL;
+ }
+ /*Get localname of the qname*/
+ local_name = axutil_qname_get_localpart(qname, env);
+ /*Get nsuri of the qname*/
+ ns_uri = axutil_qname_get_uri(qname, env);
+ if(!ns_uri){
+ ns_uri = "";
+ }
+ /*Traverse thru all the attributes. If both localname and the nsuri
matches return the val*/
+ for (hi = axutil_hash_first(attr_list, env); hi; hi =
axutil_hash_next(env, hi))
+ {
+ void *attr = NULL;
+ axiom_attribute_t *om_attr = NULL;
+ axutil_hash_this(hi, NULL, NULL, &attr);
+ if (attr)
+ {
+ axis2_char_t *this_attr_name = NULL;
+ axis2_char_t *this_attr_ns_uri = NULL;
+ axiom_namespace_t *attr_ns = NULL;
+
+ om_attr = (axiom_attribute_t*)attr;
+ this_attr_name = axiom_attribute_get_localname(om_attr, env);
+ attr_ns = axiom_attribute_get_namespace(om_attr, env);
+ if(attr_ns){
+ this_attr_ns_uri = axiom_namespace_get_uri(attr_ns, env);
+ }else{
+ this_attr_ns_uri = "";
+ }
+ if(0 == axutil_strcmp(local_name, this_attr_name) && 0 ==
axutil_strcmp(ns_uri, this_attr_ns_uri)){
+ /*Got it !!!*/
+ return axiom_attribute_get_value(om_attr, env);
+ }
+ }
+
+ }
+
+ return NULL;
}
+
AXIS2_EXTERN axiom_node_t* AXIS2_CALL
oxs_axiom_get_first_child_node_by_name(const axutil_env_t *env,
Modified: webservices/rampart/trunk/c/src/omxmlsec/tokens/token_encrypted_data.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/omxmlsec/tokens/token_encrypted_data.c?view=diff&rev=558665&r1=558664&r2=558665
==============================================================================
--- webservices/rampart/trunk/c/src/omxmlsec/tokens/token_encrypted_data.c
(original)
+++ webservices/rampart/trunk/c/src/omxmlsec/tokens/token_encrypted_data.c Mon
Jul 23 02:01:05 2007
@@ -36,6 +36,7 @@
axiom_attribute_t *type_attr = NULL;
axiom_attribute_t *id_attr = NULL;
axiom_namespace_t *ns_obj = NULL;
+ axiom_namespace_t *wsu_ns_obj = NULL;
int ret;
ns_obj = axiom_namespace_create(env, OXS_ENC_NS,
@@ -55,15 +56,16 @@
ret = axiom_element_add_attribute(encrypted_data_ele, env, type_attr,
encrypted_data_node);
}
+ wsu_ns_obj = axiom_namespace_create(env, OXS_WSU_XMLNS, OXS_WSU);
if (id)
{
- id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id, NULL);
+ id_attr = axiom_attribute_create(env, OXS_ATTR_ID, id, wsu_ns_obj);
ret = axiom_element_add_attribute(encrypted_data_ele, env, id_attr,
encrypted_data_node);
}
else
{
/*TODO Get a unique value for this*/
- id_attr = axiom_attribute_create(env, OXS_ATTR_ID, "EncDataId-54321",
NULL);
+ id_attr = axiom_attribute_create(env, OXS_ATTR_ID, "EncDataId-54321",
wsu_ns_obj);
ret = axiom_element_add_attribute(encrypted_data_ele, env, id_attr,
encrypted_data_node);
}
Modified: webservices/rampart/trunk/c/src/omxmlsec/xml_signature.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/omxmlsec/xml_signature.c?view=diff&rev=558665&r1=558664&r2=558665
==============================================================================
--- webservices/rampart/trunk/c/src/omxmlsec/xml_signature.c (original)
+++ webservices/rampart/trunk/c/src/omxmlsec/xml_signature.c Mon Jul 23
02:01:05 2007
@@ -138,7 +138,7 @@
node = oxs_sign_part_get_node(sign_part, env);
/*Get the reference ID from the node and hence to the ds:Reference node*/
- id = oxs_axiom_get_attribute_value_of_node_by_name(env, node, "wsu:Id");
+ id = oxs_axiom_get_attribute_value_of_node_by_name(env, node, "Id");
ref_id = axutil_stracat(env, "#", id);/* <ds:Reference URI="#id">*/
reference_node = oxs_token_build_ds_reference_element(env, parent ,NULL,
ref_id, NULL);
@@ -297,7 +297,7 @@
ref_id2 = axutil_string_substring_starting_at(axutil_strdup(env, ref_id),
1);
/*Find the node refered by this ref_id2 and set to the sign part*/
- reffed_node = oxs_axiom_get_node_by_id(env, scope_node, "wsu:Id", ref_id2
);
+ reffed_node = oxs_axiom_get_node_by_id(env, scope_node, "Id", ref_id2 );
if(reffed_node){
oxs_sign_part_set_node(sign_part, env, reffed_node);
}else{
Modified: webservices/rampart/trunk/c/src/util/rampart_signature.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_signature.c?view=diff&rev=558665&r1=558664&r2=558665
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_signature.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_signature.c Mon Jul 23
02:01:05 2007
@@ -269,7 +269,8 @@
tr = oxs_transforms_factory_produce_transform(env,
OXS_HREF_TRANSFORM_XML_EXC_C14N);
axutil_array_list_add(tr_list, env, tr);
oxs_sign_part_set_transforms(sign_part, env, tr_list);
- oxs_axiom_add_attribute(env, node_to_sign,
OXS_WSU,RAMPART_WSU_XMLNS,OXS_ATTR_ID,id);
+ /*oxs_axiom_add_attribute(env, node_to_sign, OXS_WSU,
RAMPART_WSU_XMLNS,OXS_ATTR_ID,id);*/
+ oxs_axiom_add_attribute(env, node_to_sign, "u",
RAMPART_WSU_XMLNS,OXS_ATTR_ID, id);
oxs_sign_part_set_node(sign_part, env, node_to_sign);
oxs_sign_part_set_digest_mtd(sign_part, env, digest_method);
axutil_array_list_add(sign_parts, env, sign_part);
Modified: webservices/rampart/trunk/c/src/util/rampart_token_processor.c
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_token_processor.c?view=diff&rev=558665&r1=558664&r2=558665
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_token_processor.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_token_processor.c Mon Jul 23
02:01:05 2007
@@ -81,7 +81,7 @@
ref_id = axutil_string_substring_starting_at(axutil_strdup(env, ref), 1);
/*Find the token with the id=ref_id within the scope of scope_node*/
- bst_node = oxs_axiom_get_node_by_id(env, scope_node,"wsu:Id",ref_id);
+ bst_node = oxs_axiom_get_node_by_id(env, scope_node,"Id",ref_id);
if(!bst_node){
oxs_error(env, ERROR_LOCATION, OXS_ERROR_ELEMENT_FAILED, "Error
retrieving element with ID=%s", ref_id);
return AXIS2_FAILURE;