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 ka...@apache.org on 2007/10/09 14:24:06 UTC

svn commit: r583139 - /webservices/rampart/trunk/c/src/util/rampart_encryption.c

Author: kaushalye
Date: Tue Oct  9 05:24:06 2007
New Revision: 583139

URL: http://svn.apache.org/viewvc?rev=583139&view=rev
Log:
Symmetric encryption using derived keys

Modified:
    webservices/rampart/trunk/c/src/util/rampart_encryption.c

Modified: webservices/rampart/trunk/c/src/util/rampart_encryption.c
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_encryption.c?rev=583139&r1=583138&r2=583139&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_encryption.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_encryption.c Tue Oct  9 05:24:06 2007
@@ -73,6 +73,7 @@
     oxs_key_t *session_key = NULL;
     axutil_array_list_t *nodes_to_encrypt = NULL;
     axis2_char_t *enc_sym_algo = NULL;
+    int i = 0;
 
     /*TODO Derived Key Encryption*/
 
@@ -119,6 +120,37 @@
         2. Encrypt using that key       
      */
 
+    /*Repeat until all encryption parts are encrypted*/
+    for(i=0 ; i < axutil_array_list_size(nodes_to_encrypt, env); i++)
+    {
+        axiom_node_t *node_to_enc = NULL;
+        oxs_ctx_t *enc_ctx = NULL;
+        oxs_key_t *derived_key = NULL;
+        axis2_char_t *dk_id = NULL;
+        axis2_char_t *enc_data_id = NULL;
+
+        /*Get the node to be encrypted*/
+        node_to_enc = (axiom_node_t *)axutil_array_list_get
+                      (nodes_to_encrypt, env, i);
+    
+        /*Derive a new key*/
+        derived_key = oxs_key_create(env);
+        status = oxs_derivation_derive_key(env, session_key, NULL, NULL, derived_key); 
+        dk_id = oxs_util_generate_id(env, (axis2_char_t*)OXS_DERIVED_ID);
+
+        /*Create the encryption context for OMXMLSEC*/
+        enc_ctx = oxs_ctx_create(env);
+        /*Set the key*/
+        oxs_ctx_set_key(enc_ctx, env, session_key);
+        /*Set the algorithm*/
+        oxs_ctx_set_enc_mtd_algorithm(enc_ctx, env, enc_sym_algo);  
+
+        /*Generate ID for the encrypted data element*/       
+        enc_data_id = oxs_util_generate_id(env, (axis2_char_t*)OXS_ENCDATA_ID);
+        
+        /*Free derived key*/
+        oxs_key_free(derived_key, env);
+    }/*End of for loop. Interating nodes_to_encrypt list*/
     return status;
 }