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 su...@apache.org on 2008/03/31 11:56:26 UTC

svn commit: r642945 [1/2] - in /webservices/rampart/trunk/c: build/win32/ include/ src/omxmlsec/ src/trust/ src/util/

Author: supun
Date: Mon Mar 31 02:56:07 2008
New Revision: 642945

URL: http://svn.apache.org/viewvc?rev=642945&view=rev
Log: (empty)

Modified:
    webservices/rampart/trunk/c/build/win32/configure.in
    webservices/rampart/trunk/c/include/oxs_key_mgr.h
    webservices/rampart/trunk/c/include/rampart_context.h
    webservices/rampart/trunk/c/include/trust_sts_client.h
    webservices/rampart/trunk/c/src/omxmlsec/key_mgr.c
    webservices/rampart/trunk/c/src/omxmlsec/transforms_factory.c
    webservices/rampart/trunk/c/src/trust/sts_client.c
    webservices/rampart/trunk/c/src/util/rampart_context.c
    webservices/rampart/trunk/c/src/util/rampart_signature.c

Modified: webservices/rampart/trunk/c/build/win32/configure.in
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/build/win32/configure.in?rev=642945&r1=642944&r2=642945&view=diff
==============================================================================
--- webservices/rampart/trunk/c/build/win32/configure.in (original)
+++ webservices/rampart/trunk/c/build/win32/configure.in Mon Mar 31 02:56:07 2008
@@ -1,11 +1,11 @@
 # Set the path to axis2 binary installation.
-AXIS2_BIN_DIR = E:\axis2c\build\axis2c-bin-1.1.0-win32
+AXIS2_BIN_DIR = E:\axis2c\build\deploy
 
 # Set the path to OpenSSL binary installation (ver 0.9.8a or above).
-OPENSSL_BIN_DIR = E:\OpenSSL
+OPENSSL_BIN_DIR = C:\OpenSSL
 
 # Set this to 1 if debug code should be generated, 0 otherwise.
-DEBUG = 0
+DEBUG = 1
 #CRUNTIME Libaray ( Use /MT or /MD)
 CRUNTIME=/MD
 

Modified: webservices/rampart/trunk/c/include/oxs_key_mgr.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/oxs_key_mgr.h?rev=642945&r1=642944&r2=642945&view=diff
==============================================================================
--- webservices/rampart/trunk/c/include/oxs_key_mgr.h (original)
+++ webservices/rampart/trunk/c/include/oxs_key_mgr.h Mon Mar 31 02:56:07 2008
@@ -38,12 +38,16 @@
 #include <openssl_pkey.h>
 #include <openssl_x509.h>
 #include <openssl_pkcs12.h>
+#include <axis2_key_type.h>
+#include <openssl_pkcs12.h>
+#include <openssl_pkcs12_keystore.h>
 
 #ifdef __cplusplus
 extern "C"
 {
 #endif
 
+	typedef struct oxs_key_mgr_t oxs_key_mgr_t;
     /**
      * Loads keys/certificates from a keystore or a PEm file depending on information available in the @ctx
      * @ctx pointer to the OMXMLSec asymmetric encryption context struct
@@ -120,6 +124,124 @@
                                       oxs_x509_cert_t **cert,
                                       openssl_pkey_t **prv_key);
 
+	
+	AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL
+	oxs_key_mgr_create(axutil_env_t *env);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_free(oxs_key_mgr_t *key_mgr, 
+					axutil_env_t *env);
+	
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_prv_key_password(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env,
+		axis2_char_t *password);
+
+	AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+	oxs_key_mgr_get_prv_key_password(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+	oxs_key_mgr_get_private_key_file(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+	oxs_key_mgr_get_certificate_file(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+	oxs_key_mgr_get_reciever_certificate_file(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_private_key_file(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env,
+		axis2_char_t *file_name);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_certificate_file(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env,
+		axis2_char_t *file_name);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_reciever_certificate_file(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env,
+		axis2_char_t *file_name);
+
+
+	AXIS2_EXTERN void *AXIS2_CALL
+	oxs_key_mgr_get_certificate(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
+	oxs_key_mgr_get_certificate_type(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN void *AXIS2_CALL
+	oxs_key_mgr_get_prv_key(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
+	oxs_key_mgr_get_prv_key_type(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN void *AXIS2_CALL
+	oxs_key_mgr_get_receiver_certificate(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
+	oxs_key_mgr_get_receiver_certificate_type(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_certificate(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env, 
+		void *certificate);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_certificate_type(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env,
+		axis2_key_type_t type);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_prv_key(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env, 
+		void *key);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_prv_key_type(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env,
+		axis2_key_type_t type);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_receiver_certificate(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env,
+		void *certificate);
+
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	oxs_key_mgr_set_receiver_certificate_type(
+		oxs_key_mgr_t *key_mgr,
+		const axutil_env_t *env,
+		axis2_key_type_t type);
     /** @} */
 #ifdef __cplusplus
 }

