ssl-proxy.c revision 7cb128dc4cae2a03a742f63ba7afee23c78e3af0
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294Timo Sirainen/* Copyright (c) 2002-2015 Dovecot authors, see the included COPYING file */
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen#include "lib.h"
6157a322f2ac1ea1332d9003ecb0b11466aa8fe7Timo Sirainen#include "ssl-proxy.h"
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainenbool ssl_initialized = FALSE;
1098fc409a45e7603701dc94635927a673bee0c1Timo Sirainen
8b681dae1e8fa564649e703ab17398dcfaf896e4Timo Sirainen#ifndef HAVE_SSL
4bbee99b3aef449a9a2a11a5b5cf1ca486915c49Timo Sirainen
c4cfee078c4a185b5ba8f0c55f51275b7e885b2cTimo Sirainen/* no SSL support */
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainenint ssl_proxy_alloc(int fd ATTR_UNUSED, const struct ip_addr *ip ATTR_UNUSED,
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen pool_t set_pool ATTR_UNUSED,
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen const struct login_settings *login_set ATTR_UNUSED,
8c02331f9f569d8b30e74b6bc8550734d65f9daeTimo Sirainen const struct master_service_ssl_settings *ssl_set ATTR_UNUSED,
8c02331f9f569d8b30e74b6bc8550734d65f9daeTimo Sirainen struct ssl_proxy **proxy_r ATTR_UNUSED)
8c02331f9f569d8b30e74b6bc8550734d65f9daeTimo Sirainen{
8c02331f9f569d8b30e74b6bc8550734d65f9daeTimo Sirainen i_error("Dovecot wasn't built with SSL support");
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen return -1;
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen}
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainenint ssl_proxy_client_alloc(int fd ATTR_UNUSED, struct ip_addr *ip ATTR_UNUSED,
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen pool_t set_pool ATTR_UNUSED,
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen const struct login_settings *login_set ATTR_UNUSED,
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen const struct master_service_ssl_settings *ssl_set ATTR_UNUSED,
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen ssl_handshake_callback_t *callback ATTR_UNUSED,
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen void *context ATTR_UNUSED,
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen struct ssl_proxy **proxy_r ATTR_UNUSED)
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen{
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen i_error("Dovecot wasn't built with SSL support");
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen return -1;
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen}
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainenvoid ssl_proxy_start(struct ssl_proxy *proxy ATTR_UNUSED)
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen{
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen}
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainenvoid ssl_proxy_set_client(struct ssl_proxy *proxy ATTR_UNUSED,
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen struct client *client ATTR_UNUSED)
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen{
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen}
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainenbool ssl_proxy_has_valid_client_cert(const struct ssl_proxy *proxy ATTR_UNUSED)
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen{
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen return FALSE;
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen}
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainenbool ssl_proxy_has_broken_client_cert(struct ssl_proxy *proxy ATTR_UNUSED)
5c0034beb9933bca2a8b7d83d11dface1ea3b7faTimo Sirainen{
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen return FALSE;
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen}
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainenint ssl_proxy_cert_match_name(struct ssl_proxy *proxy ATTR_UNUSED,
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen const char *verify_name ATTR_UNUSED)
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen{
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen return -1;
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen}
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainenconst char *ssl_proxy_get_peer_name(struct ssl_proxy *proxy ATTR_UNUSED)
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen{
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen return NULL;
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen}
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainenbool ssl_proxy_is_handshaked(const struct ssl_proxy *proxy ATTR_UNUSED)
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen{
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen return FALSE;
9bf2dc275ec21bff3d468ab1bc4fddc8874f7d1bTimo Sirainen}
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainenconst char *ssl_proxy_get_last_error(const struct ssl_proxy *proxy ATTR_UNUSED)
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen{
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen return NULL;
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen}
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainenconst char *ssl_proxy_get_security_string(struct ssl_proxy *proxy ATTR_UNUSED)
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen{
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen return "";
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen}
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainenconst char *ssl_proxy_get_compression(struct ssl_proxy *proxy ATTR_UNUSED)
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen{
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen return NULL;
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen}
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainenconst char *ssl_proxy_get_cert_error(struct ssl_proxy *proxy ATTR_UNUSED)
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen{
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen return "";
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen}
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainenvoid ssl_proxy_destroy(struct ssl_proxy *proxy ATTR_UNUSED) {}
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainenvoid ssl_proxy_free(struct ssl_proxy **proxy ATTR_UNUSED) {}
008a83e9f680f04f69789fb702232416eab2a86cTimo Sirainen
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainenunsigned int ssl_proxy_get_count(void)
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen{
9d3ccd79130199ffdb19a688027d49bf20a4aaaaTimo Sirainen return 0;
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen}
8d6cb44a0161d88743756733f83c4fb278485987Timo Sirainen
a75d470c9223a75801418fcdda258885c36317e0Timo Sirainenvoid ssl_proxy_init(void) {}
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainenvoid ssl_proxy_deinit(void) {}
be889d9b142fbb5604a922c6955bd7f6ea32f163Timo Sirainen
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen#endif
e015e2f7e7f48874495f9df8b0dd192b7ffcb5ccTimo Sirainen