Author: sahan
Date: Wed May 3 03:43:26 2006
New Revision: 399246
URL: http://svn.apache.org/viewcvs?rev=399246&view=rev
Log:
Added ssl support at the client side
Added:
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.h
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.h
Modified:
webservices/axis2/trunk/c/build.sh
webservices/axis2/trunk/c/configure.ac
webservices/axis2/trunk/c/include/axis2_error.h
webservices/axis2/trunk/c/modules/core/transport/http/sender/Makefile.am
webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c
webservices/axis2/trunk/c/modules/util/error.c
Modified: webservices/axis2/trunk/c/build.sh
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/build.sh?rev=399246&r1=399245&r2=399246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/build.sh (original)
+++ webservices/axis2/trunk/c/build.sh Wed May 3 03:43:26 2006
@@ -2,7 +2,7 @@
./autogen.sh
AXIS2C_HOME=`pwd`/deploy
export AXIS2C_HOME
-./configure --prefix=${AXIS2C_HOME} --enable-tests=yes --enable-trace=yes
--with-apache2=/usr/include/apache2 --with-apr=/usr/include/apr-0
--enable-diclient=no --enable-static=no
+./configure --prefix=${AXIS2C_HOME} --enable-tests=yes --enable-trace=yes
--with-apache2=/usr/include/apache2 --with-apr=/usr/include/apr-0
--enable-diclient=no --enable-static=no --enable-openssl=no
make
make install
cd samples
Modified: webservices/axis2/trunk/c/configure.ac
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/configure.ac?rev=399246&r1=399245&r2=399246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/configure.ac (original)
+++ webservices/axis2/trunk/c/configure.ac Wed May 3 03:43:26 2006
@@ -144,7 +144,7 @@
)
AC_MSG_CHECKING(whether to enable trace)
-AC_ARG_ENABLE(tests, [ --enable-trace enable trace. default=no],
+AC_ARG_ENABLE(trace, [ --enable-trace enable trace. default=no],
[ case "${enableval}" in
no)
AC_MSG_RESULT(no)
@@ -159,7 +159,8 @@
CFLAGS="$CFLAGS"
)
-AC_ARG_ENABLE(tests, [ --enable-multi_threaded enable trace. default=yes],
+AC_MSG_CHECKING(whether to enable multi threading)
+AC_ARG_ENABLE(multi-thread, [ --enable-multi-thread enable multi thread.
default=yes],
[ case "${enableval}" in
no)
AC_MSG_RESULT(no)
@@ -169,11 +170,30 @@
AC_MSG_RESULT(yes)
CFLAGS="$CFLAGS -DAXIS2_SVR_MULTI_THREADED"
;;
+ esac ],[
+ AC_MSG_RESULT(yes)
+ CFLAGS="$CFLAGS -DAXIS2_SVR_MULTI_THREADED"]
+)
+
+AC_MSG_CHECKING(whether to use openssl)
+AC_ARG_ENABLE(openssl, [ --enable-openssl enable ssl. default=no],
+[ case "${enableval}" in
+ no)
+ AC_MSG_RESULT(no)
+ CFLAGS="$CFLAGS"
+ ssl_enabled=false
+ ;;
+ *)
+ AC_MSG_RESULT(yes)
+ CFLAGS="$CFLAGS -DAXIS2_SSL_ENABLED"
+ ssl_enabled=true
+ ;;
esac ],
AC_MSG_RESULT(no)
CFLAGS="$CFLAGS"
)
+
AC_MSG_CHECKING(whether to build dynamic invocation client library)
AC_ARG_ENABLE(diclient, [ --enable-diclient build diclient library
wrapper. default=no],
[ case "${enableval}" in
@@ -208,6 +228,7 @@
AC_SUBST(TESTDIR)
AC_SUBST(SAMPLES)
AC_SUBST(APACHE2BUILD)
+AM_CONDITIONAL(AXIS2_SSL_ENABLED, test x$ssl_enabled = xtrue)
AC_CONFIG_FILES([Makefile \
modules/Makefile \
Modified: webservices/axis2/trunk/c/include/axis2_error.h
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_error.h?rev=399246&r1=399245&r2=399246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_error.h (original)
+++ webservices/axis2/trunk/c/include/axis2_error.h Wed May 3 03:43:26 2006
@@ -431,6 +431,8 @@
AXIS2_ERROR_INVALID_TRANSPORT_PROTOCOL,
/* Error occured in SSL engine */
AXIS2_ERROR_SSL_ENGINE,
+ /* Either axis2c cannot find certificates or the env variable is not
set*/
+ AXIS2_ERROR_SSL_NO_CA_FILE,
/** The following has to be the last error value all the time.
All other error codes should appear above this.
AXIS2_ERROR_LAST is used to track the number of error codes present
Modified:
webservices/axis2/trunk/c/modules/core/transport/http/sender/Makefile.am
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/Makefile.am?rev=399246&r1=399245&r2=399246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/sender/Makefile.am
(original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/sender/Makefile.am
Wed May 3 03:43:26 2006
@@ -4,6 +4,12 @@
soap_over_http_sender.c\
rest_sender.c\
http_client.c
+if AXIS2_SSL_ENABLED
+libaxis2_http_sender_la_SOURCES += ssl/ssl_stream.c\
+ ssl/ssl_utils.c
+libaxis2_http_sender_la_LIBADD = -lssl\
+ -lcrypto
+endif
INCLUDES = -I$(top_builddir)/include \
-I$(top_builddir)/modules/util \
Modified:
webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c?rev=399246&r1=399245&r2=399246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c
(original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c
Wed May 3 03:43:26 2006
@@ -25,6 +25,10 @@
#include <axis2_http_chunked_stream.h>
#include <platforms/axis2_platform_auto_sense.h>
+#ifdef AXIS2_SSL_ENABLED
+#include "ssl/ssl_stream.h"
+#endif
+
/**
* @brief HTTP Client struct impl
@@ -214,7 +218,7 @@
{
#ifdef AXIS2_SSL_ENABLED
client_impl->data_stream = axis2_stream_create_ssl(env,
- client_impl->sockfd)
+ client_impl->sockfd);
#else
AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_TRANSPORT_PROTOCOL,
AXIS2_FAILURE);
Added:
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c?rev=399246&view=auto
==============================================================================
---
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c
(added)
+++
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.c
Wed May 3 03:43:26 2006
@@ -0,0 +1,194 @@
+/*
+ * 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.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include "ssl_stream.h"
+
+
+/**
+ * @brief Stream struct impl
+ * Streaming mechanisms for SSL
+ */
+typedef struct ssl_stream_impl ssl_stream_impl_t;
+
+struct ssl_stream_impl
+{
+ axis2_stream_t stream;
+ axis2_stream_type_t stream_type;
+ SSL *ssl;
+ SSL_CTX *ctx;
+ axis2_socket_t socket;
+};
+
+#define AXIS2_INTF_TO_IMPL(stream) ((ssl_stream_impl_t *)(stream))
+
+/********************************Function
headers******************************/
+axis2_status_t AXIS2_CALL
+axis2_ssl_stream_free (axis2_stream_t *stream, axis2_env_t **env);
+
+axis2_stream_type_t AXIS2_CALL
+axis2_ssl_stream_get_type (axis2_stream_t *stream, axis2_env_t **env);
+
+int AXIS2_CALL
+axis2_ssl_stream_write(axis2_stream_t *stream, axis2_env_t **env,
+ const void *buffer, size_t
count);
+int AXIS2_CALL
+axis2_ssl_stream_read(axis2_stream_t *stream, axis2_env_t **env,
+ void *buffer, size_t count);
+int AXIS2_CALL
+axis2_ssl_stream_skip(axis2_stream_t *stream, axis2_env_t **env, int count);
+
+int AXIS2_CALL
+axis2_ssl_stream_get_char(axis2_stream_t *stream, axis2_env_t **env);
+
+
+AXIS2_DECLARE(axis2_stream_t *)
+axis2_stream_create_ssl(axis2_env_t **env, axis2_socket_t socket)
+{
+ ssl_stream_impl_t *stream_impl = NULL;
+ AXIS2_ENV_CHECK(env, NULL);
+
+ stream_impl = (ssl_stream_impl_t *)AXIS2_MALLOC(
+ (*env)->allocator, sizeof(ssl_stream_impl_t));
+
+ if(NULL == stream_impl)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY,
AXIS2_FAILURE);
+ return NULL;
+ }
+ stream_impl->stream.ops = NULL;
+ stream_impl->socket = socket;
+ stream_impl->ctx = NULL;
+ stream_impl->ssl = NULL;
+
+ stream_impl->ctx = axis2_ssl_utils_initialize_ctx(env);
+ if(NULL == stream_impl->ctx)
+ {
+ axis2_ssl_stream_free((axis2_stream_t*)stream_impl, env);
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SSL_ENGINE, AXIS2_FAILURE);
+ return NULL;
+ }
+ stream_impl->ssl = axis2_ssl_utils_initialize_ssl(env, stream_impl->ctx,
+ stream_impl->socket);
+ if(NULL == stream_impl->ssl)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SSL_ENGINE, AXIS2_FAILURE);
+ return NULL;
+ }
+ stream_impl->stream_type = AXIS2_STREAM_MANAGED;
+ stream_impl->stream.ops = (axis2_stream_ops_t *) AXIS2_MALLOC (
+ (*env)->allocator, sizeof (axis2_stream_ops_t));
+ if (NULL == stream_impl->stream.ops)
+ {
+ axis2_ssl_stream_free(&(stream_impl->stream), env);
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY,
AXIS2_FAILURE);
+ return NULL;
+ }
+
+ stream_impl->stream.ops->free = axis2_ssl_stream_free;
+ stream_impl->stream.ops->read = axis2_ssl_stream_read;
+ stream_impl->stream.ops->write = axis2_ssl_stream_write;
+ stream_impl->stream.ops->skip = axis2_ssl_stream_skip;
+ stream_impl->stream.ops->get_char = axis2_ssl_stream_get_char;
+ stream_impl->stream.ops->get_type = axis2_ssl_stream_get_type;
+
+ return &(stream_impl->stream);
+}
+
+
+axis2_status_t AXIS2_CALL
+axis2_ssl_stream_free (axis2_stream_t *stream, axis2_env_t **env)
+{
+ ssl_stream_impl_t *stream_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ stream_impl = AXIS2_INTF_TO_IMPL(stream);
+ if (NULL != stream_impl->stream.ops)
+ {
+ AXIS2_FREE ((*env)->allocator, stream_impl->stream.ops);
+ }
+ axis2_ssl_utils_cleanup_ssl(env, stream_impl->ctx, stream_impl->ssl);
+ AXIS2_FREE((*env)->allocator, stream_impl);
+
+ return AXIS2_SUCCESS;
+}
+
+int AXIS2_CALL
+axis2_ssl_stream_read(axis2_stream_t *stream, axis2_env_t **env,
+ void *buffer, size_t count)
+{
+ ssl_stream_impl_t *stream_impl = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_CRTICAL_FAILURE);
+
+ stream_impl = AXIS2_INTF_TO_IMPL(stream);
+
+ return SSL_read(stream_impl->ssl ,buffer,count);
+}
+
+int AXIS2_CALL
+axis2_ssl_stream_write(axis2_stream_t *stream, axis2_env_t **env,
+ const void *buf, size_t count)
+{
+ ssl_stream_impl_t *stream_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, AXIS2_CRTICAL_FAILURE);
+ AXIS2_PARAM_CHECK((*env)->error, buf, AXIS2_FAILURE);
+ stream_impl = AXIS2_INTF_TO_IMPL(stream);
+ return SSL_write(stream_impl->ssl, buf, count);
+
+}
+
+
+int AXIS2_CALL
+axis2_ssl_stream_skip(axis2_stream_t *stream, axis2_env_t **env, int count)
+{
+ ssl_stream_impl_t *stream_impl = NULL;
+ axis2_char_t *tmp_buffer = NULL;
+ int len = -1;
+ AXIS2_ENV_CHECK(env, AXIS2_CRTICAL_FAILURE);
+ stream_impl = AXIS2_INTF_TO_IMPL(stream);
+
+ tmp_buffer = AXIS2_MALLOC((*env)->allocator, count * sizeof(axis2_char_t));
+ if(tmp_buffer == NULL)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY,
+ AXIS2_FAILURE);
+ return -1;
+ }
+ len = SSL_read(stream_impl->ssl, tmp_buffer, count);
+ AXIS2_FREE((*env)->allocator, tmp_buffer);
+ return len;
+
+}
+
+int AXIS2_CALL
+axis2_ssl_stream_get_char(axis2_stream_t *stream, axis2_env_t **env)
+{
+ int ret = -1;
+ AXIS2_ENV_CHECK(env, AXIS2_CRTICAL_FAILURE);
+
+ /* TODO implement this */
+ return ret;
+}
+
+axis2_stream_type_t AXIS2_CALL
+axis2_ssl_stream_get_type (axis2_stream_t *stream, axis2_env_t **env)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_CRTICAL_FAILURE);
+ return AXIS2_INTF_TO_IMPL(stream)->stream_type;
+}
+
Added:
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.h
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.h?rev=399246&view=auto
==============================================================================
---
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.h
(added)
+++
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_stream.h
Wed May 3 03:43:26 2006
@@ -0,0 +1,45 @@
+/*
+ * 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 count 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 AXIS2_SSL_STREAM_H
+#define AXIS2_SSL_STREAM_H
+
+#include <axis2_const.h>
+#include <axis2_defines.h>
+#include <axis2_env.h>
+#include <axis2_stream.h>
+#include <platforms/axis2_platform_auto_sense.h>
+#include <openssl/ssl.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+/** \brief Constructor for creating ssl stream
+ * @return axis2_stream (ssl)
+ */
+AXIS2_DECLARE(axis2_stream_t *)
+axis2_stream_create_ssl(axis2_env_t **env, axis2_socket_t socket);
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* AXIS2_SSL_STREAM_H */
Added:
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c?rev=399246&view=auto
==============================================================================
---
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c
(added)
+++
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.c
Wed May 3 03:43:26 2006
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+#include "ssl_utils.h"
+
+
+AXIS2_DECLARE (SSL_CTX *)
+axis2_ssl_utils_initialize_ctx(axis2_env_t **env)
+{
+ SSL_METHOD *meth = NULL;
+ axis2_char_t *ca_file = NULL;
+ SSL_CTX *ctx = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ /*TODO getenv */
+ ca_file = AXIS2_GETENV("AXIS2_SSL_CA_FILE");
+ if(NULL == ca_file)
+ {
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_SSL_NO_CA_FILE,
+ AXIS2_FAILURE);
+ return NULL;
+ }
+ if(!bio_err)
+ {
+ /* Global system initialization*/
+ SSL_library_init();
+ SSL_load_error_strings();
+
+ /* An error write context */
+ bio_err=BIO_new_fp(stderr, BIO_NOCLOSE);
+ }
+
+ /* Create our context*/
+ meth = SSLv23_method();
+ ctx = SSL_CTX_new(meth);
+
+ /* Load our keys and certificates
+ * If we need client certificates it has to be done here
+ */
+ /*if(!(SSL_CTX_use_certificate_chain_file(ctx, keyfile)))
+ {
+ SSL_CTX_free(ctx);
+ return NULL;
+ }*/
+ /* Load the CAs we trust*/
+ if(!(SSL_CTX_load_verify_locations(ctx, ca_file, 0)))
+ {
+ SSL_CTX_free(ctx);
+ return NULL;
+ }
+
+#if (OPENSSL_VERSION_NUMBER < 0x00905100L)
+ SSL_CTX_set_verify_depth(ctx, 1);
+#endif
+
+ return ctx;
+}
+
+AXIS2_DECLARE (SSL *)
+axis2_ssl_utils_initialize_ssl(axis2_env_t **env, SSL_CTX *ctx,
+ axis2_socket_t socket)
+{
+ SSL *ssl = NULL;
+ BIO *sbio = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+ AXIS2_PARAM_CHECK((*env)->error, ctx, NULL);
+
+ ssl = SSL_new(ctx);
+ if(NULL == ssl)
+ {
+ return NULL;
+ }
+ sbio = BIO_new_socket(socket, BIO_NOCLOSE);
+ if(NULL == sbio)
+ {
+ return NULL;
+ }
+ SSL_set_bio(ssl, sbio, sbio);
+ return ssl;
+}
+
+AXIS2_DECLARE (axis2_status_t)
+axis2_ssl_utils_cleanup_ssl(axis2_env_t **env, SSL_CTX *ctx, SSL *ssl)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ if(NULL != ssl)
+ {
+ SSL_shutdown(ssl);
+ }
+ if(NULL != ctx)
+ {
+ SSL_CTX_free(ctx);
+ }
+ return AXIS2_SUCCESS;
+}
Added:
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.h
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.h?rev=399246&view=auto
==============================================================================
---
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.h
(added)
+++
webservices/axis2/trunk/c/modules/core/transport/http/sender/ssl/ssl_utils.h
Wed May 3 03:43:26 2006
@@ -0,0 +1,46 @@
+/*
+ * 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 AXIS2_SSL_UTILS_H
+#define AXIS2_SSL_UTILS_H
+
+#include <openssl/ssl.h>
+#include <platforms/axis2_platform_auto_sense.h>
+#include <axis2_const.h>
+#include <axis2_defines.h>
+
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+BIO *bio_err = 0;
+
+AXIS2_DECLARE (SSL_CTX *)
+axis2_ssl_utils_initialize_ctx(axis2_env_t **env);
+
+AXIS2_DECLARE (SSL *)
+axis2_ssl_utils_initialize_ssl(axis2_env_t **env, SSL_CTX *ctx,
+ axis2_socket_t socket);
+
+AXIS2_DECLARE (axis2_status_t)
+axis2_ssl_utils_cleanup_ssl(axis2_env_t **env, SSL_CTX *ctx, SSL *ssl);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* AXIS2_SSL_UTILS_H */
Modified: webservices/axis2/trunk/c/modules/util/error.c
URL:
http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/error.c?rev=399246&r1=399245&r2=399246&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/error.c (original)
+++ webservices/axis2/trunk/c/modules/util/error.c Wed May 3 03:43:26 2006
@@ -433,7 +433,8 @@
"Transport protocol is unsupported by axis2";
axis2_error_messages[AXIS2_ERROR_SSL_ENGINE] =
"Error occured in SSL engine";
-
+ axis2_error_messages[AXIS2_ERROR_SSL_NO_CA_FILE] =
+ "Either axis2c cannot find certificates or the env variable is not set";
return AXIS2_SUCCESS;
}