Author: milinda
Date: Sun Feb  3 03:26:03 2008
New Revision: 617972

URL: http://svn.apache.org/viewvc?rev=617972&view=rev
Log:
Session key generation added.

Modified:
    webservices/rampart/scratch/c/trust/c/src/trust/trust_util.c

Modified: webservices/rampart/scratch/c/trust/c/src/trust/trust_util.c
URL: 
http://svn.apache.org/viewvc/webservices/rampart/scratch/c/trust/c/src/trust/trust_util.c?rev=617972&r1=617971&r2=617972&view=diff
==============================================================================
--- webservices/rampart/scratch/c/trust/c/src/trust/trust_util.c (original)
+++ webservices/rampart/scratch/c/trust/c/src/trust/trust_util.c Sun Feb  3 
03:26:03 2008
@@ -16,6 +16,7 @@
  */
 
 #include <trust_util.h>
+#include <oxs_key.h>
 
 AXIS2_EXTERN axiom_node_t *AXIS2_CALL
 trust_util_create_rst_element(
@@ -982,6 +983,58 @@
     }
 
     return status_node;
+}
+
+/*Generating Random Session Key*/
+AXIS2_EXTERN axiom_node_t * AXIS2_CALL
+trust_util_create_random_session_key_proof_token_element(
+               const axutil_env_t * env,
+               axis2_char_t *wst_ns_uri)
+{
+       axiom_namespace_t *wst_ns = NULL;
+       axiom_node_t *requested_prooft_node = NULL;
+       axiom_element_t *requested_prooft_ele = NULL;
+
+       axiom_node_t *binary_secret_node = NULL;
+       int encodedlen = 0;
+
+       oxs_key_t *session_key = NULL;
+       axis2_char_t * base64_encoded_key = NULL;
+
+       wst_ns = axiom_namespace_create(env, wst_ns_uri, TRUST_WST);
+
+       requested_prooft_ele = axiom_element_create(env, NULL, 
TRUST_REQUESTED_PROOF_TOKEN, wst_ns, &requested_prooft_node);
+
+       if (!requested_prooft_ele)
+       {
+               AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+                               "[trust] RequestedProofToken-Session Key Proof- 
Element creation failed!");
+               return NULL;
+       }       
+
+
+       /*Generating Session key*/
+       session_key = oxs_key_create(env);
+       oxs_key_for_algo(session_key, env, OXS_HREF_HMAC_SHA1);
+
+       if(oxs_key_get_data(session_key, env))
+       {
+               /*Encoding the binary key to base 64 encoded value*/
+
+               /*FIX : Encoded length is hardcoded :64 */
+
+               encodedlen = axutil_base64_encode_len(strlen((const char 
*)oxs_key_get_data(session_key, env)));
+               base64_encoded_key = AXIS2_MALLOC(env->allocator, encodedlen);
+
+               axutil_base64_encode(base64_encoded_key, (const char 
*)oxs_key_get_data(session_key, env), strlen((const char 
*)oxs_key_get_data(session_key, env)));
+
+               /*Inside <binarysecret> element*/
+               binary_secret_node = 
trust_util_create_binary_secret_element(env, wst_ns_uri, requested_prooft_node, 
base64_encoded_key, TRUST_KEY_TYPE_SYMM_KEY);
+
+               return requested_prooft_node;
+       }
+
+       return NULL;
 }
 
 axis2_char_t *AXIS2_CALL


Reply via email to