Modified: webservices/rampart/trunk/c/include/rampart_context.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/rampart_context.h?rev=642945&r1=642944&r2=642945&view=diff
==============================================================================
--- webservices/rampart/trunk/c/include/rampart_context.h (original)
+++ webservices/rampart/trunk/c/include/rampart_context.h Mon Mar 31 02:56:07 2008
@@ -41,6 +41,7 @@
 #include <axutil_array_list.h>
 #include <rampart_saml_token.h>
 #include <rampart_issued_token.h>
+#include <oxs_key_mgr.h>
 
 #ifdef __cplusplus
 extern "C"

Modified: webservices/rampart/trunk/c/include/trust_sts_client.h
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/trust_sts_client.h?rev=642945&r1=642944&r2=642945&view=diff
==============================================================================
--- webservices/rampart/trunk/c/include/trust_sts_client.h (original)
+++ webservices/rampart/trunk/c/include/trust_sts_client.h Mon Mar 31 02:56:07 2008
@@ -38,7 +38,7 @@
 #include <trust_util.h>
 #include <trust_policy_util.h>
 #include <trust_token.h>
-
+#include <rampart_config.h>
 #include <trust_rst.h>
 #include <trust_rstr.h>
 #include <trust_context.h>
@@ -126,6 +126,15 @@
     	trust_sts_client_t * sts_client,
     	const axutil_env_t * env,
 	    axis2_char_t * file_path);
+
+	
+	AXIS2_EXTERN axis2_status_t AXIS2_CALL
+	trust_sts_client_set_auth_info(
+		trust_sts_client_t * sts_client,
+		const axutil_env_t * env,
+		axis2_char_t *username,
+		axis2_char_t *password,
+		axis2_char_t * auth_type);
 
 
 

Modified: webservices/rampart/trunk/c/src/omxmlsec/key_mgr.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/omxmlsec/key_mgr.c?rev=642945&r1=642944&r2=642945&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/omxmlsec/key_mgr.c (original)
+++ webservices/rampart/trunk/c/src/omxmlsec/key_mgr.c Mon Mar 31 02:56:07 2008
@@ -21,7 +21,241 @@
 #include <oxs_key_mgr.h>
 #include <openssl_pem.h>
 
