ssl-proxy-openssl.c revision c0435c854a0e7246373b9752d163095cc4fbe985
/* Copyright (C) 2002 Timo Sirainen */
#include "common.h"
#include "ioloop.h"
#include "network.h"
#include "ssl-proxy.h"
#ifdef HAVE_OPENSSL
enum ssl_state {
};
struct ssl_proxy {
int refcount;
int io_ssl_dir;
unsigned char plainout_buf[1024];
unsigned int plainout_pos, plainout_size;
unsigned char sslout_buf[1024];
unsigned int sslout_pos, sslout_size;
};
{
if (block) {
}
} else {
}
}
}
{
if (block) {
}
} else {
}
}
{
sizeof(proxy->sslout_buf));
if (ret < 0)
else if (ret > 0) {
proxy->sslout_pos = 0;
}
}
{
if (ret < 0)
else {
if (proxy->plainout_size > 0) {
}
} else {
proxy->plainout_pos = 0;
}
}
}
}
static const char *ssl_last_error(void)
{
unsigned long err;
char *buf;
err = ERR_get_error();
if (err == 0)
return buf;
}
{
switch (err) {
case SSL_ERROR_WANT_READ:
break;
case SSL_ERROR_WANT_WRITE:
break;
case SSL_ERROR_SYSCALL:
/* eat up the error queue */
/*i_warning("%s failed: %s", func, ssl_last_error());*/
break;
case SSL_ERROR_ZERO_RETURN:
/* clean connection closing */
break;
case SSL_ERROR_SSL:
/*i_warning("%s failed: %s", func, ssl_last_error());*/
break;
default:
i_warning("%s failed: unknown failure %d (%s)",
break;
}
}
{
int ret;
if (ret != 1) {
} else {
}
}
{
int ret;
sizeof(proxy->plainout_buf));
if (ret <= 0) {
} else {
proxy->plainout_pos = 0;
}
}
{
int ret;
proxy->sslout_size);
if (ret <= 0) {
} else {
if (proxy->sslout_size > 0) {
} else {
proxy->sslout_pos = 0;
}
}
}
{
case SSL_STATE_HANDSHAKE:
break;
case SSL_STATE_READ:
break;
case SSL_STATE_WRITE:
break;
}
}
{
return;
}
int ssl_proxy_new(int fd)
{
int sfd[2];
if (!ssl_initialized)
return -1;
return -1;
}
return -1;
}
i_error("socketpair() failed: %m");
return -1;
}
if (!ssl_proxy_destroy(proxy))
return -1;
main_ref();
return sfd[1];
}
{
return TRUE;
main_unref();
return FALSE;
}
void ssl_proxy_init(void)
{
int ret;
/* SSL support is disabled */
return;
}
i_fatal("SSL_CTX_new() failed");
if (ret != 1) {
i_fatal("Can't load certificate file %s: %s",
certfile, ssl_last_error());
}
if (ret != 1) {
i_fatal("Can't load private key file %s: %s",
keyfile, ssl_last_error());
}
}
void ssl_proxy_deinit(void)
{
if (ssl_initialized)
}
#endif