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 ka...@apache.org on 2006/11/23 06:32:31 UTC

svn commit: r478471 - in /webservices/axis2/trunk/c/rampart: include/ src/handlers/ src/omxmlsec/ src/omxmlsec/openssl/ src/util/

Author: kaushalye
Date: Wed Nov 22 21:32:30 2006
New Revision: 478471

URL: http://svn.apache.org/viewvc?view=rev&rev=478471
Log:
Introducing rampart security processed results.
In the message processing stage certian information(e.g. Username) will be stored in a hash table so that the reciever (e.g. Service) would be able to use them without processing the message again.


Added:
    webservices/axis2/trunk/c/rampart/include/rampart_sec_processed_result.h
    webservices/axis2/trunk/c/rampart/src/util/rampart_sec_processed_result.c
Modified:
    webservices/axis2/trunk/c/rampart/include/oxs_axiom.h
    webservices/axis2/trunk/c/rampart/include/rampart_constants.h
    webservices/axis2/trunk/c/rampart/include/rampart_handler_util.h
    webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/openssl/crypt.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c
    webservices/axis2/trunk/c/rampart/src/util/Makefile.am
    webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.c
    webservices/axis2/trunk/c/rampart/src/util/rampart_util.c
    webservices/axis2/trunk/c/rampart/src/util/username_token.c

Modified: webservices/axis2/trunk/c/rampart/include/oxs_axiom.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_axiom.h?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_axiom.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_axiom.h Wed Nov 22 21:32:30 2006
@@ -47,7 +47,8 @@
 AXIS2_EXTERN axiom_node_t* AXIS2_CALL
 oxs_axiom_get_node_by_id(const axis2_env_t *env,
     axiom_node_t *node,
-    axis2_char_t *id_val);
+    axis2_char_t *attr,
+    axis2_char_t *val);
 
 AXIS2_EXTERN axis2_char_t* AXIS2_CALL
 oxs_axiom_get_attribute_value_of_node_by_name(const axis2_env_t *env,

Modified: webservices/axis2/trunk/c/rampart/include/rampart_constants.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/rampart_constants.h?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/rampart_constants.h (original)
+++ webservices/axis2/trunk/c/rampart/include/rampart_constants.h Wed Nov 22 21:32:30 2006
@@ -123,6 +123,16 @@
 /*Dynamically set values*/
 #define RAMPART_ACTION_PASSWORD "password"
 #define RAMPART_CALLBACK_SPECIFIC_PROPERTY "callbackSpecificProperty"
+
+/*Security processed results*/
+#define RAMPART_SECURITY_PROCESSED_RESULTS "SecurityProcessedResults"
+#define RAMPART_SPR_UT_USERNAME "SPR_UT_username"
+#define RAMPART_SPR_UT_CREATED "SPR_UT_created"
+#define RAMPART_SPR_UT_NONCE "SPR_UT_nonce"
+#define RAMPART_SPR_UT_PASSWORD_TYPE "SPR_UT_passwordType"
+#define RAMPART_SPR_TS_CREATED "SPR_TS_created"
+#define RAMPART_SPR_TS_EXPIRES "SPR_TS_expires"
+
 #ifdef __cplusplus
 }
 #endif