+struct oxs_key_mgr_t 
+{
+    axis2_char_t *private_key_file;
+    axis2_char_t *certificate_file;
+    axis2_char_t *reciever_certificate_file;
+    axis2_char_t *prv_key_password;
 
+    void *prv_key;
+    axis2_key_type_t prv_key_type;
+    void *certificate;
+    axis2_key_type_t certificate_type;
+    void *receiver_certificate;
+    axis2_key_type_t receiver_certificate_type;
+
+	pkcs12_keystore_t *key_store;
+}; 
+
+AXIS2_EXTERN oxs_key_mgr_t * AXIS2_CALL
+oxs_key_mgr_create(axutil_env_t *env)
+{
+	oxs_key_mgr_t *key_mgr = NULL;
+	key_mgr = AXIS2_MALLOC(env->allocator, sizeof(oxs_key_mgr_t));
+	if (key_mgr)
+	{
+		key_mgr->private_key_file = NULL;		
+		key_mgr->certificate_file = NULL;
+		key_mgr->reciever_certificate_file = NULL;
+		key_mgr->prv_key_password = NULL;
+		key_mgr->prv_key = NULL;
+		key_mgr->prv_key_type = AXIS2_KEY_TYPE_UNKNOWN;
+		key_mgr->certificate = NULL;
+		key_mgr->certificate_type = AXIS2_KEY_TYPE_UNKNOWN;
+		key_mgr->receiver_certificate = NULL;
+		key_mgr->receiver_certificate_type = AXIS2_KEY_TYPE_UNKNOWN;
+		key_mgr->key_store = NULL;
+	}
+	return key_mgr; 
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_free(oxs_key_mgr_t *key_mgr, axutil_env_t *env)
+{
+    if(key_mgr->certificate)
+	{
+        oxs_x509_cert_free(key_mgr->certificate, env);
+        key_mgr->certificate = NULL;
+    }
+    if(key_mgr->receiver_certificate)
+	{
+        oxs_x509_cert_free(key_mgr->receiver_certificate, env);
+        key_mgr->receiver_certificate = NULL;
+    }
+	AXIS2_FREE(env->allocator, key_mgr);
+}
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+oxs_key_mgr_get_prv_key_password(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->prv_key_password;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_prv_key_password(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env,
+	axis2_char_t *password)
+{
+	key_mgr->prv_key_password = password;
+	return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+oxs_key_mgr_get_private_key_file(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->private_key_file;
+}
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+oxs_key_mgr_get_certificate_file(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->certificate_file;
+}
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+oxs_key_mgr_get_reciever_certificate_file(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->reciever_certificate_file;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_private_key_file(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env,
+	axis2_char_t *file_name)
+{
+	key_mgr->private_key_file = file_name;
+	return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_certificate_file(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env,
+	axis2_char_t *file_name)
+{
+	key_mgr->certificate_file = file_name;
+	return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_reciever_certificate_file(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env,
+	axis2_char_t *file_name)
+{
+	key_mgr->reciever_certificate_file = file_name;
+	return AXIS2_SUCCESS;
+}
+
+
+AXIS2_EXTERN void *AXIS2_CALL
+oxs_key_mgr_get_certificate(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->certificate;
+}
+
+AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
+oxs_key_mgr_get_certificate_type(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->certificate_type;
+}
+
+AXIS2_EXTERN void *AXIS2_CALL
+oxs_key_mgr_get_prv_key(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->prv_key;
+}
+
+AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
+oxs_key_mgr_get_prv_key_type(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->prv_key_type;
+}
+
+AXIS2_EXTERN void *AXIS2_CALL
+oxs_key_mgr_get_receiver_certificate(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->receiver_certificate;
+}
+
+AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
+oxs_key_mgr_get_receiver_certificate_type(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env)
+{
+	return key_mgr->receiver_certificate_type;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_certificate(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env, 
+	void *certificate)
+{
+	key_mgr->certificate = certificate;
+	return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_certificate_type(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env,
+	axis2_key_type_t type)
+{
+	key_mgr->certificate_type = type;
+	return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_prv_key(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env, 
+	void *key)
+{
+	key_mgr->prv_key = key;
+	return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_prv_key_type(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env,
+	axis2_key_type_t type)
+{
+	key_mgr->prv_key_type = type;
+	return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_receiver_certificate(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env,
+	void *certificate)
+{
+	key_mgr->receiver_certificate = certificate;
+	return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_key_mgr_set_receiver_certificate_type(
+    oxs_key_mgr_t *key_mgr,
+    const axutil_env_t *env,
+	axis2_key_type_t type)
+{
+	key_mgr->receiver_certificate_type = type;
+	return AXIS2_SUCCESS;
+}
 
 /**
  * Loads the key

Modified: webservices/rampart/trunk/c/src/omxmlsec/transforms_factory.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/omxmlsec/transforms_factory.c?rev=642945&r1=642944&r2=642945&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/omxmlsec/transforms_factory.c (original)
+++ webservices/rampart/trunk/c/src/omxmlsec/transforms_factory.c Mon Mar 31 02:56:07 2008
@@ -199,7 +199,7 @@
         tr = oxs_transform_create(env);
         oxs_transform_set_id(tr, env, id);
         oxs_transform_set_input_data_type(tr, env, OXS_TRANSFORM_TYPE_NODE);
-        oxs_transform_set_output_data_type(tr, env, OXS_TRANSFORM_TYPE_NODE);
+        oxs_transform_set_output_data_type(tr, env, OXS_TRANSFORM_TYPE_CHAR);
         oxs_transform_set_transform_func(tr, env, (oxs_transform_tr_func)oxs_transforms_STR);
         return tr; 
     }

Modified: webservices/rampart/trunk/c/src/trust/sts_client.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/trust/sts_client.c?rev=642945&r1=642944&r2=642945&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/trust/sts_client.c (original)
+++ webservices/rampart/trunk/c/src/trust/sts_client.c Mon Mar 31 02:56:07 2008
@@ -66,7 +66,12 @@
 	axis2_msg_ctx_t *received_in_msg_ctx;
 
 	rp_secpolicy_t *sec_policy;
-
+	
+	axis2_char_t	*username;
+
+	axis2_char_t	*password;
+
+	axis2_char_t	*auth_type;
 
 };
 
@@ -86,6 +91,9 @@
     sts_client->service_policy_location = NULL;
 	sts_client->svc_client = NULL;
 	sts_client->sec_policy = NULL;
+	sts_client->username = NULL;
+	sts_client->password = NULL;
+	sts_client->auth_type = NULL;
 
     return sts_client;
 }
@@ -236,6 +244,8 @@
     axis2_endpoint_ref_t *endpoint_ref = NULL;
     axis2_options_t *options = NULL;
     axis2_svc_client_t *svc_client = NULL;
+	rampart_config_t* client_config = NULL;
+    axutil_property_t *property = NULL;
 
     endpoint_ref = axis2_endpoint_ref_create(env, sts_client->issuer_address);
 
@@ -248,6 +258,22 @@
         axis2_options_set_soap_version(options, env, AXIOM_SOAP11);
     }
 
+	  client_config = rampart_config_create(env);
+    if(!client_config)
+    {
+        printf("Cannot create rampart config\n");
+        return 0;
+    }
+
+    rampart_config_set_username(client_config, env, sts_client->username);
+    rampart_config_set_password(client_config, env, sts_client->password);
+    rampart_config_set_password_type(client_config, env, sts_client->auth_type);
+    rampart_config_set_ttl(client_config, env, 360);
+
+    property = axutil_property_create_with_args(env, AXIS2_SCOPE_REQUEST ,
+               AXIS2_TRUE, (void *)rampart_config_free, client_config);
+    axis2_options_set_property(options, env, RAMPART_CLIENT_CONFIGURATION, property);
+
 	if(!(sts_client->svc_client))
 	{
 		svc_client = axis2_svc_client_create(env, sts_client->home_dir);
@@ -354,6 +380,22 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
 
     return sts_client->home_dir;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+trust_sts_client_set_auth_info(
+    trust_sts_client_t * sts_client,
+    const axutil_env_t * env,
+	axis2_char_t *username,
+	axis2_char_t *password,
+	axis2_char_t * auth_type)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+	sts_client->username = username;
+	sts_client->password = password;
+	sts_client->auth_type = auth_type;
+	return AXIS2_SUCCESS;
+  
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL

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=642945&r1=642944&r2=642945&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_context.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_context.c Mon Mar 31 02:56:07 2008
@@ -25,17 +25,18 @@
 #include <rp_saml_token.h>
 #include <rp_issued_token.h>
 #include <rampart_saml_token.h>
+#include <oxs_key_mgr.h>
 
 struct rampart_context_t
 {
     /*****************************/
     axiom_node_t *policy_node;
-    void *prv_key;
+    /*void *prv_key;
     axis2_key_type_t prv_key_type;
     void *certificate;
     axis2_key_type_t certificate_type;
     void *receiver_certificate;
-    axis2_key_type_t receiver_certificate_type;
+    axis2_key_type_t receiver_certificate_type;*/
     axis2_char_t *user;
     axis2_char_t *password;
     axis2_char_t *password_type;
@@ -44,13 +45,13 @@
     rampart_is_replayed_fn is_replayed_function;
     int ttl;
     axis2_char_t *rd_val;
-    axis2_char_t *private_key_file;
+    /*axis2_char_t *private_key_file;
     axis2_char_t *certificate_file;
-    axis2_char_t *reciever_certificate_file;
+    axis2_char_t *reciever_certificate_file;*/
     int ref;
-
+	oxs_key_mgr_t *key_mgr;
     /****************************/
-    /* Set true when the issued token is aquired and set to the rampart conext*/
+    /* Callback function for aquiring the issued token */
     issued_token_callback_func aquire_issued_token; 
 	
     /* SAML tokens. */
@@ -166,23 +167,23 @@
         return NULL;
     }
     rampart_context->policy_node = NULL;
-    rampart_context->prv_key = NULL;
+    /*rampart_context->prv_key = NULL;
     rampart_context->prv_key_type = 0;
     rampart_context->certificate = NULL;
     rampart_context->certificate_type = 0;
     rampart_context->receiver_certificate = NULL;
-    rampart_context->receiver_certificate_type = 0;
+    rampart_context->receiver_certificate_type = 0;*/
     rampart_context->user = 0;
     rampart_context->password = NULL;
-    rampart_context->prv_key_password = NULL;
+    /*rampart_context->prv_key_password = NULL;*/
     rampart_context->pwcb_function = NULL;
     rampart_context->is_replayed_function = NULL;
     rampart_context->ttl = 300;
     rampart_context->rd_val = NULL;
     rampart_context->password_type = NULL;
-    rampart_context->private_key_file = NULL;
+    /*rampart_context->private_key_file = NULL;
     rampart_context->certificate_file = NULL;
-    rampart_context->reciever_certificate_file = NULL;    
+    rampart_context->reciever_certificate_file = NULL;*/    
     rampart_context->saml_tokens = NULL;
 	rampart_context->aquire_issued_token = NULL;
 
@@ -202,7 +203,7 @@
     rampart_context->signature_token_id = NULL;
 
     rampart_context->key_list = axutil_array_list_create(env, 2);
-
+	rampart_context->key_mgr = oxs_key_mgr_create(env);
     return rampart_context;
 }
 
@@ -308,14 +309,14 @@
 			rampart_context->key_list = NULL;
 		}
 
-        if(rampart_context->certificate){
+        /*if(rampart_context->certificate){
             oxs_x509_cert_free(rampart_context->certificate, env);
             rampart_context->certificate = NULL;
         }
         if(rampart_context->receiver_certificate){
             oxs_x509_cert_free(rampart_context->receiver_certificate, env);
             rampart_context->receiver_certificate = NULL;
-        }
+        }*/
 
         if(rampart_context->key_list){
             /*Need to free data of the list*/
@@ -365,9 +366,12 @@
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error,prv_key,AXIS2_FAILURE);
-
-    rampart_context->prv_key = prv_key;
-    return AXIS2_SUCCESS;
+	if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_prv_key(rampart_context->key_mgr, env, prv_key);
+		return AXIS2_SUCCESS;
+	}    
+    return AXIS2_FAILURE;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -377,9 +381,12 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error,type,AXIS2_FAILURE);
-
-    rampart_context->prv_key_type = type;
-    return AXIS2_SUCCESS;
+	if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_prv_key_type(rampart_context->key_mgr, env, type);
+		return AXIS2_SUCCESS;
+	}    
+    return AXIS2_FAILURE;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -389,9 +396,12 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error,certificate,AXIS2_FAILURE);
-
-    rampart_context->certificate = certificate;
-    return AXIS2_SUCCESS;
+	if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_certificate(rampart_context->key_mgr, env, certificate);
+		return AXIS2_SUCCESS;
+	}    
+    return AXIS2_FAILURE;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -401,9 +411,12 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error,type,AXIS2_FAILURE);
-
-    rampart_context->certificate_type = type;
-    return AXIS2_SUCCESS;
+	if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_certificate_type(rampart_context->key_mgr, env, type);
+		return AXIS2_SUCCESS;
+	}    
+    return AXIS2_FAILURE;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -413,9 +426,12 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error,receiver_certificate,AXIS2_FAILURE);
-
-    rampart_context->receiver_certificate = receiver_certificate;
-    return AXIS2_SUCCESS;
+	if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_receiver_certificate(rampart_context->key_mgr, env, receiver_certificate);
+		return AXIS2_SUCCESS;
+	}    
+    return AXIS2_FAILURE;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -425,9 +441,12 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error,type,AXIS2_FAILURE);
-
-    rampart_context->receiver_certificate_type = type;
-    return AXIS2_SUCCESS;
+	if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_receiver_certificate_type(rampart_context->key_mgr, env, type);
+		return AXIS2_SUCCESS;
+	}    
+    return AXIS2_FAILURE;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -467,8 +486,12 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error,prv_key_password,AXIS2_FAILURE);
 
