You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ka...@apache.org on 2006/11/20 06:38:44 UTC

svn commit: r477054 - in /webservices/axis2/trunk/c/rampart: include/ src/handlers/ src/omxmlsec/ src/util/ test/omxmlsec/

Author: kaushalye
Date: Sun Nov 19 21:38:36 2006
New Revision: 477054

URL: http://svn.apache.org/viewvc?view=rev&rev=477054
Log:
This commit includes following modifications + improvements.
1. EncryptedKey processing in security header processor.
2. Use of a oxs_buffer inside oxs_key class.
3. Building SecurityTokenReferences.
4. Parsing Security Token references
5. Decrypting a session key using the recievers private key(right now we have limitation of supporting only one key)


Modified:
    webservices/axis2/trunk/c/rampart/include/oxs_key.h
    webservices/axis2/trunk/c/rampart/include/oxs_token_cipher_data.h
    webservices/axis2/trunk/c/rampart/include/oxs_token_reference_list.h
    webservices/axis2/trunk/c/rampart/include/oxs_xml_encryption.h
    webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c
    webservices/axis2/trunk/c/rampart/src/handlers/rampart_out_handler.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/key.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/token_cipher_data.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/token_reference_list.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/utility.c
    webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c
    webservices/axis2/trunk/c/rampart/src/util/Makefile.am
    webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c
    webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c

Modified: webservices/axis2/trunk/c/rampart/include/oxs_key.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_key.h?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_key.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_key.h Sun Nov 19 21:38:36 2006
@@ -95,18 +95,6 @@
                     const oxs_key_t *key,
                     const axis2_env_t *env);
         
-         /**
-         * Sets data of the key.
-         * @param key oxs_key ptr to key
-         * @param env pointer to environment struct
-         * @param data data of the key
-         * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
-         */
-        axis2_status_t (AXIS2_CALL *
-                set_data)(
-                    oxs_key_t *key,
-                    const axis2_env_t *env,
-                    unsigned char *data);
 
          /**
          * Sets the name of the key.
@@ -121,18 +109,6 @@
                     const axis2_env_t *env,
                     axis2_char_t *name);
 
-         /**
-         * Sets the size of the key.
-         * @param key oxs_key ptr to key
-         * @param env pointer to environment struct
-         * @param size size of the key
-         * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
-         */
-        axis2_status_t (AXIS2_CALL *
-                set_size)(
-                    oxs_key_t *key,
-                    const axis2_env_t *env,
-                    int size);
 
          /**
          * Set the usage of the key.
@@ -212,7 +188,7 @@
     };
 
 AXIS2_EXTERN oxs_key_t *AXIS2_CALL
-oxs_key_create_key(const axis2_env_t *env);
+oxs_key_create(const axis2_env_t *env);
 
 /*Macros*/
 
@@ -229,14 +205,8 @@
 #define OXS_KEY_GET_USAGE(key,env)\
     ((key)->ops->get_usage(key,env))
 
-#define OXS_KEY_SET_DATA(key,env, data)\
-    ((key)->ops->set_data(key, env, data))
-
 #define OXS_KEY_SET_NAME(key,env, name)\
     ((key)->ops->set_name(key, env, name))
-
-#define OXS_KEY_SET_SIZE(key,env, size)\
-    ((key)->ops->set_size(key, env, size))
 
 #define OXS_KEY_SET_USAGE(key,env, usage)\
     ((key)->ops->set_usage(key, env, usage))

Modified: webservices/axis2/trunk/c/rampart/include/oxs_token_cipher_data.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_token_cipher_data.h?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_token_cipher_data.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_token_cipher_data.h Sun Nov 19 21:38:36 2006
@@ -41,9 +41,11 @@
                         axiom_node_t *parent
                     );
 
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+oxs_token_get_cipher_value_from_cipher_data(const axis2_env_t *env,
+            axiom_node_t *cd_node);
 
 
-/*TODO write free method*/
 /** @} */
 #ifdef __cplusplus
 }

Modified: webservices/axis2/trunk/c/rampart/include/oxs_token_reference_list.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_token_reference_list.h?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_token_reference_list.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_token_reference_list.h Sun Nov 19 21:38:36 2006
@@ -42,6 +42,9 @@
                         axiom_node_t *parent
                     );
 
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_token_build_data_reference_list(const axis2_env_t *env, axiom_node_t *parent, axis2_array_list_t *id_list);
+
 AXIS2_EXTERN axis2_array_list_t *AXIS2_CALL
 oxs_token_get_reference_list_data(const axis2_env_t *env, axiom_node_t *ref_list_node);
 

