You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by ma...@apache.org on 2007/08/01 11:09:57 UTC

svn commit: r561724 - in /webservices/rampart/trunk/c/src/util: rampart_context.c rampart_encryption.c rampart_sec_header_processor.c rampart_signature.c

Author: manjula
Date: Wed Aug  1 02:09:57 2007
New Revision: 561724

URL: http://svn.apache.org/viewvc?view=rev&rev=561724
Log:
Fixing some bugs related to RAMPARTC-25.

Modified:
    webservices/rampart/trunk/c/src/util/rampart_context.c
    webservices/rampart/trunk/c/src/util/rampart_encryption.c
    webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c
    webservices/rampart/trunk/c/src/util/rampart_signature.c

Modified: webservices/rampart/trunk/c/src/util/rampart_context.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_context.c?view=diff&rev=561724&r1=561723&r2=561724
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_context.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_context.c Wed Aug  1 02:09:57 2007
@@ -974,8 +974,10 @@
         int i = 0;
         soap_header_blocks = axiom_soap_header_get_header_blocks_with_namespace_uri(soap_header,env,namespace);
         if(!soap_header_blocks)
-            return AXIS2_FAILURE;
-
+        {
+            AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] Header cannot find with namespace %s",namespace);
+            return AXIS2_SUCCESS;
+        }
         for(i=0 ; i<axutil_array_list_size(soap_header_blocks,env); i++)
         {
             axiom_soap_header_block_t *header_block = NULL;
@@ -989,7 +991,6 @@
                     axutil_array_list_add(nodes_to_encrypt_or_sign,env,node);
                 }
             }
-
         }/*eof for*/
         return AXIS2_SUCCESS;
     }
@@ -1023,11 +1024,13 @@
                             axutil_array_list_add(nodes_to_encrypt_or_sign,env,ret_node);
                             return AXIS2_SUCCESS;
                         }
-
                     }
-
                 }
-
+            }
+            else
+            {
+                AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] Cannot find the header with name %s", local_name);
+                return AXIS2_FAILURE;
             }
         }
     }
@@ -1604,46 +1607,20 @@
         signed_encrypted_parts = rp_secpolicy_get_encrypted_parts(rampart_context->secpolicy,env);
 
     if(!signed_encrypted_parts)
-        return AXIS2_FAILURE;
-
-    parts = rp_signed_encrypted_parts_get_headers(signed_encrypted_parts,env);
-    if(!parts || (axutil_array_list_size(parts,env)==0))
     {
-        if(rp_signed_encrypted_parts_get_body(signed_encrypted_parts,env))
+        if(is_sign)
         {
-            axiom_soap_body_t *body = NULL;
-            axiom_node_t *body_node = NULL;
-            axiom_node_t *body_child_node = NULL;
-
-            if(is_sign)
-                AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] No Signed parts specified. Using the body.");
-            else
-                AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] No Encrypted parts specified. Using the body.");
-
-            body = axiom_soap_envelope_get_body(soap_envelope, env);
-            body_node = axiom_soap_body_get_base_node(body, env);
-            body_child_node = axiom_node_get_first_element(body_node, env);
-            if(is_sign)
-            {    
-                axutil_array_list_add(nodes_to_sign_or_encrypt, env, body_node);
-            }
-            else
-            {
-                axutil_array_list_add(nodes_to_sign_or_encrypt, env, body_child_node);
-            }    
-            return AXIS2_SUCCESS;
+            AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] Nothing to sign outside Secyrity header.");
         }
         else
         {
-            if(is_sign)
-                AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] Nothing to sign outside Secyrity header.");
-            else
-                AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] Nothing to encrypt outside Secyrity header.");
-
-            return AXIS2_FAILURE;
+            AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] Nothing to encrypt outside Secyrity header.");
         }
+        return AXIS2_SUCCESS;
     }
-    else
+
+    parts = rp_signed_encrypted_parts_get_headers(signed_encrypted_parts,env);
+    if(parts && (axutil_array_list_size(parts,env)!=0))
     {
         int i = 0;
         for(i=0; i<axutil_array_list_size(parts,env); i++)
@@ -1657,30 +1634,31 @@
                     return AXIS2_FAILURE;
                 }
             }
