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 mi...@apache.org on 2008/06/12 09:36:41 UTC
svn commit: r666997 - in /webservices/rampart/trunk/c: include/
samples/replay_detector/ src/handlers/ src/util/
Author: milinda
Date: Thu Jun 12 00:36:40 2008
New Revision: 666997
URL: http://svn.apache.org/viewvc?rev=666997&view=rev
Log:
Improving password function handling logic and adding new members to rampart context to enable parsing extra void pointer to replay detector function.
Modified:
webservices/rampart/trunk/c/include/rampart_context.h
webservices/rampart/trunk/c/include/rampart_replay_detector.h
webservices/rampart/trunk/c/samples/replay_detector/ (props changed)
webservices/rampart/trunk/c/src/handlers/ (props changed)
webservices/rampart/trunk/c/src/util/rampart_context.c
webservices/rampart/trunk/c/src/util/rampart_engine.c
webservices/rampart/trunk/c/src/util/rampart_replay_detector.c
webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c
webservices/rampart/trunk/c/src/util/rampart_username_token.c
Modified: webservices/rampart/trunk/c/include/rampart_context.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rampart_context.h?rev=666997&r1=666996&r2=666997&view=diff
==============================================================================
--- webservices/rampart/trunk/c/include/rampart_context.h (original)
+++ webservices/rampart/trunk/c/include/rampart_context.h Thu Jun 12 00:36:40 2008
@@ -53,12 +53,13 @@
typedef axis2_char_t *(AXIS2_CALL*
password_callback_fn)(const axutil_env_t *env,
const axis2_char_t *username,
- void *ctx);
+ void *user_params);
typedef axis2_status_t (AXIS2_CALL*
rampart_is_replayed_fn)(const axutil_env_t *env,
axis2_msg_ctx_t* msg_ctx,
- rampart_context_t *rampart_context);
+ rampart_context_t *rampart_context,
+ void *user_params);
typedef rampart_authn_provider_status_t (AXIS2_CALL*
auth_password_func)(const axutil_env_t* env,
@@ -247,7 +248,7 @@
rampart_context_set_pwcb_function(rampart_context_t *rampart_context,
const axutil_env_t *env,
password_callback_fn pwcb_function,
- void *ctx);
+ void *user_params);
/**
*
* @param rampart_context
@@ -259,8 +260,19 @@
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_replay_detect_function(rampart_context_t *rampart_context,
- const axutil_env_t *env,
- rampart_is_replayed_fn is_replayed_function);
+ const axutil_env_t *env,
+ rampart_is_replayed_fn is_replayed_function,
+ void *user_params);
+
+ /**
+ * @param rampart_context
+ * @param env pointer to environment struct,Must not be NULL.
+ * @returns user parameters for replay detector function or NULL
+ */
+ AXIS2_EXTERN void * AXIS2_CALL
+ rampart_context_get_rd_user_params(
+ rampart_context_t *rampart_context,
+ const axutil_env_t *env);
/**
*
* @param rampart_context
@@ -496,8 +508,8 @@
* AXIS2_SUCCESS on success and AXIS2_FAILURE on error
*/
- AXIS2_EXTERN void* AXIS2_CALL
- rampart_context_get_ctx(
+ AXIS2_EXTERN void * AXIS2_CALL
+ rampart_context_get_pwcb_user_params(
rampart_context_t *rampart_context,
const axutil_env_t *env);
/**
Modified: webservices/rampart/trunk/c/include/rampart_replay_detector.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rampart_replay_detector.h?rev=666997&r1=666996&r2=666997&view=diff
==============================================================================
--- webservices/rampart/trunk/c/include/rampart_replay_detector.h (original)
+++ webservices/rampart/trunk/c/include/rampart_replay_detector.h Thu Jun 12 00:36:40 2008
@@ -88,10 +88,10 @@
* @returns status of the op. AXIS2_SUCCESS on success and AXIS2_FAILURE on error
*/
AXIS2_EXTERN axis2_status_t AXIS2_CALL
- rampart_replay_detector_with_linked_list(
- const axutil_env_t *env,
+ rampart_replay_detector_with_linked_list(const axutil_env_t *env,
axis2_msg_ctx_t* msg_ctx,
- rampart_context_t *rampart_context);
+ rampart_context_t *rampart_context,
+ void *user_params);
/**
* @param linked_list linked list structure where messages/fields are stored
Propchange: webservices/rampart/trunk/c/samples/replay_detector/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Jun 12 00:36:40 2008
@@ -0,0 +1,2 @@
+.deps
+.libs
Propchange: webservices/rampart/trunk/c/src/handlers/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Jun 12 00:36:40 2008
@@ -0,0 +1,2 @@
+.deps
+.libs
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?rev=666997&r1=666996&r2=666997&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_context.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_context.c Thu Jun 12 00:36:40 2008
@@ -70,8 +70,15 @@
axis2_bool_t require_ut;
axutil_array_list_t *key_list;
- /*This is used in callback functions.*/
- void *ctx;
+ /* This is used in callback functions.
+ * Used to store password callback user parameters.
+ */
+ void *pwcb_user_params;
+
+ /* This is used in replay detector functions.
+ * Used to store replay detector user parameters.
+ */
+ void *rd_user_params;
/* Used to store and track whether we found the clients certificate while processing
* the security headers key info element. found_cert_in_shp is used to track the status.
@@ -190,7 +197,8 @@
rampart_context->authenticate_with_digest = NULL;
rampart_context->require_ut = AXIS2_FALSE;
rampart_context->require_timestamp = AXIS2_FALSE;
- rampart_context->ctx = NULL;
+ rampart_context->rd_user_params = NULL;
+ rampart_context->pwcb_user_params = NULL;
rampart_context->ref = 0;
rampart_context->encryption_token_id = NULL;
@@ -491,26 +499,36 @@
rampart_context_set_pwcb_function(rampart_context_t *rampart_context,
const axutil_env_t *env,
password_callback_fn pwcb_function,
- void *ctx)
+ void *user_params)
{
AXIS2_PARAM_CHECK(env->error,pwcb_function,AXIS2_FAILURE);
rampart_context->pwcb_function = pwcb_function;
- rampart_context->ctx = ctx;
+ rampart_context->pwcb_user_params = user_params;
return AXIS2_SUCCESS;
}
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_replay_detect_function(rampart_context_t *rampart_context,
const axutil_env_t *env,
- rampart_is_replayed_fn is_replayed_function)
+ rampart_is_replayed_fn is_replayed_function,
+ void *user_params)
{
AXIS2_PARAM_CHECK(env->error, is_replayed_function, AXIS2_FAILURE);
rampart_context->is_replayed_function = is_replayed_function;
+ rampart_context->rd_user_params = user_params;
return AXIS2_SUCCESS;
}
+AXIS2_EXTERN void * AXIS2_CALL
+rampart_context_get_rd_user_params(
+ rampart_context_t *rampart_context,
+ const axutil_env_t *env)
+{
+ return rampart_context->rd_user_params;
+}
+
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_context_set_password_type(rampart_context_t *rampart_context,
const axutil_env_t *env,
@@ -707,12 +725,12 @@
}
-AXIS2_EXTERN void* AXIS2_CALL
-rampart_context_get_ctx(
+AXIS2_EXTERN void * AXIS2_CALL
+rampart_context_get_pwcb_user_params(
rampart_context_t *rampart_context,
const axutil_env_t *env)
{
- return rampart_context->ctx;
+ return rampart_context->pwcb_user_params;
}
AXIS2_EXTERN int AXIS2_CALL
Modified: webservices/rampart/trunk/c/src/util/rampart_engine.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_engine.c?rev=666997&r1=666996&r2=666997&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_engine.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_engine.c Thu Jun 12 00:36:40 2008
@@ -81,8 +81,7 @@
axis2_char_t *pkcs12_password = NULL;
axis2_char_t *pkcs12_buf = NULL;
password_callback_fn password_function = NULL;
- rampart_callback_t *password_callback = NULL;
- void *param = NULL;
+ rampart_callback_t *password_callback = NULL;
pkcs12_keystore_t *key_store = NULL;
is_server_side = axis2_msg_ctx_get_server_side(msg_ctx, env);
@@ -235,6 +234,8 @@
password_function = rampart_context_get_pwcb_function(rampart_context, env);
if(password_function)
{
+ void *param = NULL;
+ param = rampart_context_get_pwcb_user_params(rampart_context, env);
password = (*password_function)(env, enc_user, param);
pkcs12_password = password;
}
@@ -346,7 +347,9 @@
* this function will be used*/
if(is_inflow)
{
- rampart_context_set_replay_detect_function(rampart_context, env, rampart_replay_detector_with_linked_list);
+ void *rd_param = NULL;
+ rd_param = rampart_context_get_rd_user_params(rampart_context, env);
+ rampart_context_set_replay_detect_function(rampart_context, env, rampart_replay_detector_with_linked_list, rd_param);
}
}
return rampart_context;
Modified: webservices/rampart/trunk/c/src/util/rampart_replay_detector.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_replay_detector.c?rev=666997&r1=666996&r2=666997&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_replay_detector.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_replay_detector.c Thu Jun 12 00:36:40 2008
@@ -259,7 +259,8 @@
AXIS2_EXTERN axis2_status_t AXIS2_CALL
rampart_replay_detector_with_linked_list(const axutil_env_t *env,
axis2_msg_ctx_t* msg_ctx,
- rampart_context_t *rampart_context)
+ rampart_context_t *rampart_context,
+ void *user_params)
{
axutil_linked_list_t *ll = NULL;
const axis2_char_t *msg_id = NULL;
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?rev=666997&r1=666996&r2=666997&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_sec_header_processor.c Thu Jun 12 00:36:40 2008
@@ -1686,7 +1686,7 @@
rd_fn = rampart_context_get_replay_detect_function(rampart_context, env);
if(rd_fn)
{
- status = (*rd_fn)(env, msg_ctx, rampart_context);
+ status = (*rd_fn)(env, msg_ctx, rampart_context, rampart_context_get_rd_user_params(rampart_context, env));
if(status != AXIS2_SUCCESS)
{
/*Scream .. replayed*/
Modified: webservices/rampart/trunk/c/src/util/rampart_username_token.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_username_token.c?rev=666997&r1=666996&r2=666997&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_username_token.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_username_token.c Thu Jun 12 00:36:40 2008
@@ -83,7 +83,7 @@
password_function = rampart_context_get_pwcb_function(rampart_context, env);
if(password_function)
{
- param = rampart_context_get_ctx(rampart_context, env);
+ param = rampart_context_get_pwcb_user_params(rampart_context, env);
if(!param)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
@@ -510,7 +510,7 @@
password_function = rampart_context_get_pwcb_function(rampart_context, env);
if(password_function)
{
- param = rampart_context_get_ctx(rampart_context, env);
+ param = rampart_context_get_pwcb_user_params(rampart_context, env);
if(!param)
{
rampart_create_fault_envelope(env, RAMPART_FAULT_FAILED_CHECK,