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 2007/12/10 06:31:45 UTC

svn commit: r602779 [2/2] - in /webservices/rampart/scratch/c/trust/c: ./ include/ samples/trust/ samples/trust/sts/ samples/trust/sts_client/ src/trust/

Modified: webservices/rampart/scratch/c/trust/c/src/trust/sts_client.c
URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/trust/c/src/trust/sts_client.c?rev=602779&r1=602778&r2=602779&view=diff
==============================================================================
--- webservices/rampart/scratch/c/trust/c/src/trust/sts_client.c (original)
+++ webservices/rampart/scratch/c/trust/c/src/trust/sts_client.c Sun Dec  9 21:31:33 2007
@@ -24,28 +24,12 @@
 struct trust_sts_client
 {
 
-    /*WS Trust version */
-    int version;
-
-    /* Key size */
-    int key_size;
-
     /* Algorithm Suite for Entropy */
     rp_algorithmsuite_t *algo_suite;
 
     /* Trust 1.0 Assertions */
     rp_trust10_t *trust10;
 
-    /* Requestor Entropy */
-    axis2_char_t *requestor_entropy;
-    
-    axis2_char_t *appliesto;
-    
-    axis2_char_t *token_type;
-
-    /* Time To Live */
-    int ttl;
-
     /* Issuer Address */
     axis2_char_t *issuer_address;
 
@@ -67,13 +51,7 @@
 
     sts_client = (trust_sts_client_t *) AXIS2_MALLOC(env->allocator, sizeof(trust_sts_client_t));
 
-    sts_client->version = TRUST_VERSION_05_02;
-    sts_client->key_size = 0;
-    sts_client->ttl = 0;
-    sts_client->requestor_entropy = NULL;
     sts_client->trust10 = NULL;
-    sts_client->appliesto = NULL;
-    sts_client->token_type = NULL;
     sts_client->home_dir = NULL;
     sts_client->issuer_address = NULL;
     sts_client->issuer_policy_location = NULL;
@@ -100,20 +78,20 @@
 trust_sts_client_request_security_token(
     trust_sts_client_t * sts_client,
     const axutil_env_t * env,
-    axis2_char_t * applies_to,
-    axis2_char_t * token_type)
+    trust_context_t *trust_context)
 {
     axis2_svc_client_t *svc_client = NULL;
     neethi_policy_t *issuer_policy = NULL;
     neethi_policy_t *service_policy = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
+    axiom_node_t *rst_node = NULL;
     axiom_node_t *return_node = NULL;
     
-    sts_client->appliesto = applies_to;
-    sts_client->token_type = token_type;
-
+	/*Action Logic*/
+	trust_rst_context_t *rst_context = NULL;
+	axis2_char_t *request_type = NULL;
+    
     issuer_policy = neethi_util_create_policy_from_file(env, sts_client->issuer_policy_location);
-
     service_policy = neethi_util_create_policy_from_file(env, sts_client->service_policy_location);
 
     if (!issuer_policy || !service_policy)
@@ -125,10 +103,26 @@
         trust_sts_client_process_policies(sts_client, env, issuer_policy, service_policy);
     }
 
-    /* TODO : Fix action logic */
-    svc_client =
-        trust_sts_client_get_svc_client(sts_client, env,
-                                        "http://schemas.xmlsoap.org/ws/2005/02/RST/issue");
+ 
+	/*Action Logic - RequestType - used for specify the requesting action*/
+	rst_context = trust_context_get_rst_context(env, trust_context);
+	if(NULL == rst_context)
+	{
+		AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST_Context is NULL: Created RST_CTX may not set to TrustContest");
+		return;
+	}
+	
+	request_type = trust_rst_context_get_request_type(rst_context, env);
+	
+	if(NULL == request_type)
+	{
+		AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST-RequestType is NOT set. RST MUST have a RequestType");
+		return;
+	}
+	
+	svc_client =
+        trust_sts_client_get_svc_client(sts_client, env, request_type);
+														  
 
     if (status == AXIS2_SUCCESS)
     {
@@ -137,13 +131,17 @@
         {
             AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Policy setting failed.");
         }
-
-        return_node =
-            axis2_svc_client_send_receive(svc_client, env,
-                                          trust_sts_client_create_issue_request(sts_client, env,
-                                                                                "/Issue",
-                                                                                applies_to,
-                                                                                token_type));
+		/*Building the RST */
+        rst_node = trust_context_build_rst_node(env, trust_context);
+		if(rst_node)
+		{
+	        return_node = axis2_svc_client_send_receive(svc_client, env, rst_node);
+		}
+		else
+		{
+			AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] RST-Not send -> RST Node building failed");
+			return;
+		}
     }
     if (svc_client)
     {
@@ -208,6 +206,8 @@
 
     return AXIS2_SUCCESS;
 }
