Enlightenment CVS committal
Author : tsauerbeck
Project : e17
Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_con
Modified Files:
.cvsignore Makefile.am ecore_con.c ecore_con_private.h
Added Files:
Ecore_Con.h.in
Removed Files:
Ecore_Con.h
Log Message:
Added basic ssl-client support to Ecore_Con
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_con/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- .cvsignore 13 Nov 2003 12:30:47 -0000 1.1
+++ .cvsignore 31 Mar 2004 16:47:45 -0000 1.2
@@ -1,5 +1,6 @@
.deps
.libs
+Ecore_Con.h
Makefile
Makefile.in
ecore_con.lo
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_con/Makefile.am,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- Makefile.am 23 Sep 2003 08:09:30 -0000 1.2
+++ Makefile.am 31 Mar 2004 16:47:45 -0000 1.3
@@ -1,7 +1,7 @@
## Process this file with automake to produce Makefile.in
INCLUDES = \
--I$(top_srcdir)/src/lib/ecore
+-I$(top_srcdir)/src/lib/ecore @SSL_CFLAGS@
libecore_con_la_LDFLAGS = -version-info 1:0:0 \
-L$(top_builddir)/src/lib/ecore/.libs
@@ -17,7 +17,7 @@
ecore_con_private.h
libecore_con_la_LIBADD = \
-$(top_builddir)/src/lib/ecore/libecore.la
+$(top_builddir)/src/lib/ecore/libecore.la @SSL_LIBS@
libecore_con_la_DEPENDENCIES = \
$(top_builddir)/src/lib/ecore/libecore.la
@@ -25,6 +25,6 @@
endif
EXTRA_DIST = \
-Ecore_Con.h \
+Ecore_Con.h.in \
ecore_con.c \
ecore_con_private.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_con/ecore_con.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- ecore_con.c 28 Mar 2004 04:25:52 -0000 1.11
+++ ecore_con.c 31 Mar 2004 16:47:45 -0000 1.12
@@ -1,4 +1,5 @@
#include "Ecore.h"
+#include "config.h"
#include "ecore_private.h"
#include "ecore_con_private.h"
#include "Ecore_Con.h"
@@ -15,6 +16,10 @@
#include <fcntl.h>
#include <netdb.h>
+#if USE_OPENSSL
+#include <time.h>
+#endif
+
static void _ecore_con_server_free(Ecore_Con_Server *svr);
static void _ecore_con_client_free(Ecore_Con_Client *cl);
static int _ecore_con_svr_handler(void *data, Ecore_Fd_Handler *fd_handler);
@@ -58,6 +63,11 @@
ECORE_CON_EVENT_SERVER_DEL = ecore_event_type_new();
ECORE_CON_EVENT_CLIENT_DATA = ecore_event_type_new();
ECORE_CON_EVENT_SERVER_DATA = ecore_event_type_new();
+
+#if USE_OPENSSL
+ SSL_library_init();
+ SSL_load_error_strings();
+#endif
}
return init_count;
}
@@ -257,12 +267,13 @@
* FIXME: To be fixed.
*/
Ecore_Con_Server *
-ecore_con_server_connect(Ecore_Con_Type type,
+ecore_con_server_connect(Ecore_Con_Type compl_type,
char *name,
int port,
const void *data)
{
Ecore_Con_Server *svr;
+ Ecore_Con_Type type = compl_type & ~ECORE_CON_USE_SSL;
struct sockaddr_un socket_unix;
struct sockaddr_in socket_addr;
int curstate = 0;
@@ -353,9 +364,22 @@
ECORE_FD_READ,
_ecore_con_cl_handler, svr,
NULL, NULL);
+
if (!svr->fd_handler) goto error;
}
-
+
+#if USE_OPENSSL
+ if (compl_type & ECORE_CON_USE_SSL)
+ {
+ if (!(svr->ssl_ctx = SSL_CTX_new(SSLv3_client_method())))
+ goto error;
+ if (!(svr->ssl = SSL_new(svr->ssl_ctx)))
+ goto error;
+
+ SSL_set_fd(svr->ssl, svr->fd);
+ }
+#endif
+
svr->name = strdup(name);
if (!svr->name) goto error;
svr->type = type;
@@ -371,6 +395,10 @@
if (svr->path) free(svr->path);
if (svr->fd >= 0) close(svr->fd);
if (svr->fd_handler) ecore_main_fd_handler_del(svr->fd_handler);
+#if USE_OPENSSL
+ if (svr->ssl_ctx) SSL_CTX_free(svr->ssl_ctx);
+ if (svr->ssl) SSL_free(svr->ssl);
+#endif
free(svr);
return NULL;
}
@@ -592,6 +620,11 @@
_ecore_con_client_free((Ecore_Con_Client *)svr->clients);
if ((svr->created) && (svr->path)) unlink(svr->path);
if (svr->fd >= 0) close(svr->fd);
+#if USE_OPENSSL
+ if (svr->ssl) SSL_set_shutdown(svr->ssl, SSL_SENT_SHUTDOWN |
SSL_RECEIVED_SHUTDOWN);
+ if (svr->ssl) SSL_free(svr->ssl);
+ if (svr->ssl_ctx) SSL_CTX_free(svr->ssl_ctx);
+#endif
if (svr->name) free(svr->name);
if (svr->path) free(svr->path);
if (svr->fd_handler) ecore_main_fd_handler_del(svr->fd_handler);
@@ -674,8 +707,14 @@
{
char buf[65536];
int num;
-
- num = read(svr->fd, buf, 65536);
+#if USE_OPENSSL
+ if (!svr->ssl)
+#endif
+ num = read(svr->fd, buf, 65536);
+#ifdef USE_OPENSSL
+ else
+ num = SSL_read(svr->ssl, buf, 65536);
+#endif
if (num < 1)
{
if (inbuf)
@@ -726,7 +765,15 @@
{
int so_err;
int size;
-
+
+#if USE_OPENSSL
+ struct timespec t = {0, 250000000L};
+
+ if (svr->ssl)
+ while (SSL_connect(svr->ssl) == -1)
+ nanosleep(&t, NULL);
+#endif
+
svr->connecting = 0;
so_err = 0;
size = sizeof(int);
@@ -847,7 +894,16 @@
if (!svr->buf) return;
num = svr->buf_size - svr->buf_offset;
- count = write(svr->fd, svr->buf + svr->buf_offset, num);
+
+#if USE_OPENSSL
+ if (!svr->ssl)
+#endif
+ count = write(svr->fd, svr->buf + svr->buf_offset, num);
+#if USE_OPENSSL
+ else
+ count = SSL_write(svr->ssl, svr->buf + svr->buf_offset, num);
+#endif
+
if (count < 1)
{
if ((errno == EIO) || (errno == EBADF) || (errno == EPIPE) ||
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_con/ecore_con_private.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- ecore_con_private.h 23 Sep 2003 08:09:30 -0000 1.2
+++ ecore_con_private.h 31 Mar 2004 16:47:45 -0000 1.3
@@ -4,14 +4,21 @@
#define ECORE_MAGIC_CON_SERVER 0x77665544
#define ECORE_MAGIC_CON_CLIENT 0x77556677
+#if USE_OPENSSL
+#include <openssl/ssl.h>
+#endif
+
typedef struct _Ecore_Con_Client Ecore_Con_Client;
typedef struct _Ecore_Con_Server Ecore_Con_Server;
typedef enum _Ecore_Con_Type
{
ECORE_CON_LOCAL_USER,
- ECORE_CON_LOCAL_SYSTEM,
- ECORE_CON_REMOTE_SYSTEM,
+ ECORE_CON_LOCAL_SYSTEM,
+ ECORE_CON_REMOTE_SYSTEM
+#if USE_OPENSSL
+ ,ECORE_CON_USE_SSL = 16
+#endif
} Ecore_Con_Type;
struct _Ecore_Con_Client
@@ -46,6 +53,10 @@
char dead : 1;
char created : 1;
char connecting : 1;
+#if USE_OPENSSL
+ SSL_CTX *ssl_ctx;
+ SSL *ssl;
+#endif
};
#endif
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs