Author: kaushalye
Date: Thu Oct 11 02:53:29 2007
New Revision: 583758

URL: http://svn.apache.org/viewvc?rev=583758&view=rev
Log:
Key derivation and symmetric binding (encryption) in Ramaprt

Modified:
    webservices/rampart/trunk/c/include/oxs_key.h
    webservices/rampart/trunk/c/src/omxmlsec/derivation.c
    webservices/rampart/trunk/c/src/omxmlsec/key.c
    webservices/rampart/trunk/c/src/util/rampart_encryption.c
    webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c

Modified: webservices/rampart/trunk/c/include/oxs_key.h
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/include/oxs_key.h?rev=583758&r1=583757&r2=583758&view=diff
==============================================================================
--- webservices/rampart/trunk/c/include/oxs_key.h (original)
+++ webservices/rampart/trunk/c/include/oxs_key.h Thu Oct 11 02:53:29 2007
@@ -62,7 +62,7 @@
     * @return data 
     */
 
-    unsigned char *AXIS2_CALL
+    AXIS2_EXTERN unsigned char *AXIS2_CALL
     oxs_key_get_data(
         const oxs_key_t *key,
         const axutil_env_t *env);
@@ -72,7 +72,7 @@
     * @param env pointer to environment struct
     * @return name of the key
     */
-    axis2_char_t *AXIS2_CALL
+    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
     oxs_key_get_name(
         const oxs_key_t *key,
         const axutil_env_t *env);
@@ -82,7 +82,7 @@
     * @param env pointer to environment struct
     * @return size of the key
     */
-    int AXIS2_CALL
+    AXIS2_EXTERN int AXIS2_CALL
     oxs_key_get_size(
         const oxs_key_t *key,
         const axutil_env_t *env);
@@ -92,7 +92,7 @@
     * @param env pointer to environment struct
     * @return usage of the key
     */
-    int AXIS2_CALL
+    AXIS2_EXTERN int AXIS2_CALL
     oxs_key_get_usage(
         const oxs_key_t *key,
         const axutil_env_t *env);