+
+/*
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_sts_client_create_issue_request(
     trust_sts_client_t * sts_client,
@@ -223,10 +223,10 @@
 
     rst_node = trust_util_create_rst_element(env, sts_client->version, NULL);
 
-    /* Setting up the request type */
+    
     trust_util_create_request_type_element(env, sts_client->version, rst_node, request_type);
 
-    /* Setting up the token type */
+    
     if (token_type)
     {
         trust_util_create_token_type_element(env, sts_client->version, rst_node, token_type);
@@ -263,35 +263,7 @@
     return rst_node;
 }
 
-AXIS2_EXTERN axiom_node_t * AXIS2_CALL
-trust_sts_client_create_renew_request(
-        trust_sts_client_t *sts_client,
-        const axutil_env_t *env,
-        axis2_char_t *token_type,
-        axis2_char_t *request_type,
-        axiom_node_t *renew_target,
-        axis2_bool_t allow_postdating,
-        trust_allow_t renew_allow,
-        trust_ok_t ok_flag)
-{
-    axiom_node_t *rst_node = NULL;
-    
-    rst_node = trust_util_create_rst_element(env, sts_client->version, NULL);
-    
-    if(token_type)
-    {
-        trust_util_create_token_type_element(env, sts_client->version, rst_node, token_type);
-    }
-    trust_util_create_request_type_element(env, sts_client->version, rst_node, request_type);
-    
-    if(renew_target)
-    {
-        trust_util_create_renew_traget_element(env, sts_client->version, rst_node, renew_target);
-    }
-    else
-    {
-        return NULL;
-    }
+
     
     if(allow_postdating)
     {
@@ -302,229 +274,7 @@
     
     return rst_node;
 }
-
-AXIS2_EXTERN axiom_node_t * AXIS2_CALL
-tust_sts_client_create_cancel_request(
-        trust_sts_client_t *sts_client,
-        const axutil_env_t *env,
-        axis2_char_t *request_type,
-        axiom_node_t *cancel_target)
-{
-    axiom_node_t *rst_node = NULL;
-    
-    rst_node = trust_util_create_rst_element(env, sts_client->version, NULL);
-    
-    trust_util_create_request_type_element(env, sts_client->version, rst_node, request_type);
-    
-    if(cancel_target)
-    {
-        if(!trust_util_create_cancel_target_element(env, sts_client->version, rst_node, cancel_target))
-        {
-            return NULL;
-        }
-    }
-    else
-    {
-        return NULL;
-    }
-    
-    return rst_node;
-}
-   
-AXIS2_EXTERN axiom_node_t * AXIS2_CALL
-trust_sts_client_create_validate_request(
-        trust_sts_client_t *sts_client,
-        const axutil_env_t *env,
-        axis2_char_t *token_type,
-        axis2_char_t *request_type)
-{
-    axiom_node_t *rst_node = NULL;
-    
-    rst_node = trust_util_create_rst_element(env, sts_client->version, NULL);
-    
-    if(token_type)
-    {
-        trust_util_create_token_type_element(env, sts_client->version, rst_node, token_type);
-    }
-    
-    if(request_type)
-    {
-        trust_util_create_request_type_element(env, sts_client->version, rst_node, request_type);
-    }
-    
-    return rst_node;
-}
-/* Process ISSUE RESPONSE */
-AXIS2_EXTERN trust_token_t *AXIS2_CALL
-trust_sts_client_process_issue_response(
-    trust_sts_client_t * sts_client,
-    const axutil_env_t * env,
-    int wst_version,
-    axiom_node_t * response_node,
-    axiom_node_t * payload_sent)
-{
-    /* Token */
-    trust_token_t *token = NULL;
-
-    /* RSTR */
-    axiom_node_t *rstr_node = NULL;
-    axiom_element_t *rstr_ele = NULL;
-
-    axis2_char_t *wst_ns_uri = NULL;
-
-    /* Attached Reference */
-    axiom_node_t *attached_ref_node = NULL;
-    axiom_element_t *attached_ref_ele = NULL;
-    axutil_qname_t *attached_ref_qname = NULL;
-    axiom_node_t *req_attached_ref_node = NULL;
-
-    /* Unattached Reference */
-    axiom_node_t *unattached_ref_node = NULL;
-    axiom_element_t *unattached_ref_ele = NULL;
-    axutil_qname_t *unattached_ref_qname = NULL;
-    axiom_node_t *req_unattached_ref_node = NULL;
-
-    /*Requsted Security Token */
-    axiom_node_t *req_sec_token_node = NULL;
-    axiom_element_t *req_sec_token_ele = NULL;
-    axutil_qname_t *req_sec_token_qname = NULL;
-    axiom_node_t *sec_token = NULL;
-
-    /* Life Time */
-    axiom_node_t *life_time_node = NULL;
-    axiom_element_t *life_time_ele = NULL;
-    axutil_qname_t *life_time_qname = NULL;
-
-    rstr_node = response_node;
-
-    if (TRUST_VERSION_05_12 == wst_version)
-    {
-        rstr_node = axiom_node_get_first_element(rstr_node, env);
-    }
-
-    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
-    rstr_ele = axiom_node_get_data_element(rstr_node, env);
-
-    /* Extract Attached Reference */
-
-    attached_ref_qname =
-        axutil_qname_create(env, TRUST_REQUESTED_ATTACHED_REFERENCE, wst_ns_uri, TRUST_WST);
-
-    attached_ref_ele =
-        axiom_element_get_first_child_with_qname(rstr_ele, env, attached_ref_qname, rstr_node,
-                                                 &attached_ref_node);
-
-    if (attached_ref_ele)
-    {
-        req_attached_ref_node = axiom_node_get_first_element(attached_ref_node, env);
-    }
-
-    /* Extract unattached Reference */
-    unattached_ref_qname =
-        axutil_qname_create(env, TRUST_REQUESTED_UNATTACHED_REFERENCE, wst_ns_uri, TRUST_WST);
-
-    unattached_ref_ele =
-        axiom_element_get_first_child_with_qname(rstr_ele, env, unattached_ref_qname, rstr_node,
-                                                 &unattached_ref_node);
-    if (unattached_ref_ele)
-    {
-        req_unattached_ref_node = axiom_node_get_first_element(unattached_ref_node, env);
-    }
-
-    /* Extract Requested Security Token */
-    req_sec_token_qname =
-        axutil_qname_create(env, TRUST_REQUESTED_SECURITY_TOKEN, wst_ns_uri, TRUST_WST);
-    req_sec_token_ele =
-        axiom_element_get_first_child_with_qname(rstr_ele, env, req_sec_token_qname, rstr_node,
-                                                 &req_sec_token_node);
-
-    if (req_sec_token_node)
-    {
-        sec_token = axiom_node_get_first_element(req_sec_token_node, env);
-    }
-    else
-    {
-        /*Requsted Token Missing - Handle */
-    }
-
-    /* Extract Life Time */
-    life_time_qname = axutil_qname_create(env, TRUST_LIFE_TIME, wst_ns_uri, TRUST_WST);
-    life_time_ele =
-        axiom_element_get_first_child_with_qname(rstr_ele, env, life_time_qname, rstr_node,
-                                                 &life_time_node);
-
-    if (NULL == life_time_ele)
-    {
-        /* Handle NULL - life time ele */
-    }
-
-    /* TOKEN Creation */
-    /* FIX id- NULL :-> ID should be computed here */
-    token = trust_token_create(env, NULL, sec_token, life_time_node);
-
-    return token;
-
-}
-
-AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-trust_sts_client_find_identifier(
-    trust_sts_client_t * sts_client,
-    axiom_node_t * req_att_ref_node,
-    axiom_node_t * req_unatt_ref_node,
-    axiom_node_t * sec_token_node,
-    const axutil_env_t * env)
-{
-    axis2_char_t *id_str = NULL;
-
-    if (req_att_ref_node)
-    {
-        id_str = trust_sts_client_get_id_from_str(sts_client, req_att_ref_node, env);
-    }
-    else if (req_unatt_ref_node)
-    {
-        id_str = trust_sts_client_get_id_from_str(sts_client, req_unatt_ref_node, env);
-    }
-    else
-    {
-        /* FIX : WSConstants based wsu:Id */
-
-    }
-    return id_str;
-}
-
-AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-trust_sts_client_get_id_from_str(
-    trust_sts_client_t * sts_client,
-    axiom_node_t * ref_node,
-    const axutil_env_t * env)
-{
-    /*FIX : implementation requires WS.Consatants paramaters */
-    return NULL;
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-trust_sts_client_set_ttl(
-    trust_sts_client_t * sts_client,
-    const axutil_env_t * env,
-    int ttl)
-{
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    AXIS2_PARAM_CHECK(env->error, ttl, AXIS2_FAILURE);
-
-    sts_client->ttl = ttl;
-
-    return AXIS2_SUCCESS;
-}
-
-AXIS2_EXTERN int AXIS2_CALL
-trust_sts_client_get_ttl(
-    trust_sts_client_t * sts_client,
-    const axutil_env_t * env)
-{
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
-    return sts_client->ttl;
-}
+   */
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
 trust_sts_client_set_issuer_address(

Modified: webservices/rampart/scratch/c/trust/c/src/trust/token.c
URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/trust/c/src/trust/token.c?rev=602779&r1=602778&r2=602779&view=diff
==============================================================================
--- webservices/rampart/scratch/c/trust/c/src/trust/token.c (original)
+++ webservices/rampart/scratch/c/trust/c/src/trust/token.c Sun Dec  9 21:31:33 2007
@@ -124,14 +124,11 @@
                 AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Lifetime element processing failed.");
             }
 
-    } 
-/*
-    else
+    } else
     {
             AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[trust] Cannot create trust token with null life element!");
             return NULL;
     }
-*/
 
     return token;
 

Modified: webservices/rampart/scratch/c/trust/c/src/trust/util.c
URL: http://svn.apache.org/viewvc/webservices/rampart/scratch/c/trust/c/src/trust/util.c?rev=602779&r1=602778&r2=602779&view=diff
==============================================================================
--- webservices/rampart/scratch/c/trust/c/src/trust/util.c (original)
+++ webservices/rampart/scratch/c/trust/c/src/trust/util.c Sun Dec  9 21:31:33 2007
@@ -20,18 +20,20 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_rst_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
-    axiom_node_t *parent,
+    int wst_version,
     axis2_char_t * context)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *rst_node = NULL;
     axiom_element_t *rst_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axiom_attribute_t *context_attr = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