Modified: webservices/axis2/trunk/c/rampart/include/oxs_xml_encryption.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_xml_encryption.h?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_xml_encryption.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_xml_encryption.h Sun Nov 19 21:38:36 2006
@@ -63,7 +63,14 @@
 oxs_xml_enc_encrypt_key(const axis2_env_t *env,
                             oxs_asym_ctx_t * asym_ctx,
                             axiom_node_t *parent,
-                            oxs_key_t *sym_key);
+                            oxs_key_t *sym_key,
+                            axis2_array_list_t *id_list);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_xml_enc_decrypt_key(const axis2_env_t *env,
+                            oxs_asym_ctx_t * asym_ctx,
+                            axiom_node_t *encrypted_key_node,
+                            oxs_key_t *key);                            
 /** @} */
 #ifdef __cplusplus
 }

Modified: webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c (original)
+++ webservices/axis2/trunk/c/rampart/src/handlers/rampart_in_handler.c Sun Nov 19 21:38:36 2006
@@ -178,9 +178,11 @@
                     rampart_create_fault_envelope(env, "wsse:Security", "Security header element is not valid", sub_codes, msg_ctx);
                     return AXIS2_FAILURE;
                 }
-
+                /*NEW CODE*/
+                /*status = rampart_shp_process_message(env, msg_ctx, actions, soap_envelope, sec_node);*/
+                
                 sec_ele = AXIOM_NODE_GET_DATA_ELEMENT(sec_node, env);
-
+                
                 /*UsernameToken*/
                 if (0 == AXIS2_STRCMP(RAMPART_ACTION_ITEMS_USERNAMETOKEN, AXIS2_STRTRIM(env, item, NULL)))
                 {

Modified: webservices/axis2/trunk/c/rampart/src/handlers/rampart_out_handler.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/handlers/rampart_out_handler.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/handlers/rampart_out_handler.c (original)
+++ webservices/axis2/trunk/c/rampart/src/handlers/rampart_out_handler.c Sun Nov 19 21:38:36 2006
@@ -269,7 +269,7 @@
                 {
 
                     AXIS2_LOG_INFO(env->log, "[rampart][rampart_out_handler] Encrypting we do not support yet");
-                    
+                    status = rampart_enc_encrypt_message(env, msg_ctx, actions, soap_envelope, sec_node);    
                     /*Signature*/
                 }
                 else if (0 == AXIS2_STRCMP(RAMPART_ACTION_ITEMS_SIGNATURE,

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c Sun Nov 19 21:38:36 2006
@@ -164,7 +164,9 @@
     axis2_status_t status = AXIS2_FAILURE;
     /*TODO We support RSA encryption only. If any other algorithm is specified, reject*/
 
-    /*Create and Load the PKEY*/
+    /*1. Try to get th epkey from the asy_ctx*/
+    
+    /*2. If not try to load the key from the dec_prop_file*/
     file_name = oxs_asym_ctx_get_file_name(ctx, env);
     pkey =  openssl_pkey_create(env);
     status = OPENSSL_PKEY_LOAD(pkey, env, file_name, "");/*TODO password*/

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/key.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/key.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/key.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/key.c Sun Nov 19 21:38:36 2006
@@ -27,10 +27,12 @@
 {
     oxs_key_t key;
 
-    unsigned char *data;
+
+    oxs_buffer_t *buf;
     axis2_char_t *name;
-    int            size;
     int            usage;
+    /*int            size;
+    unsigned char *data;*/
 }
 oxs_key_impl_t;
 
@@ -126,7 +128,7 @@
     AXIS2_ENV_CHECK(env, NULL);
     key_impl = AXIS2_INTF_TO_IMPL(key);
 
-    return key_impl->data;
+    return OXS_BUFFER_GET_DATA(key_impl->buf, env);
 
 }
 
@@ -151,8 +153,8 @@
     oxs_key_impl_t *key_impl = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     key_impl = AXIS2_INTF_TO_IMPL(key);
-
-    return key_impl->size;
+    
+    return OXS_BUFFER_GET_SIZE(key_impl->buf, env);
 
 }
 
@@ -170,27 +172,6 @@
 }
 
 