@@ -105,7 +105,7 @@
     * @param name name of the key
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
-    axis2_status_t AXIS2_CALL
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
     oxs_key_set_name(
         oxs_key_t *key,
         const axutil_env_t *env,
@@ -119,7 +119,7 @@
     * @param usage usage of the key
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
-    axis2_status_t AXIS2_CALL
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
     oxs_key_set_usage(
         oxs_key_t *key,
         const axutil_env_t *env,
@@ -131,13 +131,13 @@
     * @param env pointer to environment struct
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
-    axis2_status_t AXIS2_CALL
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
     oxs_key_free(
         oxs_key_t *key,
         const axutil_env_t *env
     );
 
-    axis2_status_t AXIS2_CALL
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
     oxs_key_populate_with_buf(oxs_key_t *key,
                               const axutil_env_t *env,
                               oxs_buffer_t *buffer,
@@ -154,7 +154,7 @@
     * @param usage usage of the key
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
-    axis2_status_t AXIS2_CALL
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
     oxs_key_populate(
         oxs_key_t *key,
         const axutil_env_t *env,
@@ -169,7 +169,7 @@
     * @param env pointer to environment struct
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
-    axis2_status_t AXIS2_CALL
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
     oxs_key_read_from_file(
         oxs_key_t *key,
         const axutil_env_t *env,
@@ -181,17 +181,17 @@
     * @param env pointer to environment struct
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
-    axis2_status_t AXIS2_CALL
+    AXIS2_EXTERN axis2_status_t AXIS2_CALL
     oxs_key_for_algo(oxs_key_t *key,
                      const axutil_env_t *env,
                      axis2_char_t *key_algo);
 
 
-    oxs_buffer_t *AXIS2_CALL
+    AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
     oxs_key_get_buffer(const oxs_key_t *key,
                        const axutil_env_t *env);
 
-    oxs_key_t *AXIS2_CALL
+    AXIS2_EXTERN oxs_key_t *AXIS2_CALL
     oxs_key_dup(oxs_key_t *key,
                 const axutil_env_t *env);
 

Modified: webservices/rampart/trunk/c/src/omxmlsec/derivation.c
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/omxmlsec/derivation.c?rev=583758&r1=583757&r2=583758&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/omxmlsec/derivation.c (original)
+++ webservices/rampart/trunk/c/src/omxmlsec/derivation.c Thu Oct 11 02:53:29 
2007
@@ -20,6 +20,7 @@
 #include <oxs_derivation.h>
 #include <oxs_key.h>
 #include <oxs_error.h>
+#include <oxs_utility.h>
 #include <oxs_asym_ctx.h>
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -31,13 +32,25 @@
                          )
 {
     axis2_status_t status = AXIS2_FAILURE;
-
+    axis2_char_t *dk_id = NULL;
     /*TODO Concatenate the seed and label*/
 
     /*TODO P_SHA1 (secret, label + seed)*/
     
-    /*TODO Populate the derived key*/
-    
+    /*TODO Populate the derived key. What we do here is fake. We use the same 
key ;-)*/
+    dk_id = oxs_util_generate_id(env, (axis2_char_t*)OXS_DERIVED_ID);
+    status = oxs_key_populate(derived_key, env,
+        oxs_key_get_data(secret, env),
+        dk_id,
+        oxs_key_get_size(secret, env),
+        oxs_key_get_usage(secret, env));
+        /*status = oxs_key_populate_with_buf(derived_key, env, 
+            oxs_key_get_buffer(secret, env), 
+            1,
+            2);
+            oxs_key_get_size(secret, env), 
+            oxs_key_get_usage(secret, env));
+    oxs_key_set_name(derived_key, env, dk_id);    */
  
 
     return status;

Modified: webservices/rampart/trunk/c/src/omxmlsec/key.c
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/omxmlsec/key.c?rev=583758&r1=583757&r2=583758&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/omxmlsec/key.c (original)
+++ webservices/rampart/trunk/c/src/omxmlsec/key.c Thu Oct 11 02:53:29 2007
@@ -33,7 +33,7 @@
 
 /******************** end of function headers *****************/
 
-unsigned char *AXIS2_CALL
+AXIS2_EXTERN unsigned char *AXIS2_CALL
 oxs_key_get_data(
     const oxs_key_t *key,
     const axutil_env_t *env)
@@ -43,7 +43,7 @@
     return oxs_buffer_get_data(key->buf, env);
 }
 
-axis2_char_t *AXIS2_CALL
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
 oxs_key_get_name(
     const oxs_key_t *key,
     const axutil_env_t *env)
@@ -54,7 +54,7 @@
 
 }
 
-oxs_buffer_t *AXIS2_CALL
+AXIS2_EXTERN oxs_buffer_t *AXIS2_CALL
 oxs_key_get_buffer(const oxs_key_t *key,
                    const axutil_env_t *env)
 {
@@ -62,7 +62,7 @@
     return key->buf;
 }
 
-int AXIS2_CALL
+AXIS2_EXTERN int AXIS2_CALL
 oxs_key_get_size(
     const oxs_key_t *key,
     const axutil_env_t *env)
@@ -72,7 +72,7 @@
     return oxs_buffer_get_size(key->buf, env);
 }
 
-int AXIS2_CALL
+AXIS2_EXTERN int AXIS2_CALL
 oxs_key_get_usage(
     const oxs_key_t *key,
     const axutil_env_t *env)
@@ -84,7 +84,7 @@
 
 
 
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
 oxs_key_set_name(
     oxs_key_t *key,
     const axutil_env_t *env,
@@ -104,7 +104,7 @@
 }
 
 
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
 oxs_key_set_usage(
     oxs_key_t *key,
     const axutil_env_t *env,
@@ -117,7 +117,7 @@
 
 }
 
-oxs_key_t *AXIS2_CALL
+AXIS2_EXTERN oxs_key_t *AXIS2_CALL
 oxs_key_dup(oxs_key_t *key,
             const axutil_env_t *env)
 {
@@ -169,7 +169,7 @@
 }
 
 
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
 oxs_key_free(oxs_key_t *key,
              const axutil_env_t *env)
 {
@@ -186,7 +186,7 @@
     return AXIS2_SUCCESS;
 }
 
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
 oxs_key_populate_with_buf(oxs_key_t *key,
                           const axutil_env_t *env,
                           oxs_buffer_t *buffer,
@@ -203,7 +203,7 @@
     return AXIS2_SUCCESS;
 }
 
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
 oxs_key_populate(oxs_key_t *key,
                  const axutil_env_t *env,
                  unsigned char *data,
@@ -224,7 +224,7 @@
 }
 
 
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
 oxs_key_read_from_file(oxs_key_t *key,
                        const axutil_env_t *env,
                        axis2_char_t *file_name)
@@ -246,7 +246,7 @@
 
 }
 
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
 oxs_key_for_algo(oxs_key_t *key,
                  const axutil_env_t *env,
                  axis2_char_t *key_algo)

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=583758&r1=583757&r2=583758&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_encryption.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_encryption.c Thu Oct 11 
02:53:29 2007
@@ -75,8 +75,6 @@
     axis2_char_t *enc_sym_algo = NULL;
     int i = 0;
 
-    /*TODO Derived Key Encryption*/
-
     /*Get nodes to be encrypted*/
     nodes_to_encrypt = axutil_array_list_create(env, 0);
     status = rampart_enc_get_nodes_to_encrypt(
@@ -91,7 +89,6 @@
         return AXIS2_FAILURE;
     }
 
-
     /*Get the symmetric encryption algorithm*/
     enc_sym_algo = rampart_context_get_enc_sym_algo(rampart_context, env);
 
@@ -103,7 +100,6 @@
         enc_sym_algo = OXS_DEFAULT_SYM_ALGO;
     }
 