+
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
-    rst_ele = axiom_element_create(env, parent, TRUST_REQUEST_SECURITY_TOKEN, wst_ns, &rst_node);
+    rst_ele = axiom_element_create(env, NULL, TRUST_REQUEST_SECURITY_TOKEN, wst_ns, &rst_node);
 
     if (!rst_ele)
     {
@@ -58,15 +60,18 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_rstr_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axis2_char_t * context)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *rstr_node = NULL;
     axiom_element_t *rstr_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axiom_attribute_t *context_attr = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
+
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
     rstr_ele =
         axiom_element_create(env, NULL, TRUST_REQUEST_SECURITY_TOKEN_RESPONSE, wst_ns, &rstr_node);
@@ -96,12 +101,15 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_rstr_collection_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri)
+    int wst_version)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *rstrc_node = NULL;
     axiom_element_t *rstrc_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
+
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
     rstrc_ele =
         axiom_element_create(env, NULL, TRUST_REQUEST_SECURITY_TOKEN_RESPONSE_COLLECTION, wst_ns,
@@ -119,16 +127,21 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_request_type_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axis2_char_t * request_type)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axis2_char_t *req_type_str = NULL;
     axiom_node_t *request_type_node = NULL;
     axiom_element_t *request_type_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    AXIS2_ENV_CHECK(env, NULL);