-axis2_status_t AXIS2_CALL
-oxs_key_set_data(
-    oxs_key_t *key,
-    const axis2_env_t *env,
-    unsigned char *data)
-{
-    oxs_key_impl_t *oxs_key_impl = NULL;
-
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    AXIS2_PARAM_CHECK(env->error, data, AXIS2_FAILURE);
-    oxs_key_impl = AXIS2_INTF_TO_IMPL(key);
-
-    if (oxs_key_impl->data)
-    {
-        AXIS2_FREE(env->allocator, oxs_key_impl->data);
-        oxs_key_impl->data = NULL;
-    }
-    oxs_key_impl->data = (unsigned char *)strdup(data);
-    return AXIS2_SUCCESS;
-
-}
 
 axis2_status_t AXIS2_CALL
 oxs_key_set_name(
@@ -214,21 +195,6 @@
 
 }
 
-axis2_status_t AXIS2_CALL
-oxs_key_set_size(
-    oxs_key_t *key,
-    const axis2_env_t *env,
-    int size)
-{
-    oxs_key_impl_t *oxs_key_impl = NULL;
-
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    oxs_key_impl = AXIS2_INTF_TO_IMPL(key);
-
-    oxs_key_impl->size = size;
-    return AXIS2_SUCCESS;
-
-}
 
 axis2_status_t AXIS2_CALL
 oxs_key_set_usage(
@@ -256,9 +222,7 @@
     key->ops->get_name  = oxs_key_get_name;
     key->ops->get_size  = oxs_key_get_size;
     key->ops->get_usage = oxs_key_get_usage;
-    key->ops->set_data  = oxs_key_set_data ;
     key->ops->set_name  = oxs_key_set_name;
-    key->ops->set_size  = oxs_key_set_size;
     key->ops->set_usage = oxs_key_set_usage;
     key->ops->free      = oxs_key_free;
     key->ops->populate  = oxs_key_populate;
@@ -268,7 +232,7 @@
 
 
 AXIS2_EXTERN oxs_key_t *AXIS2_CALL
-oxs_key_create_key(const axis2_env_t *env)
+oxs_key_create(const axis2_env_t *env)
 {
     oxs_key_impl_t *key_impl = NULL;
 
@@ -281,10 +245,12 @@
         return NULL;
     }
 
-    key_impl->data = NULL;
+    key_impl->buf = NULL;
     key_impl->name = NULL;
-    key_impl->size = -1;
     key_impl->usage = -1;
+    
+    /*additionally we need to create a buffer to keep data*/
+    key_impl->buf = oxs_buffer_create(env);
 
     key_impl->key.ops =  AXIS2_MALLOC(env->allocator, sizeof(oxs_key_ops_t));
     if (!key_impl->key.ops)
@@ -295,7 +261,6 @@
     }
 
     oxs_key_init_ops(&(key_impl->key));
-
     return &(key_impl->key);
 
 }
@@ -311,7 +276,9 @@
 
     key_impl = AXIS2_INTF_TO_IMPL(key);
 
-    key_impl->data = NULL;
+    OXS_BUFFER_FREE(key_impl->buf, env);
+    key_impl->buf = NULL;
+    AXIS2_FREE(env->allocator,  key_impl->name);
     key_impl->name = NULL;
 
     AXIS2_FREE(env->allocator,  key_impl);
@@ -328,12 +295,17 @@
         int size,
         int usage)
 {
+    oxs_key_impl_t *key_impl = NULL;
     int ret;
 
-    ret = OXS_KEY_SET_DATA(key, env, data);
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+    key_impl = AXIS2_INTF_TO_IMPL(key);
+
     ret = OXS_KEY_SET_NAME(key, env, name);
-    ret = OXS_KEY_SET_SIZE(key, env, size);
     ret = OXS_KEY_SET_USAGE(key, env, usage);
+
+    ret = OXS_BUFFER_POPULATE(key_impl->buf, env, data, size);
 
     return AXIS2_SUCCESS;
 }

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/token_cipher_data.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/token_cipher_data.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/token_cipher_data.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/token_cipher_data.c Sun Nov 19 21:38:36 2006
@@ -15,10 +15,12 @@
  */
 
 #include <stdio.h>
+#include <axiom_element.h>
 #include <oxs_constants.h>
 #include <oxs_error.h>
 #include <oxs_token_cipher_data.h>
-#include <axiom_element.h>
+#include <oxs_token_cipher_value.h>
+#include <oxs_axiom.h>
 
 
 AXIS2_EXTERN axiom_node_t* AXIS2_CALL
