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;


Reply via email to