Modified: webservices/axis2/trunk/c/rampart/include/rampart_handler_util.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/rampart_handler_util.h?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/rampart_handler_util.h (original)
+++ webservices/axis2/trunk/c/rampart/include/rampart_handler_util.h Wed Nov 22 21:32:30 2006
@@ -37,7 +37,9 @@
 extern "C"
 {
 #endif
- /**
+
+
+/**
  * Get properties from the axis2 context
  * @param env pointer to environment struct
  * @param ctx axis2 context

Added: webservices/axis2/trunk/c/rampart/include/rampart_sec_processed_result.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/rampart_sec_processed_result.h?view=auto&rev=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/rampart_sec_processed_result.h (added)
+++ webservices/axis2/trunk/c/rampart/include/rampart_sec_processed_result.h Wed Nov 22 21:32:30 2006
@@ -0,0 +1,86 @@
+/*
+ *   Copyright 2003-2004 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
+ *
+ *       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 <rampart_constants.h>
+#include <axis2_utils_defines.h>
+#include <axis2_defines.h>
+#include <axis2_env.h>
+
+/**
+  * @file rampart_sec_processed_result.h
+  * @brief RAMPART-UTIL 
+  */
+#ifndef RAMPART_SEC_PROCESSED_RESULT
+#define RAMPART_SEC_PROCESSED_RESULT
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+  * @defgroup Rampart_Util
+  * @ingroup Rampart_Util
+  */
+/**
+*   Set a security processed result to the message context
+*/
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rampart_set_security_processed_result(const axis2_env_t *env,
+        axis2_msg_ctx_t *msg_ctx,
+        axis2_char_t *key,
+        void *value);
+/**
+*   Get a security processed result from a message context.
+*   A service  may use this method to retirieve a particular result by the key
+*   @env the environment 
+*   @msg_ctx the message context in which data are extracted
+*   @key as specified in rampart_constants section SPR
+*
+*/
+AXIS2_EXTERN void *AXIS2_CALL
+rampart_get_security_processed_result(const axis2_env_t *env,
+        axis2_msg_ctx_t *msg_ctx,
+        axis2_char_t *key);
+
+/**
+*   Set a security processed result property to the message context
+*/
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rampart_set_security_processed_results_property(const axis2_env_t *env,
+    axis2_msg_ctx_t *msg_ctx);
+
+/**
+*   Get the complete set of security processed results
+*/
+AXIS2_EXTERN axis2_hash_t* AXIS2_CALL
+rampart_get_security_processed_results_set(const axis2_env_t *env,
+    axis2_msg_ctx_t *msg_ctx);
+
+/**
+ * Prints all ke/val pairs in the security processed results
+ *
+ */
+AXIS2_EXTERN void AXIS2_CALL
+rampart_print_security_processed_results_set(const axis2_env_t *env,
+    axis2_msg_ctx_t *msg_ctx);
+
+/* @} */
+#ifdef __cplusplus
+}
+#endif
+
+#endif    /* !RAMPART_SEC_PROCESSED_RESULT */

Modified: webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c (original)
+++ webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c Wed Nov 22 21:32:30 2006
@@ -16,6 +16,7 @@
 
 #include <axis2_handler_desc.h>
 #include <axis2_array_list.h>
+#include <axis2_hash.h>
 #include <axiom_soap_const.h>
 #include <axiom_soap_envelope.h>
 #include <axiom_soap_header.h>
@@ -30,6 +31,8 @@
 #include <rampart_timestamp_token.h>
 #include <rampart_util.h>
 #include <rampart_sec_header_processor.h>
+#include <rampart_sec_processed_result.h>
+
 /*************************** Function headers *********************************/
 
 axis2_status_t AXIS2_CALL
@@ -127,11 +130,16 @@
             }
             /*Then re-populate using the axis2_ctx*/
             status = RAMPART_ACTIONS_POPULATE_FROM_CTX(actions, env, ctx);
-
+            
 
             sec_node = rampart_get_security_token(env, msg_ctx, soap_header);
 
             sub_codes = axis2_array_list_create(env, 0);
+            /*Set the security processed results to the message ctx*/
+            status = rampart_set_security_processed_results_property(env, msg_ctx);
+            if(AXIS2_FAILURE == status){
+                AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][rampart_in_handler] Unable to set the security processed results");
+            }
 
             if(!sec_node){
                 AXIS2_LOG_INFO(env->log, "[rampart][rampart_in_handler] No security header element.");
@@ -147,6 +155,7 @@
                 return AXIS2_FAILURE;
             }
             */
+
             /*The main entry point for all security header validations*/    
             status = rampart_shp_process_message(env, msg_ctx, actions, soap_envelope, sec_node, sub_codes);
             if (AXIS2_FAILURE == status)