-
     /*Generate the  session key*/
     session_key = oxs_key_create(env);
     status = oxs_key_for_algo(session_key, env, enc_sym_algo);
@@ -126,7 +122,6 @@
         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*/
@@ -136,17 +131,19 @@
         /*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 derived key for the encryption*/
+        oxs_ctx_set_key(enc_ctx, env, derived_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);

Modified: webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c?rev=583758&r1=583757&r2=583758&view=diff
==============================================================================
--- webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c (original)
+++ webservices/rampart/trunk/c/src/util/rampart_sec_header_builder.c Thu Oct 
11 02:53:29 2007
@@ -93,21 +93,22 @@
     /*Check the encryption and signature order*/
     if(rampart_context_is_encrypt_before_sign(rampart_context, env))
     {
-        /*TODO encrypt before sign*/
+        is_encrypt_before_sign = AXIS2_TRUE;
+        /*TODO encrypt before sign. Complicated stuff...*/
 
     }else{ /*Sign before encrypt*/
         is_encrypt_before_sign = AXIS2_FALSE;
         
-        /*First do signature specific stuff*/
-        status = rampart_sig_sign_message(env, msg_ctx, rampart_context, 
soap_envelope, sec_node);
-        if(status != AXIS2_SUCCESS){
-            AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
-                            "[rampart][shb] Sym binding, Signing failed. 
ERROR");
-            return AXIS2_FAILURE;
-        }
+        /*TODO First do signature specific stuff using Symmetric key*/
+        
+        
         /*Then Handle Encryption stuff*/
-
-
+        status = rampart_enc_dk_encrypt_message(env, msg_ctx, rampart_context, 
soap_envelope, sec_node);
+        if (status == AXIS2_FAILURE)
+        {
+                AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[rampart][shb] Sym 
binding, Encryption failed in Symmetric binding. ERROR");
+                return AXIS2_FAILURE;
+        }
     }
     status = AXIS2_SUCCESS;
 


Reply via email to