+
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
+
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
     request_type_ele =
         axiom_element_create(env, parent_node, TRUST_REQUEST_TYPE, wst_ns, &request_type_node);
@@ -165,15 +178,20 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_token_type_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axis2_char_t * token_type)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *token_type_node = NULL;
     axiom_element_t *token_type_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    AXIS2_ENV_CHECK(env, NULL);
+
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
+
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
     token_type_ele =
         axiom_element_create(env, parent_node, TRUST_TOKEN_TYPE, wst_ns, &token_type_node);
@@ -252,17 +270,19 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_claims_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axiom_node_t * claims_content,
     axis2_char_t * dialect_uri)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *claims_node = NULL;
     axiom_element_t *claims_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axiom_attribute_t *dialect_attr = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     claims_ele = axiom_element_create(env, parent_node, TRUST_CLAIMS, wst_ns, &claims_node);
@@ -313,18 +333,27 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_requested_security_token_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
-    axiom_node_t * parent_node)
+    int wst_version,
+    axiom_node_t * parent_node,
+    axiom_node_t * sec_token_node)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *requested_token_node = NULL;
     axiom_element_t *requested_token_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
 
+    
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     requested_token_ele =
         axiom_element_create(env, parent_node, TRUST_REQUESTED_SECURITY_TOKEN, wst_ns,
                              &requested_token_node);