@@ -44,3 +46,20 @@
     return cipher_data_node;
 }
 
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+oxs_token_get_cipher_value_from_cipher_data(const axis2_env_t *env,
+            axiom_node_t *cd_node)
+{
+    axiom_node_t *cv_node = NULL;
+    axis2_char_t *value = NULL;
+    /*First check direct <CipherValue>*/
+    cv_node = oxs_axiom_get_first_child_node_by_name(env, cd_node, OXS_NODE_CIPHER_VALUE, NULL, NULL);
+    if(cv_node){
+        value = oxs_token_get_cipher_value(env, cv_node);
+    }else{
+        /*If not then check for <CipherReference URI?>*/
+        /*TODO*/
+    }
+
+    return value;
+}

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/token_reference_list.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/token_reference_list.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/token_reference_list.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/token_reference_list.c Sun Nov 19 21:38:36 2006
@@ -24,8 +24,7 @@
 
 AXIS2_EXTERN axiom_node_t* AXIS2_CALL
 oxs_token_build_reference_list_element(const axis2_env_t *env,
-        axiom_node_t *parent
-                                      )
+        axiom_node_t *parent )
 {
     axiom_node_t *reference_list_node = NULL;
     axiom_element_t *reference_list_ele = NULL;
@@ -46,6 +45,33 @@
     return reference_list_node;
 }
 
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_token_build_data_reference_list(const axis2_env_t *env, axiom_node_t *parent, axis2_array_list_t *id_list)
+{
+    axiom_node_t *ref_list_node = NULL;
+    int i=0;
+
+    if(!id_list){
+        return AXIS2_SUCCESS;
+    }
+    /*Build the ReferenceList element*/
+    ref_list_node = oxs_token_build_reference_list_element(env, parent);
+    if(!ref_list_node) {return AXIS2_FAILURE;}
+
+    /*Build the list*/
+    for(i=0 ; i < AXIS2_ARRAY_LIST_SIZE(id_list, env); i++){ 
+        axiom_node_t *data_ref_node = NULL;
+        axis2_char_t *id = NULL;
+        
+        /*We need to prepend # to the id in the list to create the reference*/
+        id = AXIS2_STRACAT("#",(axis2_char_t*)AXIS2_ARRAY_LIST_GET(id_list, env, i), env);
+        data_ref_node = oxs_token_build_data_reference_element(env, ref_list_node, id);
+
+        if(!data_ref_node) {return AXIS2_FAILURE;}
+    }
+    return AXIS2_SUCCESS;
+}
+
 AXIS2_EXTERN axis2_array_list_t *AXIS2_CALL
 oxs_token_get_reference_list_data(const axis2_env_t *env, axiom_node_t *ref_list_node)
 {
@@ -70,6 +96,7 @@
 
     list = axis2_array_list_create(env, 0);
 
+    /*Insert UIDs of nodes to the list*/
     while (AXIS2_TRUE == AXIOM_CHILDREN_QNAME_ITERATOR_HAS_NEXT(iter, env))
     {
         axiom_node_t *dref_node = NULL;

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/utility.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/utility.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/utility.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/utility.c Sun Nov 19 21:38:36 2006
@@ -32,7 +32,7 @@
 
     random =  AXIS2_STRNDUP(axis2_uuid_gen(env),18, env);
     sprintf(_id, "%s-%s",prefix,random);
-    id = (axis2_char_t*)strdup(_id);
+    id = (axis2_char_t*)AXIS2_STRDUP(_id, env);
     return id;
     
 }

Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c Sun Nov 19 21:38:36 2006
@@ -188,7 +188,8 @@
 oxs_xml_enc_encrypt_key(const axis2_env_t *env,
                             oxs_asym_ctx_t * asym_ctx,
                             axiom_node_t *parent,
-                            oxs_key_t *sym_key)
+                            oxs_key_t *sym_key,
+                            axis2_array_list_t *id_list)
 {
     axis2_char_t *algorithm = NULL;
     axis2_char_t *encrypted_key_data = NULL;
@@ -219,11 +220,60 @@
     algorithm = oxs_asym_ctx_get_algorithm(asym_ctx, env);
     enc_mtd_node = oxs_token_build_encryption_method_element(env, encrypted_key_node, algorithm);
     /*key_info_node = oxs_token_build_key_info_element(env, encrypted_key_node);*/
-    /*TODO SecurityTokenReference*/
     cd_node = oxs_token_build_cipher_data_element(env, encrypted_key_node);
     cv_node = oxs_token_build_cipher_value_element(env, cd_node,  encrypted_key_data);
 
+    /*TODO SecurityTokenReference*/
+    oxs_token_build_data_reference_list(env, encrypted_key_node, id_list); 
     return AXIS2_SUCCESS; 
 }