-    rampart_context->prv_key_password = prv_key_password;
-    return AXIS2_SUCCESS;
+	if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_prv_key_password(rampart_context->key_mgr, env, prv_key_password);
+		return AXIS2_SUCCESS;
+	}  
+	return AXIS2_FAILURE;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -529,7 +552,6 @@
                            const axutil_env_t *env,
                            axis2_char_t *rd_val)
 {
-
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, rd_val, AXIS2_FAILURE);
 
@@ -542,11 +564,13 @@
                                      const axutil_env_t *env,
                                      axis2_char_t *private_key_file)
 {
-
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
-    rampart_context->private_key_file = private_key_file;
-    return AXIS2_SUCCESS;
+	if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_private_key_file(rampart_context->key_mgr, env, private_key_file);
+		return AXIS2_SUCCESS;
+	}    
+    return AXIS2_FAILURE;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -554,11 +578,13 @@
                                      const axutil_env_t *env,
                                      axis2_char_t *certificate_file)
 {
-
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
-    rampart_context->certificate_file = certificate_file;
-    return AXIS2_SUCCESS;
+    if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_certificate_file(rampart_context->key_mgr, env, certificate_file);
+		return AXIS2_SUCCESS;
+	}    
+    return AXIS2_FAILURE;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -566,11 +592,13 @@
         const axutil_env_t *env,
         axis2_char_t *reciever_certificate_file)
 {
-
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
-    rampart_context->reciever_certificate_file = reciever_certificate_file;
-    return AXIS2_SUCCESS;
+	if (rampart_context->key_mgr)
+	{
+		oxs_key_mgr_set_reciever_certificate_file(rampart_context->key_mgr, env, reciever_certificate_file);
+		return AXIS2_SUCCESS;
+	}    
+    return AXIS2_FAILURE;
 }
 
 /*End of implementation*/
