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