+        }
+    }        
+
+    if(rp_signed_encrypted_parts_get_body(signed_encrypted_parts,env))
+    {
+        axiom_soap_body_t *body = NULL;
+        axiom_node_t *body_node = NULL;
+        axiom_node_t *body_child_node = NULL;
 
+        AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] Including the body.");
+        body = axiom_soap_envelope_get_body(soap_envelope, env);
+        body_node = axiom_soap_body_get_base_node(body, env);
+        body_child_node = axiom_node_get_first_element(body_node, env);
+        if(is_sign)
+        {
+            axutil_array_list_add(nodes_to_sign_or_encrypt, env, body_node);
         }
-        if(rp_signed_encrypted_parts_get_body(signed_encrypted_parts,env))
+        else
         {
-            axiom_soap_body_t *body = NULL;
-            axiom_node_t *body_node = NULL;
-            axiom_node_t *body_child_node = NULL;
-
-            AXIS2_LOG_INFO(env->log, "[rampart][rampart_context] Including the body.");
-            body = axiom_soap_envelope_get_body(soap_envelope, env);
-            body_node = axiom_soap_body_get_base_node(body, env);
-            body_child_node = axiom_node_get_first_element(body_node, env);
-            if(is_sign)
-            {
-                axutil_array_list_add(nodes_to_sign_or_encrypt, env, body_node);
-            }
-            else
-            {
-                axutil_array_list_add(nodes_to_sign_or_encrypt, env, body_child_node);
-            }
-            return AXIS2_SUCCESS;
+            axutil_array_list_add(nodes_to_sign_or_encrypt, env, body_child_node);
         }
+        
+        return AXIS2_SUCCESS;
+    }    
 
-    }
     return status;
 }
 

Modified: webservices/rampart/trunk/c/src/util/rampart_encryption.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_encryption.c?view=diff&rev=561724&r1=561723&r2=561724
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_encryption.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_encryption.c Wed Aug  1 02:09:57 2007
@@ -96,11 +96,16 @@
 
     signature_protection = rampart_context_is_encrypt_signature(rampart_context, env);
 
-    /*status = rampart_context_get_nodes_to_encrypt(rampart_context,env,soap_envelope,nodes_to_encrypt);*/
-
     status = rampart_enc_get_nodes_to_encrypt(rampart_context, env, soap_envelope, nodes_to_encrypt);
 
-    if((status!=AXIS2_SUCCESS)||(axutil_array_list_size(nodes_to_encrypt, env)==0))
+    if(status != AXIS2_SUCCESS)
+    {
+        AXIS2_LOG_INFO(env->log, "[rampart][rampart_signature] Error occured in Adding Encrypted parts..");
+        axutil_array_list_free(nodes_to_encrypt, env);
+        nodes_to_encrypt = NULL;
+        return AXIS2_FAILURE;
+    }
+    if((axutil_array_list_size(nodes_to_encrypt, env)==0))
     {
         if(!signature_protection)
         {    

Modified: webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c?view=diff&rev=561724&r1=561723&r2=561724
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c Wed Aug  1 02:09:57 2007
@@ -524,7 +524,7 @@
                         ref = oxs_token_get_reference(env, str_child_node);
                         ref_id = axutil_string_substring_starting_at(axutil_strdup(env, ref), 1);
 
-                        encrypted_key_node = oxs_axiom_get_node_by_id(env, sec_node, "wsu:Id", ref_id);
+                        encrypted_key_node = oxs_axiom_get_node_by_id(env, sec_node, "Id", ref_id);
                         if(encrypted_key_node)
                         {
                             ref_list_node = axiom_node_detach(ref_list_node, env); 

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=561724&r1=561723&r2=561724
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_signature.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_signature.c Wed Aug  1 02:09:57 2007
@@ -153,8 +153,15 @@
 
     /*  status = rampart_context_get_nodes_to_sign(rampart_context,env,soap_envelope,nodes_to_sign);*/
     status = rampart_sig_get_nodes_to_sign(rampart_context,env,soap_envelope,nodes_to_sign);
+    if(status != AXIS2_SUCCESS)
+    {
+        AXIS2_LOG_INFO(env->log, "[rampart][rampart_signature] Error occured in Adding signed parts.");
+        axutil_array_list_free(nodes_to_sign, env);
+        nodes_to_sign = NULL;
+        return AXIS2_FAILURE;
+    }
 
-    if((status!=AXIS2_SUCCESS)||(axutil_array_list_size(nodes_to_sign,env)==0))
+    if((axutil_array_list_size(nodes_to_sign,env)==0))
     {
         AXIS2_LOG_INFO(env->log, "[rampart][rampart_signature] No parts specified or specified parts can't be found for Signature.");
         return AXIS2_SUCCESS;