@@ -593,8 +621,11 @@
     const axutil_env_t *env)
 {
     AXIS2_ENV_CHECK(env, NULL);
-
-    return rampart_context->prv_key;
+ 	if (rampart_context->key_mgr)
+	{
+		return oxs_key_mgr_get_prv_key(rampart_context->key_mgr, env);
+	}
+    return NULL;
 }
 
 AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
@@ -603,8 +634,11 @@
     const axutil_env_t *env)
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
-    return rampart_context->prv_key_type;
+	if (rampart_context->key_mgr)
+	{
+		return oxs_key_mgr_get_prv_key_type(rampart_context->key_mgr, env);
+	}
+    return AXIS2_KEY_TYPE_UNKNOWN;
 }
 
 AXIS2_EXTERN void *AXIS2_CALL
@@ -614,7 +648,11 @@
 {
     AXIS2_ENV_CHECK(env, NULL);
 
-    return rampart_context->certificate;
+	if (rampart_context->key_mgr)
+	{
+		return oxs_key_mgr_get_certificate(rampart_context->key_mgr, env);
+	}
+    return NULL;
 }
 
 AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
@@ -624,7 +662,11 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
 
-    return rampart_context->certificate_type;
+	if (rampart_context->key_mgr)
+	{
+		return oxs_key_mgr_get_certificate_type(rampart_context->key_mgr, env);
+	}
+    return AXIS2_KEY_TYPE_UNKNOWN;
 }
 
 