+    
+    if(sec_token_node)
+    {      
+        axiom_node_add_child(requested_token_node, env, sec_token_node);
+    }
     if (!requested_token_ele)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
@@ -338,13 +367,15 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_requsted_proof_token_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axiom_node_t *requested_prooft_node = NULL;
     axiom_element_t *requested_prooft_ele = NULL;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     requested_prooft_ele =
@@ -363,13 +394,15 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_entropy_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axiom_node_t *entropy_node = NULL;
     axiom_element_t *entropy_ele = NULL;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     entropy_ele = axiom_element_create(env, parent_node, TRUST_ENTROPY, wst_ns, &entropy_node);
@@ -385,13 +418,15 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_computed_key_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axiom_node_t *computed_key_node = NULL;
     axiom_element_t *computed_key_ele = NULL;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     computed_key_ele =
@@ -408,11 +443,12 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_binary_secret_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axis2_char_t * enc_secret,
     axis2_char_t * bin_sec_type)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *bin_sec_node = NULL;
     axiom_element_t *bin_sec_ele = NULL;
     axiom_attribute_t *bin_sec_type_attr = NULL;
@@ -420,6 +456,7 @@
     axis2_char_t *type_str = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     bin_sec_ele =
@@ -469,16 +506,18 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_computed_key_algo_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axis2_char_t * algo_id)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *comp_key_algo_node = NULL;
     axiom_element_t *comp_key_algo_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
     /*axis2_char_t *algo = NULL;*/
     axis2_status_t status = AXIS2_SUCCESS;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     if (algo_id)
@@ -511,15 +550,17 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_key_size_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axis2_char_t * key_size)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *key_size_node = NULL;
     axiom_element_t *key_size_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     key_size_ele = axiom_element_create(env, parent_node, TRUST_KEY_SIZE, wst_ns, &key_size_node);