+/**
+* Inspect the key node. Then populate the sym_key
+*/
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_xml_enc_decrypt_key(const axis2_env_t *env,
+                            oxs_asym_ctx_t * asym_ctx,
+                            axiom_node_t *encrypted_key_node,
+                            oxs_key_t *key)
+{   
+    axiom_node_t *enc_mtd_node = NULL;
+    axiom_node_t *cd_node = NULL;
+    axis2_char_t *enc_mtd_algo = NULL;
+    axis2_char_t *cipher_val = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
+    oxs_buffer_t *input_buf = NULL;
+    oxs_buffer_t *result_buf = NULL;
+    
+    /*Get encryption method algorithm*/
+    enc_mtd_node = oxs_axiom_get_first_child_node_by_name(env, encrypted_key_node, OXS_NODE_ENCRYPTION_METHOD, NULL, NULL);
+    enc_mtd_algo = oxs_token_get_encryption_method(env, enc_mtd_node);
+
+    /*Get cipher data*/
+    cd_node = oxs_axiom_get_first_child_node_by_name(env, encrypted_key_node, OXS_NODE_CIPHER_DATA, NULL, NULL);
+    cipher_val = oxs_token_get_cipher_value_from_cipher_data(env, cd_node);
+    
+    /*Get key used to encrypt*/
+    /*Right now we support KeyInfo -> SecurityTokenReference -> Reference
+                           KeyInfo -> SecurityTokenReference -> X509IssuerSerial */
+
+    /*Get the pkey used to decrypt the session key. If found set it to the asym_ctx*/
+    /*TODO This can be achieved well thru a Keys Mgr*/ 
+    /*Create the input buffer*/
+    input_buf = oxs_buffer_create(env);
+    OXS_BUFFER_POPULATE(input_buf, env, (unsigned char*)cipher_val, AXIS2_STRLEN(cipher_val));
 
+    /*Create a results buffer*/
+    result_buf = oxs_buffer_create(env);
 
+    /*Call decryption*/
+    status = oxs_encryption_asymmetric_crypt(env, asym_ctx, input_buf, result_buf);
+    
+    /*Populate the key with the data in the result buffer*/
+    OXS_KEY_POPULATE(key, env, 
+                            OXS_BUFFER_GET_DATA(result_buf, env), 
+                            "decrypted_session_key", 
+                            OXS_BUFFER_GET_SIZE(result_buf, env), 
+                            OXS_KEY_USAGE_DECRYPT  );
+
+    return AXIS2_SUCCESS;
+}

Modified: webservices/axis2/trunk/c/rampart/src/util/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/Makefile.am?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/Makefile.am (original)
+++ webservices/axis2/trunk/c/rampart/src/util/Makefile.am Sun Nov 19 21:38:36 2006
@@ -4,7 +4,8 @@
 
 librampart_util_la_SOURCES = rampart_action.c rampart_crypto_util.c \
 							rampart_util.c rampart_handler_util.c username_token.c  timestamp_token.c \
-							rampart_encryption.c
+							rampart_encryption.c rampart_sec_header_processor.c
+
 
 librampart_util_la_LIBADD  = -lssl \
 						-lcrypto \

Modified: webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c (original)
+++ webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c Sun Nov 19 21:38:36 2006
@@ -76,7 +76,7 @@
     enc_sym_algo = RAMPART_ACTIONS_GET_ENC_SYM_ALGO(actions, env); 
 
     /*Generate the  session key*/
-    session_key = oxs_key_create_key(env);
+    session_key = oxs_key_create(env);
     status = OXS_KEY_FOR_ALGO(session_key, env, enc_sym_algo); 
 
     /*Create a list to store EncDataIds. This will be used in building the ReferenceList*/
@@ -119,7 +119,7 @@
     oxs_asym_ctx_set_file_name(asym_ctx, env, certificate_file);
     oxs_asym_ctx_set_operation(asym_ctx, env, OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT);
     /*Encrypt the session key*/
-    oxs_xml_enc_encrypt_key(env, asym_ctx, sec_node,session_key);    
+    oxs_xml_enc_encrypt_key(env, asym_ctx, sec_node,session_key, id_list);    
 
 
     return AXIS2_SUCCESS;

Modified: webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c?view=diff&rev=477054&r1=477053&r2=477054
==============================================================================
--- webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c (original)
+++ webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c Sun Nov 19 21:38:36 2006
@@ -66,7 +66,7 @@
 oxs_key_t *create_key(axis2_env_t *env)
 {
     oxs_key_t *key = NULL;
-    key = oxs_key_create_key(env);
+    key = oxs_key_create(env);
     OXS_KEY_POPULATE(key, env, (unsigned char*)"12345678123456781234567812345678", "session_key",  32, OXS_KEY_USAGE_DECRYPT);
     return key;
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org