@@ -635,7 +677,11 @@
 {
     AXIS2_ENV_CHECK(env, NULL);
 
-    return rampart_context->receiver_certificate;
+    if (rampart_context->key_mgr)
+	{
+		return oxs_key_mgr_get_receiver_certificate(rampart_context->key_mgr, env);
+	}
+    return NULL;
 }
 
 AXIS2_EXTERN axis2_key_type_t AXIS2_CALL
@@ -645,7 +691,11 @@
 {
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
 
-    return rampart_context->receiver_certificate_type;
+    if (rampart_context->key_mgr)
+	{
+		return oxs_key_mgr_get_receiver_certificate_type(rampart_context->key_mgr, env);
+	}
+    return AXIS2_KEY_TYPE_UNKNOWN;
 }
 
 
@@ -677,7 +727,11 @@
 {
     AXIS2_ENV_CHECK(env, NULL);
 
-    return rampart_context->prv_key_password;
+	if (rampart_context->key_mgr)
+	{
+		return oxs_key_mgr_get_prv_key_password(rampart_context->key_mgr, env);
+	}
+    return NULL;
 }
 
 AXIS2_EXTERN password_callback_fn AXIS2_CALL
@@ -2530,9 +2584,9 @@
 {
     rp_rampart_config_t *rampart_config = NULL;
 
-    if(rampart_context->certificate_file)
+    if(rampart_context->key_mgr && oxs_key_mgr_get_certificate_file(rampart_context->key_mgr, env))
     {
-        return rampart_context->certificate_file;
+        return oxs_key_mgr_get_certificate_file(rampart_context->key_mgr, env);
     }
 
     rampart_config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env);
@@ -2551,9 +2605,9 @@
 {
     rp_rampart_config_t *rampart_config = NULL;
 
-    if(rampart_context->reciever_certificate_file)
+    if(rampart_context->key_mgr && oxs_key_mgr_get_reciever_certificate_file(rampart_context->key_mgr, env))
     {
-        return rampart_context->reciever_certificate_file;
+        return oxs_key_mgr_get_reciever_certificate_file(rampart_context->key_mgr, env);
     }
 
     rampart_config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env);
@@ -2573,9 +2627,9 @@
 {
     rp_rampart_config_t *rampart_config = NULL;
 
-    if(rampart_context->private_key_file)
+    if(rampart_context->key_mgr && oxs_key_mgr_get_private_key_file(rampart_context->key_mgr, env))
     {
-        return rampart_context->private_key_file;
+        return oxs_key_mgr_get_private_key_file(rampart_context->key_mgr, env);
     }
 
     rampart_config = rp_secpolicy_get_rampart_config(rampart_context->secpolicy,env);