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/13 07:04:57 UTC
svn commit: r474165 - in /webservices/axis2/trunk/c/rampart: include/
src/handlers/ src/omxmlsec/ src/util/ test/omxmlsec/
Author: kaushalye
Date: Sun Nov 12 22:04:56 2006
New Revision: 474165
URL: http://svn.apache.org/viewvc?view=rev&rev=474165
Log:
Comititng following changes
1. Introducing rampart_encryption : Handles en/decrypting soap messages.
2. Introducing oxs_asym_ctx : Encapsulates information related to assymetric en/decryption.
3. Introducing certificate : Encapsulates x509 certificate related information.
4. Changes made to rampart action to support asymmetric encryption.
5. Introducing new features to the OMXMLSec to encrypt a session key.
6. Removed rampart_crypto engine from the Makefile - No longer in use. Will delete it from the svn later.
Added:
webservices/axis2/trunk/c/rampart/include/oxs_asym_ctx.h
webservices/axis2/trunk/c/rampart/include/oxs_certificate.h
webservices/axis2/trunk/c/rampart/include/rampart_encryption.h
webservices/axis2/trunk/c/rampart/src/omxmlsec/asym_ctx.c
webservices/axis2/trunk/c/rampart/src/omxmlsec/certificate.c
webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c
Modified:
webservices/axis2/trunk/c/rampart/include/oxs_encryption.h
webservices/axis2/trunk/c/rampart/include/oxs_token_key_info.h
webservices/axis2/trunk/c/rampart/include/oxs_xml_encryption.h
webservices/axis2/trunk/c/rampart/include/rampart_action.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/Makefile.am
webservices/axis2/trunk/c/rampart/src/omxmlsec/ctx.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/xml_encryption.c
webservices/axis2/trunk/c/rampart/src/util/Makefile.am
webservices/axis2/trunk/c/rampart/src/util/rampart_action.c
webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c
Added: webservices/axis2/trunk/c/rampart/include/oxs_asym_ctx.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_asym_ctx.h?view=auto&rev=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_asym_ctx.h (added)
+++ webservices/axis2/trunk/c/rampart/include/oxs_asym_ctx.h Sun Nov 12 22:04:56 2006
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OXS_ASYM_CTX_H
+#define OXS_ASYM_CTX_H
+
+
+/**
+ * @file oxs_asym_ctx.h
+ * @brief
+ */
+
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axiom_node.h>
+#include <oxs_certificate.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/** @defgroup oxs_asym_ctx Message Context
+ * @ingroup
+ * @{
+ */
+
+
+ typedef enum {
+ OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT,
+ OXS_ASYM_CTX_OPERATION_PRV_DECRYPT,
+ OXS_ASYM_CTX_OPERATION_PUB_DECRYPT,
+ OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT
+ }oxs_asym_ctx_operation_t;
+
+ /** Type name for struct oxs_asym_ctx_ops */
+ typedef struct oxs_asym_ctx_ops oxs_asym_ctx_ops_t;
+ /** Type name for struct oxs_asym_ctx */
+ typedef struct oxs_asym_ctx oxs_asym_ctx_t;
+
+ struct oxs_asym_ctx_ops
+ {
+
+ axis2_status_t (AXIS2_CALL *
+ free)(
+ oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env
+ );
+
+ oxs_asym_ctx_operation_t (AXIS2_CALL *
+ get_operation)(
+ const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env
+ );
+
+
+ axis2_char_t *(AXIS2_CALL *
+ get_file_name)(
+ const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env
+ );
+
+ oxs_certificate_t *(AXIS2_CALL *
+ get_certificate)(
+ const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env
+ );
+
+ axis2_char_t *(AXIS2_CALL *
+ get_algorithm)(
+ const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env
+ );
+
+ axis2_status_t (AXIS2_CALL *
+ set_operation)(
+ oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ oxs_asym_ctx_operation_t operation
+ );
+
+ axis2_status_t (AXIS2_CALL *
+ set_file_name)(
+ oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ axis2_char_t *file_name
+ );
+
+ axis2_status_t (AXIS2_CALL *
+ set_certificate)(
+ oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ oxs_certificate_t *cert
+ );
+
+
+ axis2_status_t (AXIS2_CALL *
+ set_algorithm)(
+ oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ axis2_char_t *enc_algorithm
+ );
+
+
+ };
+
+ struct oxs_asym_ctx
+ {
+ /** operations of oxs_asym_ctx */
+ oxs_asym_ctx_ops_t *ops;
+ };
+
+ /*Create function*/
+ AXIS2_EXTERN oxs_asym_ctx_t *AXIS2_CALL
+ oxs_asym_ctx_create(const axis2_env_t *env);
+
+
+/**********************Wrappers******************************************/
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_free(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_asym_ctx_get_file_name(const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_asym_ctx_get_algorithm(const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN oxs_asym_ctx_operation_t AXIS2_CALL
+oxs_asym_ctx_get_operation(const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN oxs_certificate_t* AXIS2_CALL
+oxs_asym_ctx_get_certificate(const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_file_name(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ axis2_char_t *file_name);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_algorithm(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ axis2_char_t *algorithm);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_operation(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ oxs_asym_ctx_operation_t operation);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_certificate(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ oxs_certificate_t *certificate);
+
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* OXS_ASYM_CTX_H */
Added: webservices/axis2/trunk/c/rampart/include/oxs_certificate.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_certificate.h?view=auto&rev=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_certificate.h (added)
+++ webservices/axis2/trunk/c/rampart/include/oxs_certificate.h Sun Nov 12 22:04:56 2006
@@ -0,0 +1,176 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OXS_CERTIFICATE_H
+#define OXS_CERTIFICATE_H
+
+
+/**
+ * @file oxs_certificate.h
+ * @brief
+ */
+
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axiom_node.h>
+#include <oxs_certificate.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/** @defgroup oxs_certificate
+ * @ingroup
+ * @{
+ */
+
+
+ /**
+ * Serial number
+ * Subject
+ * Issuer
+ * Data
+ */
+ /** Type name for struct oxs_certificate_ops */
+ typedef struct oxs_certificate_ops oxs_certificate_ops_t;
+
+ /** Type name for struct oxs_certificate */
+ typedef struct oxs_certificate oxs_certificate_t;
+
+ struct oxs_certificate_ops
+ {
+
+ axis2_status_t (AXIS2_CALL *
+ free)(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env
+ );
+
+ axis2_char_t *(AXIS2_CALL *
+ get_serial_number)(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+ );
+
+ axis2_char_t *(AXIS2_CALL *
+ get_subject)(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+ );
+
+ axis2_char_t *(AXIS2_CALL *
+ get_issuer)(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+ );
+
+ axis2_char_t *(AXIS2_CALL *
+ get_data)(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+ );
+
+ axis2_status_t (AXIS2_CALL *
+ set_serial_number)(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *serial_number
+ );
+
+ axis2_status_t (AXIS2_CALL *
+ set_issuer)(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *issuer
+ );
+
+ axis2_status_t (AXIS2_CALL *
+ set_subject)(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *subject
+ );
+
+
+ axis2_status_t (AXIS2_CALL *
+ set_data)(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *data
+ );
+
+ };
+
+ struct oxs_certificate
+ {
+ /** operations of oxs_certificate */
+ oxs_certificate_ops_t *ops;
+ };
+
+ /*Create function*/
+ AXIS2_EXTERN oxs_certificate_t *AXIS2_CALL
+ oxs_certificate_create(const axis2_env_t *env);
+
+
+/**********************Wrappers******************************************/
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_free(oxs_certificate_t *certificate,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_certificate_get_serial_number(const oxs_certificate_t *certificate,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_certificate_get_subject(const oxs_certificate_t *certificate,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_certificate_get_issuer(const oxs_certificate_t *certificate,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_certificate_get_data(const oxs_certificate_t *certificate,
+ const axis2_env_t *env);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_set_serial_number(oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *serial_number);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_set_subject(oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *subject);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_set_issuer(oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *issuer);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_set_data(oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *data);
+
+/** @} */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* OXS_CERTIFICATE_H */
Modified: webservices/axis2/trunk/c/rampart/include/oxs_encryption.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_encryption.h?view=diff&rev=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_encryption.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_encryption.h Sun Nov 12 22:04:56 2006
@@ -25,6 +25,7 @@
#include <axis2_defines.h>
#include <oxs_ctx.h>
+#include <oxs_asym_ctx.h>
#include <axis2_env.h>
#include <axiom_node.h>
#include <axiom_element.h>
@@ -41,7 +42,11 @@
oxs_buffer_t *input,
oxs_buffer_t *result);
-
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_encryption_asymmetric_crypt(const axis2_env_t *env,
+ oxs_asym_ctx_t * enc_ctx,
+ oxs_buffer_t *input,
+ oxs_buffer_t *result);
/** @} */
#ifdef __cplusplus
}
Modified: webservices/axis2/trunk/c/rampart/include/oxs_token_key_info.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/oxs_token_key_info.h?view=diff&rev=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_token_key_info.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_token_key_info.h Sun Nov 12 22:04:56 2006
@@ -36,7 +36,7 @@
/**
* KeyInfo element
*/
-AXIS2_EXTERN axiom_node_t* AXIS2_CALL
+AXIS2_EXTERN axiom_node_t *AXIS2_CALL
oxs_token_build_key_info_element(const axis2_env_t *env,
axiom_node_t *parent
);
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=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/oxs_xml_encryption.h (original)
+++ webservices/axis2/trunk/c/rampart/include/oxs_xml_encryption.h Sun Nov 12 22:04:56 2006
@@ -35,29 +35,35 @@
{
#endif
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
oxs_xml_enc_encrypt_node(const axis2_env_t *env,
oxs_ctx_t * enc_ctx,
axiom_node_t *node,
axiom_node_t **enc_type_node);
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
oxs_xml_enc_decrypt_node(const axis2_env_t *env,
oxs_ctx_t * enc_ctx,
axiom_node_t *enc_type_node,
axiom_node_t **decrypted_node);
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
oxs_xml_enc_encrypt_data(const axis2_env_t *env,
oxs_ctx_t * enc_ctx,
oxs_buffer_t *content_buf,
axiom_node_t **enc_type_node);
-axis2_status_t AXIS2_CALL
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
oxs_xml_enc_decrypt_data(const axis2_env_t *env,
oxs_ctx_t * enc_ctx,
axiom_node_t *enc_type_node,
oxs_buffer_t *result_buf);
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+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);
/** @} */
#ifdef __cplusplus
}
Modified: webservices/axis2/trunk/c/rampart/include/rampart_action.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/rampart_action.h?view=diff&rev=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/rampart_action.h (original)
+++ webservices/axis2/trunk/c/rampart/include/rampart_action.h Sun Nov 12 22:04:56 2006
@@ -167,25 +167,25 @@
);
/**
- * Gets encryption_prop_file of the rampart action.
+ * Gets encryption_key_file of the rampart action.
* @param actions rampart_action ptr to action
* @param env pointer to environment struct
- * @return encryption_prop_file
+ * @return encryption_key_file
*/
axis2_char_t *(AXIS2_CALL *
- get_encryption_prop_file )(
+ get_encryption_key_file )(
rampart_actions_t *actions,
const axis2_env_t *env
);
/**
- * Gets decryption_prop_file of the rampart action.
+ * Gets decryption_key_file of the rampart action.
* @param actions rampart_action ptr to action
* @param env pointer to environment struct
- * @return decryption_prop_file
+ * @return decryption_key_file
*/
axis2_char_t *(AXIS2_CALL *
- get_decryption_prop_file )(
+ get_decryption_key_file )(
rampart_actions_t *actions,
const axis2_env_t *env
);
@@ -362,31 +362,31 @@
);
/**
- * Sets encryption_prop_file of the rampart action.
+ * Sets encryption_key_file of the rampart action.
* @param actions rampart_action ptr to action
* @param env pointer to environment struct
- * @param encryption_prop_file
+ * @param encryption_key_file
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
- set_encryption_prop_file)(
+ set_encryption_key_file)(
rampart_actions_t *actions,
const axis2_env_t *env,
- axis2_char_t *encryption_prop_file
+ axis2_char_t *encryption_key_file
);
/**
- * Sets decryption_prop_file of the rampart action.
+ * Sets decryption_key_file of the rampart action.
* @param actions rampart_action ptr to action
* @param env pointer to environment struct
- * @param decryption_prop_file
+ * @param decryption_key_file
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
- set_decryption_prop_file)(
+ set_decryption_key_file)(
rampart_actions_t *actions,
const axis2_env_t *env,
- axis2_char_t *decryption_prop_file
+ axis2_char_t *decryption_key_file
);
/**
@@ -579,17 +579,17 @@
#define RAMPART_ACTIONS_SET_PW_CB_CLASS(actions, env, password_callback_class)\
((actions)->ops->set_password_callback_class(actions, env,password_callback_class ))
-#define RAMPART_ACTIONS_GET_ENC_PROP_FILE(actions, env) \
- ((actions)->ops->get_encryption_prop_file(actions, env) )
+#define RAMPART_ACTIONS_GET_ENC_KEY_FILE(actions, env) \
+ ((actions)->ops->get_encryption_key_file(actions, env) )
-#define RAMPART_ACTIONS_SET_ENC_PROP_FILE(actions, env, encryption_prop_file)\
- ((actions)->ops->set_encryption_prop_file(actions, env, encryption_prop_file))
+#define RAMPART_ACTIONS_SET_ENC_KEY_FILE(actions, env, encryption_key_file)\
+ ((actions)->ops->set_encryption_key_file(actions, env, encryption_key_file))
-#define RAMPART_ACTIONS_GET_DEC_PROP_FILE(actions, env) \
- ((actions)->ops->get_decryption_prop_file(actions, env) )
+#define RAMPART_ACTIONS_GET_DEC_KEY_FILE(actions, env) \
+ ((actions)->ops->get_decryption_key_file(actions, env) )
-#define RAMPART_ACTIONS_SET_DEC_PROP_FILE(actions, env, decryption_prop_file)\
- ((actions)->ops->set_decryption_prop_file(actions, env, decryption_prop_file))
+#define RAMPART_ACTIONS_SET_DEC_KEY_FILE(actions, env, decryption_key_file)\
+ ((actions)->ops->set_decryption_key_file(actions, env, decryption_key_file))
#define RAMPART_ACTIONS_GET_SIG_PROP_FILE(actions, env) \
((actions)->ops->get_signature_prop_file(actions, env) )
Added: webservices/axis2/trunk/c/rampart/include/rampart_encryption.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/include/rampart_encryption.h?view=auto&rev=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/include/rampart_encryption.h (added)
+++ webservices/axis2/trunk/c/rampart/include/rampart_encryption.h Sun Nov 12 22:04:56 2006
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2003-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <axis2_utils_defines.h>
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axiom_soap.h>
+#include <axis2_msg_ctx.h>
+#include <rampart_action.h>
+
+/**
+ * @file rampart_encryption.h
+ * @brief
+ */
+#ifndef RAMPART_ENCRYPTION_H
+#define RAMPART_ENCRYPTION_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+* @param env pointer to environment struct
+* @param msg_ctx message context
+* @param actions actions defined in the descriptor file
+* @param soap_envelope the SOAP envelope
+* @param sec_node The security element
+* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+*/
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rampart_enc_encrypt_message(const axis2_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ rampart_actions_t *actions,
+ axiom_soap_envelope_t *soap_envelope,
+ axiom_node_t *sec_node);
+
+
+/**
+* @param env pointer to environment struct
+* @param msg_ctx message context
+* @param actions actions defined in the descriptor file
+* @param soap_envelope the SOAP envelope
+* @param sec_node The security element
+* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
+*/
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rampart_enc_decrypt_message(const axis2_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ rampart_actions_t *actions,
+ axiom_soap_envelope_t *soap_envelope,
+ axiom_node_t *sec_node);
+
+/* @} */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !RAMPART_ENCRYPTION_H */
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=474165&r1=474164&r2=474165
==============================================================================
--- 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 12 22:04:56 2006
@@ -29,7 +29,6 @@
#include <rampart_handler_util.h>
#include <rampart_timestamp_token.h>
#include <rampart_util.h>
-#include <rampart_crypto_engine.h>
/*************************** Function headers *********************************/
@@ -74,7 +73,6 @@
axis2_char_t *items = NULL;
axiom_node_t *sec_node, *ts_node = NULL;
axiom_element_t *sec_ele, *ts_ele = NULL;
- axis2_status_t enc_status = AXIS2_FAILURE;
rampart_actions_t *actions = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
@@ -215,32 +213,8 @@
else if (0 == AXIS2_STRCMP(RAMPART_ACTION_ITEMS_ENCRYPT, AXIS2_STRTRIM(env, item, NULL)))
{
/*Do useful to verify encrypt*/
+ AXIS2_LOG_INFO(env->log, "[rampart][rampart_in_handler] Decryption... NOT IMPLEMENTED YET.. SORRY");
- rampart_crypto_engine_t *engine = NULL;
- AXIS2_LOG_INFO(env->log, "[rampart][rampart_in_handler] Decrypting message");
-
- engine = rampart_crypto_engine_create(env);
- enc_status = RAMPART_CRYPTO_ENGINE_DECRYPT_MESSAGE(engine, env, msg_ctx, actions, soap_envelope, sec_node);
-
- RAMPART_CRYPTO_ENGINE_FREE(engine, env);
- if (enc_status == AXIS2_SUCCESS)
- {
- status = AXIS2_SUCCESS;
- }
- else
- {
- axis2_array_list_t *sub_codes = NULL;
- sub_codes = axis2_array_list_create(env, 1);
- if (sub_codes)
- {
- AXIS2_ARRAY_LIST_ADD(sub_codes, env, RAMPART_FAULT_FAILED_AUTHENTICATION);
- }
- AXIS2_LOG_INFO(env->log, "[rampart][rampart_in_handler] Decryption FAILED");
-
- rampart_create_fault_envelope(env, "wsse:FailedCheck",
- "Decryption failed. Hej kau complete this", sub_codes, msg_ctx);
- return AXIS2_FAILURE;
- }
/*Signature*/
}
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=474165&r1=474164&r2=474165
==============================================================================
--- 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 12 22:04:56 2006
@@ -26,7 +26,6 @@
#include <rampart_username_token.h>
#include <rampart_handler_util.h>
#include <rampart_timestamp_token.h>
-#include <rampart_crypto_engine.h>
#include <rampart_action.h>
/*********************** Function headers *********************************/
@@ -99,7 +98,6 @@
axis2_array_list_t *action_list = NULL;
axis2_param_t *param_action = NULL;
axis2_char_t *items = NULL;
- axis2_status_t enc_status = AXIS2_FAILURE;
rampart_actions_t *actions = NULL;
axis2_status_t status = AXIS2_FAILURE;
@@ -266,24 +264,8 @@
else if (0 == AXIS2_STRCMP(RAMPART_ACTION_ITEMS_ENCRYPT,
AXIS2_STRTRIM(env, item, NULL)))
{
- rampart_crypto_engine_t *engine = NULL;
-
- AXIS2_LOG_INFO(env->log, "[rampart][rampart_out_handler] Encrypting message");
- engine = rampart_crypto_engine_create(env);
-
- enc_status = RAMPART_CRYPTO_ENGINE_ENCRYPT_MESSAGE(engine, env, msg_ctx, actions, soap_envelope, sec_node);
-
- RAMPART_CRYPTO_ENGINE_FREE(engine, env);
-
- if (enc_status != AXIS2_SUCCESS)
- {
- AXIS2_LOG_INFO(env->log, "[rampart][rampart_out_handler] Encryption failed. ERROR");
- return AXIS2_FAILURE;
- }
-
- enc_status = AXIS2_SUCCESS;/*TODO Remove*/
- AXIS2_LOG_INFO(env->log, "[rampart][rampart_out_handler] Encryption success");
+ AXIS2_LOG_INFO(env->log, "[rampart][rampart_out_handler] Encrypting we do not support yet");
/*Signature*/
}
else if (0 == AXIS2_STRCMP(RAMPART_ACTION_ITEMS_SIGNATURE,
Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/Makefile.am?view=diff&rev=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/Makefile.am (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/Makefile.am Sun Nov 12 22:04:56 2006
@@ -5,7 +5,7 @@
token_encrypted_data.c token_encryption_method.c token_cipher_value.c \
token_cipher_data.c token_key_name.c token_key_info.c token_binary_security_token.c \
token_reference_list.c token_data_reference.c token_encrypted_key.c iv.c xml_encryption.c encryption.c\
- utility.c
+ utility.c certificate.c asym_ctx.c
libomxmlsec_la_LIBADD = -lssl\
../../../util/src/libaxis2_util.la \
Added: webservices/axis2/trunk/c/rampart/src/omxmlsec/asym_ctx.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/asym_ctx.c?view=auto&rev=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/asym_ctx.c (added)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/asym_ctx.c Sun Nov 12 22:04:56 2006
@@ -0,0 +1,378 @@
+/*
+ * Copyright 2003-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <axis2_util.h>
+#include <oxs_asym_ctx.h>
+#include <oxs_certificate.h>
+#include <oxs_error.h>
+
+typedef struct oxs_asym_ctx_impl
+{
+ oxs_asym_ctx_t asym_ctx;
+
+ axis2_char_t *file_name;
+ axis2_char_t *algorithm;
+ oxs_asym_ctx_operation_t operation;
+ oxs_certificate_t *certificate;
+}
+oxs_asym_ctx_impl_t;
+
+/** Interface to implementation conversion macro */
+#define AXIS2_INTF_TO_IMPL(oxs_asym_ctx) ((oxs_asym_ctx_impl_t *)oxs_asym_ctx)
+
+/******** function headers ***************/
+
+/*private functions*/
+static void
+oxs_asym_ctx_init_ops(
+ oxs_asym_ctx_t *asym_ctx);
+
+/*Public functions*/
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_free_impl(
+ oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env
+);
+
+axis2_char_t *AXIS2_CALL
+oxs_asym_ctx_get_file_name_impl(
+ const oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env);
+
+axis2_char_t *AXIS2_CALL
+oxs_asym_ctx_get_algorithm_impl(
+ const oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env);
+
+oxs_asym_ctx_operation_t AXIS2_CALL
+oxs_asym_ctx_get_operation_impl(
+ const oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env);
+
+oxs_certificate_t *AXIS2_CALL
+oxs_asym_ctx_get_certificate_impl(
+ const oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_file_name_impl(
+ oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env,
+ axis2_char_t *file_name);
+
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_algorithm_impl(
+ oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env,
+ axis2_char_t *algorithm);
+
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_operation_impl(
+ oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env,
+ oxs_asym_ctx_operation_t operation);
+
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_certificate_impl(
+ oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env,
+ oxs_certificate_t *certificate);
+
+/******************** end of function headers *****************/
+
+
+axis2_char_t *AXIS2_CALL
+oxs_asym_ctx_get_file_name_impl(
+ const oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env)
+{
+ oxs_asym_ctx_impl_t *asym_ctx_impl = NULL;
+ AXIS2_ENV_CHECK(env, NULL);
+ asym_ctx_impl = AXIS2_INTF_TO_IMPL(asym_ctx);
+
+ return asym_ctx_impl->file_name;
+}
+
+axis2_char_t *AXIS2_CALL
+oxs_asym_ctx_get_algorithm_impl(
+ const oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env)
+{
+ oxs_asym_ctx_impl_t *asym_ctx_impl = NULL;
+ AXIS2_ENV_CHECK(env, NULL);
+ asym_ctx_impl = AXIS2_INTF_TO_IMPL(asym_ctx);
+
+ return asym_ctx_impl->algorithm;
+}
+
+oxs_asym_ctx_operation_t AXIS2_CALL
+oxs_asym_ctx_get_operation_impl(
+ const oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env)
+{
+ oxs_asym_ctx_impl_t *asym_ctx_impl = NULL;
+ /*AXIS2_ENV_CHECK(env, NULL);*/
+ asym_ctx_impl = AXIS2_INTF_TO_IMPL(asym_ctx);
+
+ return asym_ctx_impl->operation;
+}
+
+oxs_certificate_t *AXIS2_CALL
+oxs_asym_ctx_get_certificate_impl(
+ const oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env)
+{
+ oxs_asym_ctx_impl_t *asym_ctx_impl = NULL;
+ AXIS2_ENV_CHECK(env, NULL);
+ asym_ctx_impl = AXIS2_INTF_TO_IMPL(asym_ctx);
+
+ return asym_ctx_impl->certificate;
+}
+
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_file_name_impl(
+ oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env,
+ axis2_char_t *file_name)
+{
+ oxs_asym_ctx_impl_t *oxs_asym_ctx_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, file_name, AXIS2_FAILURE);
+ oxs_asym_ctx_impl = AXIS2_INTF_TO_IMPL(asym_ctx);
+
+ if (oxs_asym_ctx_impl->file_name)
+ {
+ AXIS2_FREE(env->allocator, oxs_asym_ctx_impl->file_name);
+ oxs_asym_ctx_impl->file_name = NULL;
+ }
+ oxs_asym_ctx_impl->file_name = AXIS2_STRDUP(file_name, env);
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_algorithm_impl(
+ oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env,
+ axis2_char_t *algorithm)
+{
+ oxs_asym_ctx_impl_t *oxs_asym_ctx_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, algorithm, AXIS2_FAILURE);
+ oxs_asym_ctx_impl = AXIS2_INTF_TO_IMPL(asym_ctx);
+
+ if (oxs_asym_ctx_impl->algorithm)
+ {
+ AXIS2_FREE(env->allocator, oxs_asym_ctx_impl->algorithm);
+ oxs_asym_ctx_impl->algorithm = NULL;
+ }
+ oxs_asym_ctx_impl->algorithm = AXIS2_STRDUP(algorithm, env);
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_operation_impl(
+ oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env,
+ oxs_asym_ctx_operation_t operation)
+{
+ oxs_asym_ctx_impl_t *oxs_asym_ctx_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ oxs_asym_ctx_impl = AXIS2_INTF_TO_IMPL(asym_ctx);
+
+ oxs_asym_ctx_impl->operation = operation;
+ return AXIS2_SUCCESS;
+}
+
+
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_certificate_impl(
+ oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env,
+ oxs_certificate_t *certificate)
+{
+ oxs_asym_ctx_impl_t *oxs_asym_ctx_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, certificate, AXIS2_FAILURE);
+ oxs_asym_ctx_impl = AXIS2_INTF_TO_IMPL(asym_ctx);
+
+ if (oxs_asym_ctx_impl->certificate)
+ {
+ oxs_certificate_free(oxs_asym_ctx_impl->certificate, env);
+ oxs_asym_ctx_impl->certificate = NULL;
+ }
+ oxs_asym_ctx_impl->certificate = certificate;
+ return AXIS2_SUCCESS;
+}
+
+
+static void
+oxs_asym_ctx_init_ops(
+ oxs_asym_ctx_t *asym_ctx)
+{
+ asym_ctx->ops->get_file_name = oxs_asym_ctx_get_file_name_impl;
+ asym_ctx->ops->get_algorithm = oxs_asym_ctx_get_algorithm_impl;
+ asym_ctx->ops->get_operation = oxs_asym_ctx_get_operation_impl;
+ asym_ctx->ops->get_certificate = oxs_asym_ctx_get_certificate_impl;
+ asym_ctx->ops->set_file_name = oxs_asym_ctx_set_file_name_impl;
+ asym_ctx->ops->set_algorithm = oxs_asym_ctx_set_algorithm_impl;
+ asym_ctx->ops->set_operation = oxs_asym_ctx_set_operation_impl;
+ asym_ctx->ops->set_certificate = oxs_asym_ctx_set_certificate_impl;
+ asym_ctx->ops->free = oxs_asym_ctx_free_impl;
+}
+
+
+AXIS2_EXTERN oxs_asym_ctx_t *AXIS2_CALL
+oxs_asym_ctx_create_asym_ctx(const axis2_env_t *env)
+{
+ oxs_asym_ctx_impl_t *asym_ctx_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ asym_ctx_impl = AXIS2_MALLOC(env->allocator, sizeof(oxs_asym_ctx_impl_t));
+ if (!asym_ctx_impl)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+
+ asym_ctx_impl->file_name= NULL;
+ asym_ctx_impl->algorithm = NULL;
+ asym_ctx_impl->operation = -1;
+ asym_ctx_impl->certificate = NULL;
+
+ asym_ctx_impl->asym_ctx.ops = AXIS2_MALLOC(env->allocator, sizeof(oxs_asym_ctx_ops_t));
+ if (!asym_ctx_impl->asym_ctx.ops)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ oxs_asym_ctx_free(&(asym_ctx_impl->asym_ctx), env);
+ return NULL;
+ }
+
+ oxs_asym_ctx_init_ops(&(asym_ctx_impl->asym_ctx));
+
+ return &(asym_ctx_impl->asym_ctx);
+
+}
+
+
+axis2_status_t AXIS2_CALL
+oxs_asym_ctx_free_impl(oxs_asym_ctx_t *asym_ctx,
+ const axis2_env_t *env)
+{
+ oxs_asym_ctx_impl_t *asym_ctx_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ asym_ctx_impl = AXIS2_INTF_TO_IMPL(asym_ctx);
+
+ if (asym_ctx_impl->file_name)
+ {
+ AXIS2_FREE(env->allocator, asym_ctx_impl->file_name);
+ asym_ctx_impl->file_name = NULL;
+ }
+
+ if (asym_ctx_impl->algorithm)
+ {
+ AXIS2_FREE(env->allocator, asym_ctx_impl->algorithm);
+ asym_ctx_impl->algorithm = NULL;
+ }
+
+ if (asym_ctx_impl->certificate)
+ {
+ oxs_certificate_free(asym_ctx_impl->certificate, env);
+ asym_ctx_impl->certificate = NULL;
+ }
+
+ AXIS2_FREE(env->allocator, asym_ctx_impl);
+ asym_ctx_impl = NULL;
+
+ return AXIS2_SUCCESS;
+}
+
+/**********************Wrappers******************************************/
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_free(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env)
+{
+ return ctx->ops->free(ctx, env);
+}
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_asym_ctx_get_file_name(const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env)
+{
+ return ctx->ops->get_file_name(ctx, env);
+}
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_asym_ctx_get_algorithm(const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env)
+{
+ return ctx->ops->get_algorithm(ctx, env);
+}
+
+AXIS2_EXTERN oxs_asym_ctx_operation_t AXIS2_CALL
+oxs_asym_ctx_get_operation(const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env)
+{
+ return ctx->ops->get_operation(ctx, env);
+}
+
+AXIS2_EXTERN oxs_certificate_t* AXIS2_CALL
+oxs_asym_ctx_get_certificate(const oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env)
+{
+ return ctx->ops->get_certificate(ctx, env);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_file_name(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ axis2_char_t *file_name)
+{
+ return ctx->ops->set_file_name(ctx, env,file_name );
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_algorithm(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ axis2_char_t *algorithm)
+{
+ return ctx->ops->set_algorithm(ctx, env, algorithm);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_operation(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ oxs_asym_ctx_operation_t operation)
+{
+ return ctx->ops->set_operation(ctx, env,operation );
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_asym_ctx_set_certificate(oxs_asym_ctx_t *ctx,
+ const axis2_env_t *env,
+ oxs_certificate_t *certificate)
+{
+ return ctx->ops->set_certificate(ctx, env, certificate);
+}
+
Added: webservices/axis2/trunk/c/rampart/src/omxmlsec/certificate.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/certificate.c?view=auto&rev=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/certificate.c (added)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/certificate.c Sun Nov 12 22:04:56 2006
@@ -0,0 +1,407 @@
+/*
+ * Copyright 2003-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <axis2_util.h>
+#include <oxs_constants.h>
+#include <oxs_certificate.h>
+
+
+typedef struct oxs_certificate_impl
+{
+ oxs_certificate_t certificate;
+
+ axis2_char_t *serial_number;
+ axis2_char_t *subject;
+ axis2_char_t *issuer;
+ axis2_char_t *data;
+}
+oxs_certificate_impl_t;
+
+
+/** Interface to implementation conversion macro */
+#define AXIS2_INTF_TO_IMPL(oxs_certificate) ((oxs_certificate_impl_t *)oxs_certificate)
+
+/******************* function headers ******************************/
+/* private functions */
+static void
+oxs_certificate_init_ops(
+ oxs_certificate_t *certificate);
+
+/*public functions*/
+axis2_status_t AXIS2_CALL
+oxs_certificate_free_impl(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env
+);
+
+
+axis2_char_t *AXIS2_CALL
+oxs_certificate_get_serial_number_impl(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+);
+
+axis2_char_t *AXIS2_CALL
+oxs_certificate_get_subject_impl(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+);
+
+axis2_char_t *AXIS2_CALL
+oxs_certificate_get_issuer_impl(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+);
+
+axis2_char_t *AXIS2_CALL
+oxs_certificate_get_data_impl(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+);
+
+
+axis2_status_t AXIS2_CALL
+oxs_certificate_set_serial_number_impl(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *serial_number
+);
+
+axis2_status_t AXIS2_CALL
+oxs_certificate_set_subject_impl(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *subject
+);
+
+axis2_status_t AXIS2_CALL
+oxs_certificate_set_issuer_impl(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *issuer
+);
+
+axis2_status_t AXIS2_CALL
+oxs_certificate_set_data_impl(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *data
+);
+
+
+/******************* end of function headers ******************************/
+AXIS2_EXTERN oxs_certificate_t *AXIS2_CALL
+oxs_certificate_create(const axis2_env_t *env)
+{
+ oxs_certificate_impl_t *certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, NULL);
+
+ certificate_impl = AXIS2_MALLOC(env->allocator, sizeof(oxs_certificate_impl_t));
+ if (!certificate_impl)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return NULL;
+ }
+
+ certificate_impl->serial_number = NULL;
+ certificate_impl->subject = NULL;
+ certificate_impl->issuer = NULL;
+ certificate_impl->data = NULL;
+
+
+ certificate_impl->certificate.ops = AXIS2_MALLOC(env->allocator, sizeof(oxs_certificate_ops_t));
+ if (!certificate_impl->certificate.ops)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ oxs_certificate_free(&(certificate_impl->certificate), env);
+ return NULL;
+ }
+ oxs_certificate_init_ops(&(certificate_impl->certificate));
+
+ return &(certificate_impl->certificate);
+}
+
+/* private functions */
+static void
+oxs_certificate_init_ops(
+ oxs_certificate_t *certificate)
+{
+ certificate->ops->free = oxs_certificate_free_impl ;
+
+ certificate->ops->get_serial_number= oxs_certificate_get_serial_number_impl ;
+ certificate->ops->get_subject = oxs_certificate_get_subject_impl ;
+ certificate->ops->get_issuer = oxs_certificate_get_issuer_impl ;
+ certificate->ops->get_data = oxs_certificate_get_data_impl ;
+
+ certificate->ops->set_serial_number = oxs_certificate_set_serial_number_impl ;
+ certificate->ops->set_subject = oxs_certificate_set_subject_impl ;
+ certificate->ops->set_issuer = oxs_certificate_set_issuer_impl ;
+ certificate->ops->set_data = oxs_certificate_set_data_impl ;
+}
+
+/*public functions*/
+axis2_status_t AXIS2_CALL
+oxs_certificate_free_impl(oxs_certificate_t *certificate,
+ const axis2_env_t *env
+ )
+{
+ oxs_certificate_impl_t * certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ certificate_impl = AXIS2_INTF_TO_IMPL(certificate);
+
+
+ if (certificate_impl->serial_number)
+ {
+ AXIS2_FREE(env->allocator, certificate_impl->serial_number);
+ certificate_impl->serial_number = NULL;
+ }
+
+ if (certificate_impl->subject)
+ {
+ AXIS2_FREE(env->allocator, certificate_impl->subject);
+ certificate_impl->subject = NULL;
+ }
+
+ if (certificate_impl->issuer)
+ {
+ AXIS2_FREE(env->allocator, certificate_impl->issuer);
+ certificate_impl->issuer = NULL;
+ }
+
+ if (certificate_impl->data)
+ {
+ AXIS2_FREE(env->allocator, certificate_impl->data);
+ certificate_impl->data = NULL;
+ }
+
+ AXIS2_FREE(env->allocator, certificate_impl);
+ certificate_impl = NULL;
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_char_t *AXIS2_CALL
+oxs_certificate_get_serial_number_impl(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+)
+{
+ oxs_certificate_impl_t * certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ certificate_impl = AXIS2_INTF_TO_IMPL(certificate);
+
+ return certificate_impl->serial_number ;
+}
+
+axis2_char_t *AXIS2_CALL
+oxs_certificate_get_subject_impl(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+)
+{
+ oxs_certificate_impl_t * certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ certificate_impl = AXIS2_INTF_TO_IMPL(certificate);
+
+ return certificate_impl->subject ;
+}
+
+axis2_char_t *AXIS2_CALL
+oxs_certificate_get_issuer_impl(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+)
+{
+ oxs_certificate_impl_t * certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ certificate_impl = AXIS2_INTF_TO_IMPL(certificate);
+
+ return certificate_impl->issuer ;
+}
+
+axis2_char_t *AXIS2_CALL
+oxs_certificate_get_data_impl(
+ const oxs_certificate_t *certificate,
+ const axis2_env_t *env
+)
+{
+ oxs_certificate_impl_t * certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ certificate_impl = AXIS2_INTF_TO_IMPL(certificate);
+
+ return certificate_impl->data ;
+}
+
+axis2_status_t AXIS2_CALL
+oxs_certificate_set_serial_number_impl(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *serial_number
+)
+{
+ oxs_certificate_impl_t * certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, serial_number, AXIS2_FAILURE);
+
+ certificate_impl = AXIS2_INTF_TO_IMPL(certificate);
+ if (certificate_impl->serial_number)
+ {
+ AXIS2_FREE(env->allocator, certificate_impl->serial_number);
+ certificate_impl->serial_number = NULL;
+ }
+ certificate_impl->serial_number = AXIS2_STRDUP(serial_number, env);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+oxs_certificate_set_subject_impl(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *subject
+)
+{
+ oxs_certificate_impl_t * certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, subject, AXIS2_FAILURE);
+
+ certificate_impl = AXIS2_INTF_TO_IMPL(certificate);
+ if (certificate_impl->subject)
+ {
+ AXIS2_FREE(env->allocator, certificate_impl->subject);
+ certificate_impl->subject = NULL;
+ }
+ certificate_impl->subject = AXIS2_STRDUP(subject, env);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+oxs_certificate_set_issuer_impl(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *issuer
+)
+{
+ oxs_certificate_impl_t * certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, issuer, AXIS2_FAILURE);
+
+ certificate_impl = AXIS2_INTF_TO_IMPL(certificate);
+ if (certificate_impl->issuer)
+ {
+ AXIS2_FREE(env->allocator, certificate_impl->issuer);
+ certificate_impl->issuer = NULL;
+ }
+ certificate_impl->issuer = AXIS2_STRDUP(issuer, env);
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+oxs_certificate_set_data_impl(
+ oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *data
+)
+{
+ oxs_certificate_impl_t * certificate_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, data, AXIS2_FAILURE);
+
+ certificate_impl = AXIS2_INTF_TO_IMPL(certificate);
+ if (certificate_impl->data)
+ {
+ AXIS2_FREE(env->allocator, certificate_impl->data);
+ certificate_impl->data = NULL;
+ }
+ certificate_impl->data = AXIS2_STRDUP(data, env);
+
+ return AXIS2_SUCCESS;
+}
+
+
+/**********************Wrappers******************************************/
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_free(oxs_certificate_t *certificate,
+ const axis2_env_t *env)
+{
+ return certificate->ops->free(certificate, env);
+}
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_certificate_get_serial_number(const oxs_certificate_t *certificate,
+ const axis2_env_t *env)
+{
+ return certificate->ops->get_serial_number(certificate,env);
+}
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_certificate_get_subject(const oxs_certificate_t *certificate,
+ const axis2_env_t *env)
+{
+ return certificate->ops->get_subject(certificate,env);
+}
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_certificate_get_issuer(const oxs_certificate_t *certificate,
+ const axis2_env_t *env)
+{
+ return certificate->ops->get_issuer(certificate,env);
+}
+
+AXIS2_EXTERN axis2_char_t* AXIS2_CALL
+oxs_certificate_get_data(const oxs_certificate_t *certificate,
+ const axis2_env_t *env)
+{
+ return certificate->ops->get_data(certificate,env);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_set_serial_number(oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *serial_number)
+{
+ return certificate->ops->set_serial_number(certificate,env, serial_number);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_set_subject(oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *subject)
+{
+ return certificate->ops->set_subject(certificate,env, subject);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_set_issuer(oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *issuer)
+{
+ return certificate->ops->set_issuer(certificate,env, issuer);
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_certificate_set_data(oxs_certificate_t *certificate,
+ const axis2_env_t *env,
+ axis2_char_t *data)
+{
+ return certificate->ops->set_data(certificate, env, data);
+}
+
+
Modified: webservices/axis2/trunk/c/rampart/src/omxmlsec/ctx.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/omxmlsec/ctx.c?view=diff&rev=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/ctx.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/ctx.c Sun Nov 12 22:04:56 2006
@@ -47,6 +47,7 @@
/*Used in decryption process to keep the data to be decrypted*/
axis2_char_t* input_data;
+ /*TODO: Not in use. Remove later*/
axiom_node_t* enc_data_node;
axiom_node_t* enc_method_node;
axiom_node_t* key_info_node;
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=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/encryption.c Sun Nov 12 22:04:56 2006
@@ -150,3 +150,63 @@
return AXIS2_SUCCESS;
}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+oxs_encryption_asymmetric_crypt(const axis2_env_t *env,
+ oxs_asym_ctx_t *ctx,
+ oxs_buffer_t *input,
+ oxs_buffer_t *result)
+{
+ openssl_pkey_t *pkey = NULL;
+ openssl_rsa_t *rsa = NULL;
+ oxs_asym_ctx_operation_t operation = -1;
+ axis2_char_t *file_name = NULL;
+ axis2_status_t status = AXIS2_FAILURE;
+ /*TODO We support RSA encryption only. If any other algorithm is specified, reject*/
+
+ /*Create and Load the PKEY*/
+ 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*/
+
+ /*Check for the operation and call appropriate method*/
+ operation = oxs_asym_ctx_get_operation(ctx, env);
+ rsa = openssl_rsa_create(env);
+ if( OXS_ASYM_CTX_OPERATION_PUB_ENCRYPT == operation ){
+ axis2_char_t *encoded_str = NULL;
+ unsigned char *encrypted = NULL;
+ int enclen = -1;
+ int encodedlen = -1;
+ int ret = -1;
+
+ /*Encrypt using the public key. Then base64 encode and populate the buffer */
+ enclen = OPENSSL_RSA_PUB_ENCRYPT(rsa, env, pkey, OXS_BUFFER_GET_DATA(input, env), &encrypted);
+ encodedlen = axis2_base64_encode_len(enclen);
+ encoded_str = AXIS2_MALLOC(env->allocator, encodedlen);
+ ret = axis2_base64_encode(encoded_str, (const char *)encrypted, enclen);
+ status = OXS_BUFFER_POPULATE(result, env, (unsigned char*)AXIS2_STRDUP(encoded_str, env), encodedlen);
+
+ }else if(OXS_ASYM_CTX_OPERATION_PRV_DECRYPT == operation ){
+ unsigned char *decoded_encrypted_str = NULL;
+ unsigned char *decrypted = NULL;
+ int ret = -1;
+ int declen = -1;
+
+ /*Base64 decode first. Then do the decryption and populate the buffer*/
+ decoded_encrypted_str = AXIS2_MALLOC(env->allocator, axis2_base64_decode_len((char*)OXS_BUFFER_GET_DATA(input, env)));
+ ret = axis2_base64_decode((char*)decoded_encrypted_str, (char*)OXS_BUFFER_GET_DATA(input, env));
+ declen = OPENSSL_RSA_PRV_DECRYPT(rsa, env, pkey, decoded_encrypted_str, &decrypted);
+ status = OXS_BUFFER_POPULATE(result, env, decrypted, declen);
+
+ }else if(OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT == operation ){
+ /**/
+ }else if(OXS_ASYM_CTX_OPERATION_PRV_ENCRYPT == operation ){
+ /**/
+ }else{
+
+ }
+
+ /*TODO Set certificate information taken from the PEM file */
+
+ return AXIS2_SUCCESS;
+}
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=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/key.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/key.c Sun Nov 12 22:04:56 2006
@@ -396,6 +396,6 @@
OXS_BUFFER_GET_DATA(key_buf, env), NULL,
OXS_BUFFER_GET_SIZE(key_buf, env), OXS_KEY_USAGE_NONE);
- /*free buffer*/
+ /* Duplicate key data and free key_buf*/
return ret;
}
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=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c (original)
+++ webservices/axis2/trunk/c/rampart/src/omxmlsec/xml_encryption.c Sun Nov 12 22:04:56 2006
@@ -184,3 +184,46 @@
return oxs_encryption_symmetric_crypt(env, enc_ctx, input_buf, result_buf);
}
+axis2_status_t AXIS2_CALL
+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)
+{
+ axis2_char_t *algorithm = NULL;
+ axis2_char_t *encrypted_key_data = NULL;
+ oxs_buffer_t *input = NULL;
+ oxs_buffer_t *result = NULL;
+ axiom_node_t *encrypted_key_node = NULL;
+ axiom_node_t *enc_mtd_node = NULL;
+ /*axiom_node_t *key_info_node = NULL;*/
+ axiom_node_t *cd_node = NULL;
+ axiom_node_t *cv_node = NULL;
+ axis2_status_t status = AXIS2_FAILURE;
+
+ /*Create input buffer*/
+ input = oxs_buffer_create(env);
+ OXS_BUFFER_POPULATE(input, env, OXS_KEY_GET_DATA(sym_key, env), OXS_KEY_GET_SIZE(sym_key, env));
+
+ /*Create an empty buffer to collect results*/
+ result = oxs_buffer_create(env);
+
+ /*Call encryption*/
+ status = oxs_encryption_asymmetric_crypt(env, asym_ctx, input, result);
+
+ /*Get the encrypted key*/
+ encrypted_key_data = (axis2_char_t *)OXS_BUFFER_GET_DATA(result, env);
+
+ /*Build nodes*/
+ encrypted_key_node = oxs_token_build_encrypted_key_element(env, parent);
+ 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);
+
+ 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=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/Makefile.am (original)
+++ webservices/axis2/trunk/c/rampart/src/util/Makefile.am Sun Nov 12 22:04:56 2006
@@ -2,7 +2,9 @@
noinst_LTLIBRARIES = librampart_util.la
-librampart_util_la_SOURCES = rampart_action.c rampart_crypto_engine.c rampart_crypto_util.c rampart_util.c rampart_handler_util.c username_token.c timestamp_token.c
+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
librampart_util_la_LIBADD = -lssl \
-lcrypto \
Modified: webservices/axis2/trunk/c/rampart/src/util/rampart_action.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/rampart/src/util/rampart_action.c?view=diff&rev=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/rampart_action.c (original)
+++ webservices/axis2/trunk/c/rampart/src/util/rampart_action.c Sun Nov 12 22:04:56 2006
@@ -37,8 +37,8 @@
axis2_char_t *user ;
axis2_char_t *password_type ;
axis2_char_t *password_callback_class ;
- axis2_char_t *encryption_prop_file;
- axis2_char_t *decryption_prop_file;
+ axis2_char_t *encryption_key_file;
+ axis2_char_t *decryption_key_file;
axis2_char_t *signature_prop_file ;
axis2_char_t *signature_key_identifier ;
axis2_char_t *encryption_key_identifier ;
@@ -102,13 +102,13 @@
);
static axis2_char_t *AXIS2_CALL
-rampart_actions_get_encryption_prop_file(
+rampart_actions_get_encryption_key_file(
rampart_actions_t *actions,
const axis2_env_t *env
);
static axis2_char_t *AXIS2_CALL
-rampart_actions_get_decryption_prop_file(
+rampart_actions_get_decryption_key_file(
rampart_actions_t *actions,
const axis2_env_t *env
);
@@ -200,17 +200,17 @@
);
static axis2_status_t AXIS2_CALL
-rampart_actions_set_encryption_prop_file(
+rampart_actions_set_encryption_key_file(
rampart_actions_t *actions,
const axis2_env_t *env,
- axis2_char_t *encryption_prop_file
+ axis2_char_t *encryption_key_file
);
static axis2_status_t AXIS2_CALL
-rampart_actions_set_decryption_prop_file(
+rampart_actions_set_decryption_key_file(
rampart_actions_t *actions,
const axis2_env_t *env,
- axis2_char_t *decryption_prop_file
+ axis2_char_t *decryption_key_file
);
static axis2_status_t AXIS2_CALL
@@ -302,8 +302,8 @@
actions_impl->password_type = NULL;
actions_impl->user = NULL;
actions_impl->password_callback_class = NULL;
- actions_impl->encryption_prop_file = NULL;
- actions_impl->decryption_prop_file = NULL;
+ actions_impl->encryption_key_file = NULL;
+ actions_impl->decryption_key_file = NULL;
actions_impl->signature_prop_file = NULL;
actions_impl->signature_key_identifier = NULL;
actions_impl->encryption_key_identifier = NULL;
@@ -417,7 +417,7 @@
}
static axis2_char_t *AXIS2_CALL
-rampart_actions_get_encryption_prop_file(
+rampart_actions_get_encryption_key_file(
rampart_actions_t *actions,
const axis2_env_t *env
)
@@ -426,11 +426,11 @@
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
actions_impl = AXIS2_INTF_TO_IMPL(actions);
- return actions_impl->encryption_prop_file ;
+ return actions_impl->encryption_key_file ;
}
static axis2_char_t *AXIS2_CALL
-rampart_actions_get_decryption_prop_file(
+rampart_actions_get_decryption_key_file(
rampart_actions_t *actions,
const axis2_env_t *env
)
@@ -439,7 +439,7 @@
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
actions_impl = AXIS2_INTF_TO_IMPL(actions);
- return actions_impl->decryption_prop_file ;
+ return actions_impl->decryption_key_file ;
}
static axis2_char_t *AXIS2_CALL
@@ -695,24 +695,24 @@
return AXIS2_SUCCESS;
}
static axis2_status_t AXIS2_CALL
-rampart_actions_set_encryption_prop_file(
+rampart_actions_set_encryption_key_file(
rampart_actions_t *actions,
const axis2_env_t *env,
- axis2_char_t *encryption_prop_file
+ axis2_char_t *encryption_key_file
)
{
rampart_actions_impl_t * actions_impl = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, encryption_prop_file, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, encryption_key_file, AXIS2_FAILURE);
actions_impl = AXIS2_INTF_TO_IMPL(actions);
- if (actions_impl->encryption_prop_file)
+ if (actions_impl->encryption_key_file)
{
- AXIS2_FREE(env->allocator, actions_impl->encryption_prop_file);
- actions_impl->encryption_prop_file = NULL;
+ AXIS2_FREE(env->allocator, actions_impl->encryption_key_file);
+ actions_impl->encryption_key_file = NULL;
}
- actions_impl->encryption_prop_file = AXIS2_STRDUP(encryption_prop_file, env) ;
- if(!actions_impl->encryption_prop_file ){
+ actions_impl->encryption_key_file = AXIS2_STRDUP(encryption_key_file, env) ;
+ if(!actions_impl->encryption_key_file ){
return AXIS2_FAILURE;
}
@@ -720,24 +720,24 @@
}
static axis2_status_t AXIS2_CALL
-rampart_actions_set_decryption_prop_file(
+rampart_actions_set_decryption_key_file(
rampart_actions_t *actions,
const axis2_env_t *env,
- axis2_char_t *decryption_prop_file
+ axis2_char_t *decryption_key_file
)
{
rampart_actions_impl_t * actions_impl = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, decryption_prop_file, AXIS2_FAILURE);
+ AXIS2_PARAM_CHECK(env->error, decryption_key_file, AXIS2_FAILURE);
actions_impl = AXIS2_INTF_TO_IMPL(actions);
- if (actions_impl->decryption_prop_file)
+ if (actions_impl->decryption_key_file)
{
- AXIS2_FREE(env->allocator, actions_impl->decryption_prop_file);
- actions_impl->decryption_prop_file = NULL;
+ AXIS2_FREE(env->allocator, actions_impl->decryption_key_file);
+ actions_impl->decryption_key_file = NULL;
}
- actions_impl->decryption_prop_file = AXIS2_STRDUP(decryption_prop_file, env) ;
- if(!actions_impl->decryption_prop_file ){
+ actions_impl->decryption_key_file = AXIS2_STRDUP(decryption_key_file, env) ;
+ if(!actions_impl->decryption_key_file ){
return AXIS2_FAILURE;
}
@@ -904,8 +904,8 @@
actions_impl->password_type = NULL;
actions_impl->user = NULL;
actions_impl->password_callback_class = NULL;
- actions_impl->encryption_prop_file = NULL;
- actions_impl->decryption_prop_file = NULL;
+ actions_impl->encryption_key_file = NULL;
+ actions_impl->decryption_key_file = NULL;
actions_impl->signature_prop_file = NULL;
actions_impl->signature_key_identifier = NULL;
actions_impl->encryption_key_identifier = NULL;
@@ -965,16 +965,16 @@
actions_impl->password_callback_class = NULL;
}
- if (actions_impl->encryption_prop_file)
+ if (actions_impl->encryption_key_file)
{
- AXIS2_FREE(env->allocator, actions_impl->encryption_prop_file);
- actions_impl->encryption_prop_file = NULL;
+ AXIS2_FREE(env->allocator, actions_impl->encryption_key_file);
+ actions_impl->encryption_key_file = NULL;
}
- if (actions_impl->decryption_prop_file)
+ if (actions_impl->decryption_key_file)
{
- AXIS2_FREE(env->allocator, actions_impl->decryption_prop_file);
- actions_impl->decryption_prop_file = NULL;
+ AXIS2_FREE(env->allocator, actions_impl->decryption_key_file);
+ actions_impl->decryption_key_file = NULL;
}
if (actions_impl->signature_prop_file)
@@ -1294,10 +1294,10 @@
actions->ops->set_user = rampart_actions_set_user;
actions->ops->get_password_callback_class = rampart_actions_get_password_callback_class;
actions->ops->set_password_callback_class = rampart_actions_set_password_callback_class;
- actions->ops->get_encryption_prop_file = rampart_actions_get_encryption_prop_file;
- actions->ops->set_encryption_prop_file = rampart_actions_set_encryption_prop_file;
- actions->ops->get_decryption_prop_file = rampart_actions_get_decryption_prop_file;
- actions->ops->set_decryption_prop_file = rampart_actions_set_decryption_prop_file;
+ actions->ops->get_encryption_key_file = rampart_actions_get_encryption_key_file;
+ actions->ops->set_encryption_key_file = rampart_actions_set_encryption_key_file;
+ actions->ops->get_decryption_key_file = rampart_actions_get_decryption_key_file;
+ actions->ops->set_decryption_key_file = rampart_actions_set_decryption_key_file;
actions->ops->get_signature_prop_file = rampart_actions_get_signature_prop_file;
actions->ops->set_signature_prop_file = rampart_actions_set_signature_prop_file;
actions->ops->get_signature_key_identifier = rampart_actions_get_signature_key_identifier;
Added: 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=auto&rev=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c (added)
+++ webservices/axis2/trunk/c/rampart/src/util/rampart_encryption.c Sun Nov 12 22:04:56 2006
@@ -0,0 +1,173 @@
+/*
+ * Copyright 2003-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <axis2_utils.h>
+#include <oxs_ctx.h>
+#include <oxs_error.h>
+#include <oxs_utility.h>
+#include <oxs_enc_engine.h>
+#include <rampart_encryption.h>
+#include <oxs_token_encrypted_data.h>
+#include <oxs_token_encrypted_key.h>
+#include <oxs_token_encryption_method.h>
+#include <oxs_token_data_reference.h>
+#include <oxs_token_cipher_data.h>
+#include <oxs_token_cipher_value.h>
+#include <oxs_token_key_info.h>
+#include <oxs_token_key_name.h>
+#include <oxs_key.h>
+#include <rampart_action.h>
+#include <rampart_constants.h>
+#include <oxs_token_reference_list.h>
+#include <axis2_array_list.h>
+#include <oxs_axiom.h>
+#include <oxs_asym_ctx.h>
+
+/*Private functions*/
+/*
+ * Get encryption parts. Get node list to be encrypted. If nothing is found use the body.
+ * If body is specified in the encryption parts encrypt the immediate child of <body>
+ **/
+
+static axis2_status_t
+rampart_enc_get_nodes_to_encrypt(const axis2_env_t *env,
+ rampart_actions_t *actions,
+ axiom_soap_envelope_t *soap_envelope,
+ axis2_array_list_t *nodes_to_encrypt
+);
+
+
+
+/*Public functions*/
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rampart_enc_encrypt_message(const axis2_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ rampart_actions_t *actions,
+ axiom_soap_envelope_t *soap_envelope,
+ axiom_node_t *sec_node)
+{
+ axis2_array_list_t *nodes_to_encrypt = NULL;
+ axis2_array_list_t *id_list = NULL;
+ axis2_status_t status = AXIS2_FAILURE;
+ axis2_char_t *enc_sym_algo = NULL;
+ axis2_char_t *enc_asym_algo = NULL;
+ axis2_char_t *certificate_file = NULL;
+ oxs_key_t *session_key = NULL;
+ oxs_asym_ctx_t *asym_ctx = NULL;
+ int i = 0;
+ /*Get nodes to be encrypted*/
+ nodes_to_encrypt = axis2_array_list_create(env, 5);
+ status = rampart_enc_get_nodes_to_encrypt(env, actions, soap_envelope, nodes_to_encrypt);
+
+ /*Get the symmetric encryption algorithm*/
+ enc_sym_algo = RAMPART_ACTIONS_GET_ENC_SYM_ALGO(actions, env);
+
+ /*Generate the session key*/
+ session_key = oxs_key_create_key(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*/
+ id_list = axis2_array_list_create(env, 5);
+
+ /*Repeat until all encryption parts are encrypted*/
+ for(i=0 ; i < AXIS2_ARRAY_LIST_SIZE(nodes_to_encrypt, env); i++){
+ axiom_node_t *node_to_enc = NULL;
+ axiom_node_t *parent_of_node_to_enc = NULL;
+ axiom_node_t *enc_data_node = NULL;
+ oxs_ctx_t *enc_ctx = NULL;
+ axis2_char_t *id = NULL;
+ axis2_status_t enc_status = AXIS2_FAILURE;
+
+ /*Get the node to be encrypted*/
+ node_to_enc = (axiom_node_t *)AXIS2_ARRAY_LIST_GET(nodes_to_encrypt, env, i);
+ /*Create the encryption context for OMXMLSEC*/
+ enc_ctx = oxs_ctx_create(env);
+ /*Set the key*/
+ OXS_CTX_SET_KEY(enc_ctx, env, session_key);
+ /*Create an empty EncryptedDataNode*/
+ parent_of_node_to_enc = AXIOM_NODE_GET_PARENT(node_to_enc, env);
+ id = oxs_util_generate_id(env,(axis2_char_t*)OXS_ENCDATA_ID);
+ enc_data_node = oxs_token_build_encrypted_data_element(env, parent_of_node_to_enc, OXS_TypeEncElement, id );
+ enc_status = oxs_xml_enc_encrypt_node(env, enc_ctx, node_to_enc, enc_data_node);
+ AXIS2_ARRAY_LIST_ADD(id_list, env, id);
+ if(AXIS2_FAILURE == enc_status){
+ return AXIS2_FAILURE;
+ }
+ }
+ /*Get the asymmetric key encryption algorithm*/
+ enc_asym_algo = RAMPART_ACTIONS_GET_ENC_KT_ALGO(actions, env);
+ /*Get the certificate file name*/
+ certificate_file = RAMPART_ACTIONS_GET_ENC_KEY_FILE(actions, env);
+ /*Create asymmetric encryption context*/
+ asym_ctx = oxs_asym_ctx_create(env);
+ oxs_asym_ctx_set_algorithm(asym_ctx, env, enc_asym_algo);
+ 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);
+
+
+ return AXIS2_SUCCESS;
+}
+
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+rampart_enc_decrypt_message(const axis2_env_t *env,
+ axis2_msg_ctx_t *msg_ctx,
+ rampart_actions_t *actions,
+ axiom_soap_envelope_t *soap_envelope,
+ axiom_node_t *sec_node)
+{
+
+ return AXIS2_SUCCESS;
+}
+
+/*Private function implementations*/
+static axis2_status_t
+rampart_enc_get_nodes_to_encrypt(const axis2_env_t *env,
+ rampart_actions_t *actions,
+ axiom_soap_envelope_t *soap_envelope,
+ axis2_array_list_t *nodes_to_encrypt)
+{
+ axis2_array_list_t *str_list = NULL;
+ axis2_char_t *encryption_parts = NULL;
+ int size, i = 0;
+
+ /*Get encryption parts*/
+ encryption_parts = AXIS2_STRDUP(RAMPART_ACTIONS_GET_ENCRYPTION_PARTS(actions, env), env);
+ /*If no encryption parts are specified use body as default*/
+ if((!encryption_parts) || (0 == AXIS2_STRCMP(encryption_parts, " "))){
+ axiom_soap_body_t *body = NULL;
+ axiom_node_t *body_node = NULL;
+
+ AXIS2_LOG_INFO(env->log, "[rampart][rampart_encryption] No encryption parts specified. Using the body as default");
+ body = AXIOM_SOAP_ENVELOPE_GET_BODY(soap_envelope, env);
+ body_node = AXIOM_SOAP_BODY_GET_BASE_NODE(body, env);
+ AXIS2_ARRAY_LIST_ADD(nodes_to_encrypt, env, body_node);
+ return AXIS2_SUCCESS;
+ }
+
+ /*Tokenize*/
+ str_list = axis2_tokenize(env, encryption_parts, ' ');
+ size = AXIS2_ARRAY_LIST_SIZE(str_list, env);
+ /*Find the node and add to the list*/
+ for(i=0 ; i < size ; i++ ){
+ /*TODO*/
+ }
+ 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=474165&r1=474164&r2=474165
==============================================================================
--- webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c (original)
+++ webservices/axis2/trunk/c/rampart/test/omxmlsec/test.c Sun Nov 12 22:04:56 2006
@@ -27,6 +27,7 @@
#include <oxs_encryption.h>
#include <oxs_xml_encryption.h>
#include <oxs_token_encrypted_data.h>
+#include <oxs_certificate.h>
AXIS2_EXTERN axiom_node_t* AXIS2_CALL
@@ -120,6 +121,13 @@
env = test_init();
printf("--Testing started--------------------------------------------\n");
+
+ /*additional code start*/
+ oxs_certificate_t *cert = NULL;
+ cert = oxs_certificate_create(env);
+ oxs_certificate_set_serial_number(cert, env, "MYSER-NUMBER");
+ printf("\nSER NO :%s\n", oxs_certificate_get_serial_number(cert, env));
+ /*additional code end*/
if (argc > 1)
filename = argv[1];
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org