@@ -155,6 +164,7 @@
                 return AXIS2_FAILURE;
             }                
 
+            /*rampart_print_security_processed_results_set(env, msg_ctx);*/
 
         } /* End of sec_header */
 

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/axiom.c Wed Nov 22 21:32:30 2006
@@ -25,6 +25,7 @@
 #include <axiom_element.h>
 #include <axiom_document.h>
 #include <axiom_stax_builder.h>
+#include <axiom_util.h>
 
 AXIS2_EXTERN int AXIS2_CALL
 oxs_axiom_get_number_of_children_with_qname(const axis2_env_t *env,
@@ -65,37 +66,38 @@
 AXIS2_EXTERN axiom_node_t* AXIS2_CALL
 oxs_axiom_get_node_by_id(const axis2_env_t *env,
     axiom_node_t *node,
-    axis2_char_t *id_val)
+    axis2_char_t *attr,
+    axis2_char_t *val)
 {
     axis2_char_t *attribute_value = NULL;
+    axis2_char_t *localname = NULL;
     
-    attribute_value = oxs_axiom_get_attribute_value_of_node_by_name(env, node, OXS_ATTR_ID);
-    if(0 == AXIS2_STRCMP(id_val, attribute_value) ){
+    if(!node){return NULL;}
+    
+    if(AXIOM_NODE_GET_NODE_TYPE(node, env) != AXIOM_ELEMENT){return NULL;}
+
+    localname = axiom_util_get_localname(node, env);
+    /*AXIS2_LOG_INFO(env->log, "[rampart][axiom] Checking node %s for the attribute %s with value = %s", localname, attr, val);*/
+
+    attribute_value = oxs_axiom_get_attribute_value_of_node_by_name(env, node, attr);
+    if(0 == AXIS2_STRCMP(val, attribute_value) ){
         /*Gottcha.. return this node*/
         return node;
     }else{
-        /*Doesnt match. Search sibling/children*/
-        axiom_node_t *sib_node = NULL;
+        /*Doesn't match? Get the first child*/    
+        axiom_node_t *temp_node = NULL;
 
-        sib_node = node;
-        while(sib_node){
-            axiom_element_t *ele = NULL;
-            axiom_children_iterator_t *iter = NULL;
-
-            ele = AXIOM_NODE_GET_DATA_ELEMENT(sib_node, env);
-            iter = AXIOM_ELEMENT_GET_CHILDREN(ele, env, sib_node);
-            while (AXIS2_TRUE == AXIOM_CHILDREN_ITERATOR_HAS_NEXT(iter, env)){
-                axiom_node_t *child_node = NULL;
-                child_node = AXIOM_CHILDREN_ITERATOR_NEXT(iter, env);
-                /*If the child is an element*/
-                if(AXIOM_ELEMENT == AXIOM_NODE_GET_NODE_TYPE(child_node, env)){
-                    /*Recursive call*/
-                    return oxs_axiom_get_node_by_id(env, child_node, id_val);
-                }
+        temp_node = AXIOM_NODE_GET_FIRST_CHILD(node, env);
+        while (temp_node)
+        {
+            axiom_node_t *res_node = NULL;       
+            res_node = oxs_axiom_get_node_by_id(env, temp_node, attr, val);
+            if(res_node){
+                return res_node;
             }
-            sib_node = AXIOM_NODE_GET_NEXT_SIBLING(sib_node, env);
-        }/*sib_node while*/
-
+            temp_node = AXIOM_NODE_GET_NEXT_SIBLING(temp_node, env);
+        } 
+    
     }
     return NULL;
 }

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c Wed Nov 22 21:32:30 2006
@@ -164,7 +164,7 @@
     axis2_status_t status = AXIS2_FAILURE;
     /*TODO We support RSA encryption only. If any other algorithm is specified, reject*/
 
-    /*1. Try to get th epkey from the asy_ctx*/
+    /*1. Try to get the pkey from the asy_ctx*/
     
     /*2. If not try to load the key from the dec_prop_file*/
     file_name = oxs_asym_ctx_get_file_name(ctx, env);

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/openssl/crypt.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/openssl/crypt.c?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/openssl/crypt.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/openssl/crypt.c Wed Nov 22 21:32:30 2006
@@ -79,7 +79,6 @@
 
         if (do_encrypt == 1)
         {
-            printf("\nEncrypting block[%d] %s", inlen, inbuf);
             AXIS2_LOG_INFO(env->log, "[oxs][crypt.c] Encrypting block[%d] %s", inlen, inbuf);
         }
 
@@ -113,7 +112,6 @@
     {
         /* Error */
         EVP_CIPHER_CTX_cleanup(&ctx);
-        printf("\nERROR:EVP_CipherFinal_ex--- EVP_CIPHER_CTX_cleanup\n");
         AXIS2_LOG_INFO(env->log, "[oxs][crypt.c] EVP_CIPHER_CTX_cleanup ");
         return (-1);
     }

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c Wed Nov 22 21:32:30 2006
@@ -129,7 +129,7 @@
     /*De-serialize the decrypted content to build the node*/
     deserialized_node = (axiom_node_t*)oxs_axiom_deserialize_node(env, decrypted_data);
     if(!deserialized_node){
-        oxs_error(ERROR_LOCATION, OXS_ERROR_ENCRYPT_FAILED,"Cannot deserialize a node from the content.");
+        oxs_error(ERROR_LOCATION, OXS_ERROR_ENCRYPT_FAILED,"Cannot deserialize a node from the content.\n%s", decrypted_data);
         return AXIS2_FAILURE;
     }
     /*Assign deserialized_node to the reference passed*/

Modified: webservices/axis2/trunk/c/rampart/src/util/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/Makefile.am?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/Makefile.am (original)
+++ webservices/axis2/trunk/c/rampart/src/util/Makefile.am Wed Nov 22 21:32:30 2006
@@ -4,7 +4,7 @@
 
 librampart_util_la_SOURCES = rampart_action.c rampart_crypto_util.c \
 							rampart_util.c rampart_handler_util.c username_token.c  timestamp_token.c \
-							rampart_encryption.c rampart_sec_header_processor.c
+							rampart_encryption.c rampart_sec_header_processor.c rampart_sec_processed_result.c
 
 
 librampart_util_la_LIBADD  = -lssl \

Modified: webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.c?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.c (original)
+++ webservices/axis2/trunk/c/rampart/src/util/rampart_sec_header_processor.c Wed Nov 22 21:32:30 2006
@@ -157,20 +157,17 @@
         axiom_node_t *envelope_node = NULL;
         oxs_ctx_t *ctx = NULL;
         axiom_node_t *decrypted_node = NULL; 
-        axiom_soap_body_t *body = NULL;
-        axiom_node_t *body_node = NULL;
 
         /*Get the i-th element and decrypt it */
         id = (axis2_char_t*)AXIS2_ARRAY_LIST_GET(reference_list, env, i);
         AXIS2_LOG_INFO(env->log, "[rampart][shp] Decrypting node, ID=%s", id);
+
+        /*Need to remove # sign from the ID*/
         id2 = axis2_string_substring_starting_at(id, 1);
         envelope_node = AXIOM_SOAP_ENVELOPE_GET_BASE_NODE(soap_envelope, env);
 
         /*Search for the node by its ID*/
-        body = AXIOM_SOAP_ENVELOPE_GET_BODY(soap_envelope, env);
-        body_node = AXIOM_SOAP_BODY_GET_BASE_NODE(body, env);
-        /*TODO Check why this fails for soap envelope node*/
-        enc_data_node = oxs_axiom_get_node_by_id(env, body_node, id2);
+        enc_data_node = oxs_axiom_get_node_by_id(env, envelope_node, OXS_ATTR_ID, id2);
         if(!enc_data_node){
             AXIS2_LOG_INFO(env->log, "[rampart][shp] Node with ID=%s cannot be found", id);
             continue;

Added: webservices/axis2/trunk/c/rampart/src/util/rampart_sec_processed_result.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/rampart_sec_processed_result.c?view=auto&rev=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/rampart_sec_processed_result.c (added)
+++ webservices/axis2/trunk/c/rampart/src/util/rampart_sec_processed_result.c Wed Nov 22 21:32:30 2006
@@ -0,0 +1,120 @@
+/*
+ *   Copyright 2003-2004 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
+ *
+ *       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 <rampart_util.h>
+#include <axis2_util.h>
+#include <axis2_property.h>
+#include <axis2_msg_ctx.h>
+#include <rampart_constants.h>
+#include <rampart_sec_processed_result.h>
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rampart_set_security_processed_result(const axis2_env_t *env,
+        axis2_msg_ctx_t *msg_ctx,
+        axis2_char_t *key,
+        void *value)
+{
+    axis2_hash_t *sec_processed_results = NULL;
+
+    sec_processed_results = rampart_get_security_processed_results_set(env, msg_ctx);
+    if(!sec_processed_results){
+        return AXIS2_FAILURE;
+    }
+    axis2_hash_set(sec_processed_results, key, AXIS2_HASH_KEY_STRING, value);
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][spr] Set %s in Security Processed Results of message context ", key);
+    return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN void *AXIS2_CALL
+rampart_get_security_processed_result(const axis2_env_t *env,
+        axis2_msg_ctx_t *msg_ctx,
+        axis2_char_t *key)
+{
+    axis2_hash_t *sec_processed_results = NULL;
+
+    sec_processed_results = rampart_get_security_processed_results_set(env, msg_ctx);
+    if(!sec_processed_results){
+        return NULL;
+    }
+    return axis2_hash_get(sec_processed_results, key, AXIS2_HASH_KEY_STRING);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rampart_set_security_processed_results_property(const axis2_env_t *env,
+    axis2_msg_ctx_t *msg_ctx)
+{
+    axis2_hash_t *sec_processed_results = NULL;
+    axis2_property_t *sec_processed_results_prop = NULL;
+
+    if(!msg_ctx){
+        return AXIS2_FAILURE;
+    }
+
+    sec_processed_results = axis2_hash_make(env);
+    sec_processed_results_prop = axis2_property_create(env);
+    
+    AXIS2_PROPERTY_SET_VALUE(sec_processed_results_prop, env, sec_processed_results);
+    AXIS2_MSG_CTX_SET_PROPERTY(msg_ctx, env, RAMPART_SECURITY_PROCESSED_RESULTS, sec_processed_results_prop, AXIS2_FALSE);
+
+    return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_hash_t* AXIS2_CALL
+rampart_get_security_processed_results_set(const axis2_env_t *env,
+    axis2_msg_ctx_t *msg_ctx)
+{
+    axis2_property_t *sec_processed_results_prop = NULL;
+    axis2_hash_t *sec_processed_results = NULL;
+
+    sec_processed_results_prop = AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env, RAMPART_SECURITY_PROCESSED_RESULTS, AXIS2_FALSE);
+    if(!sec_processed_results_prop){
+         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][spr] Cannot get %s from msg ctx ", RAMPART_SECURITY_PROCESSED_RESULTS);
+        return NULL;
+    }
+
+    sec_processed_results = (axis2_hash_t*)AXIS2_PROPERTY_GET_VALUE(sec_processed_results_prop, env);
+    if(!sec_processed_results){
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][spr] Cannot get Security Processed Results Hash table from the property");
+        return NULL;
+    }
+
+    return sec_processed_results;
+}
+
+AXIS2_EXTERN void AXIS2_CALL
+rampart_print_security_processed_results_set(const axis2_env_t *env,
+    axis2_msg_ctx_t *msg_ctx)
+{
+    axis2_hash_t *sec_processed_results = NULL;
+    axis2_hash_index_t *hi = NULL;
+    const void *key = NULL;
+    void *val = NULL;
+    
+    sec_processed_results = rampart_get_security_processed_results_set(env, msg_ctx);
+    if(!sec_processed_results){
+        return;
+    }
+    
+    for (hi = axis2_hash_first(sec_processed_results, env); hi; hi = axis2_hash_next(env, hi)) {
+        axis2_hash_this(hi, &key, NULL, &val);
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[rampart][spr] (key, val) %s = %s\n", (axis2_char_t*)key, (axis2_char_t*)val);
+        /*printf("%s = %s\n", (axis2_char_t*)key, (axis2_char_t*)val);*/
+    }
+
+}

Modified: webservices/axis2/trunk/c/rampart/src/util/rampart_util.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/rampart_util.c?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/rampart_util.c (original)
+++ webservices/axis2/trunk/c/rampart/src/util/rampart_util.c Wed Nov 22 21:32:30 2006
@@ -14,16 +14,20 @@
  *   limitations under the License.
  */
 
-/* Rampart_crypto_util will contain crypto functionalities of the rampart model
+/* 
  *
  */
 #include <stdio.h>
 #include <rampart_util.h>
 #include <axis2_util.h>
 #include <axis2_base64.h>
+#include <axis2_property.h>
 #include <time.h>
 #include <oxs_buffer.h>
 #include <openssl_util.h>
+#include <axis2_msg_ctx.h>
+#include <rampart_constants.h>
+
 /*Calculate the hash of concatenated string of
  * nonce, created and the password.
  *
@@ -34,6 +38,7 @@
 
 
 /*#define PRINTINFO 1 */
+
 AXIS2_EXTERN axis2_char_t* AXIS2_CALL rampart_generate_nonce(const axis2_env_t *env)
 {
     oxs_buffer_t *buffer = NULL;

Modified: webservices/axis2/trunk/c/rampart/src/util/username_token.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/username_token.c?view=diff&rev=478471&r1=478470&r2=478471
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/username_token.c (original)
+++ webservices/axis2/trunk/c/rampart/src/util/username_token.c Wed Nov 22 21:32:30 2006
@@ -512,11 +512,13 @@
             else if (0 == AXIS2_STRCMP(localname,  RAMPART_SECURITY_USERNAMETOKEN_NONCE))
             {
                 nonce = AXIOM_ELEMENT_GET_TEXT(element, env, node);
+                rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_UT_NONCE, nonce);
 
             }
             else if (0 == AXIS2_STRCMP(localname ,  RAMPART_SECURITY_USERNAMETOKEN_CREATED))
             {
                 created = AXIOM_ELEMENT_GET_TEXT(element, env, node);
+                rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_UT_CREATED, created);
 
             }
             else
@@ -539,6 +541,9 @@
         AXIS2_LOG_INFO(env->log,  "[rampart][rampart_usernametoken] Username is not specified");
         return AXIS2_FAILURE;
     }
+    
+    /*Set the username to the SPR*/
+    rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_UT_USERNAME, username);
 
     ctx = AXIS2_MSG_CTX_GET_BASE(msg_ctx, env);
     pw_callback_module = RAMPART_ACTIONS_GET_PW_CB_CLASS(actions, env);
@@ -560,10 +565,12 @@
     {
         AXIS2_LOG_INFO(env->log,  "[rampart][rampart_usernametoken] Generating digest to compare from the password");
         password_to_compare = rampart_crypto_sha1(env, nonce, created, password_from_svr);
+        rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_UT_PASSWORD_TYPE, RAMPART_PASSWORD_DIGEST_URI);
     }
     else
     {
         password_to_compare = password_from_svr;
+        rampart_set_security_processed_result(env, msg_ctx, RAMPART_SPR_UT_PASSWORD_TYPE, RAMPART_PASSWORD_TEXT_URI);
     }
 
     /*The BIG moment. Compare passwords*/



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org