@@ -547,16 +588,18 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_key_type_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axis2_char_t * key_type)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *key_type_node = NULL;
     axiom_element_t *key_type_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axis2_char_t *type = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     key_type_ele = axiom_element_create(env, parent_node, TRUST_KEY_TYPE, wst_ns, &key_type_node);
@@ -574,6 +617,7 @@
         {
             type = axutil_stracat(env, wst_ns_uri, key_type);
             status = axiom_element_set_text(key_type_ele, env, type, key_type_node);
+            
             if (status == AXIS2_FAILURE)
             {
                 AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
@@ -587,11 +631,11 @@
 }
 
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
-trust_util_create_life_time_element(
-    const axutil_env_t * env,
-    axiom_node_t * parent_node,
-    axis2_char_t *wst_ns_uri,
-    int ttl)
+    trust_util_create_life_time_element(
+        const axutil_env_t * env,
+        axiom_node_t * parent_node,
+        int wst_version,
+        int ttl)
 {
     axiom_node_t *life_time_node = NULL;
     axiom_node_t *created_node = NULL;
@@ -606,7 +650,7 @@
     axutil_date_time_t *dt = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
-    wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
+    wst_ns = axiom_namespace_create(env, TRUST_WST_XMLNS, TRUST_WST);
     wsu_ns = axiom_namespace_create(env, TRUST_WSU_XMLNS, TRUST_WSU);
 
     life_time_ele =
@@ -685,13 +729,15 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_req_attached_reference_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *attached_ref_node = NULL;
     axiom_element_t *attached_ref_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     attached_ref_ele =
@@ -710,13 +756,15 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_req_unattached_reference_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *unattached_ref_node = NULL;
     axiom_element_t *unattached_ref_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     unattached_ref_ele =
@@ -735,7 +783,7 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_encrypted_data_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axis2_char_t * enc_data)
 {
@@ -769,15 +817,17 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_renew_traget_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axiom_node_t * renew_pending_node)
 {
     axiom_node_t *renew_target_node = NULL;
     axiom_element_t *renew_target_ele = NULL;
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     renew_target_ele =
@@ -808,13 +858,15 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_allow_postdating_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *allow_postdating_node = NULL;
     axiom_element_t *allow_postdating_ele = NULL;
     axiom_namespace_t *wst_ns = NULL;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     allow_postdating_ele =
@@ -832,13 +884,14 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_renewing_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     trust_allow_t allow_flag,
     trust_ok_t ok_flag)
 {
     axiom_node_t *renewing_node = NULL;
     axiom_element_t *renewing_ele = NULL;
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_namespace_t *wst_ns = NULL;
     axiom_attribute_t *allow_attr = NULL;
     axiom_attribute_t *ok_attr = NULL;
@@ -846,6 +899,7 @@
     axis2_char_t *allow = NULL;
     axis2_char_t *ok = NULL;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     renewing_ele = axiom_element_create(env, parent_node, TRUST_RENEWING, wst_ns, &renewing_node);
@@ -873,14 +927,16 @@
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_cancel_target_element(
     const axutil_env_t * env,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axiom_node_t * parent_node,
     axiom_node_t * token_cancel_pending_node)
 {
     axiom_node_t *cancel_target_node = NULL;
     axiom_element_t *cancel_target_ele = NULL;
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_namespace_t *wst_ns = NULL;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     cancel_target_ele =
@@ -908,10 +964,11 @@
 trust_util_create_validation_response_element(
     const axutil_env_t * env,
     axiom_node_t * parent_node,
-    axis2_char_t *wst_ns_uri,
+    int wst_version,
     axis2_char_t * code,
     axis2_char_t * reason)
 {
+    axis2_char_t *wst_ns_uri = NULL;
     axiom_node_t *status_node = NULL;
     axiom_node_t *code_node = NULL;
     axiom_node_t *reason_node = NULL;
@@ -921,6 +978,7 @@
     axiom_namespace_t *wst_ns = NULL;
     axis2_status_t status = AXIS2_SUCCESS;
 
+    wst_ns_uri = trust_util_get_wst_ns(env, wst_version);
     wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
 
     status_ele =