ssl-proxy.h revision e95dba8921087afebb8a92c592af3b8ca22ae796
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walter#ifndef SSL_PROXY_H
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walter#define SSL_PROXY_H
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walter
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walter#include "ioloop.h"
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walter
fcd8093c58638dc7c4f9cddfc97f273b94ce2eadStef Walterstruct ip_addr;
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walterstruct ssl_proxy;
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walterextern bool ssl_initialized;
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Waltertypedef int ssl_handshake_callback_t(void *context);
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter/* establish SSL connection with the given fd, returns a new fd which you
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter must use from now on, or -1 if error occurred. Unless -1 is returned,
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter the given fd must be simply forgotten. */
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walterint ssl_proxy_new(int fd, const struct ip_addr *ip, struct ssl_proxy **proxy_r);
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walterint ssl_proxy_client_new(int fd, struct ip_addr *ip,
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walter ssl_handshake_callback_t *callback, void *context,
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walter struct ssl_proxy **proxy_r);
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walterbool ssl_proxy_has_valid_client_cert(const struct ssl_proxy *proxy) ATTR_PURE;
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walterbool ssl_proxy_has_broken_client_cert(struct ssl_proxy *proxy);
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walterconst char *ssl_proxy_get_peer_name(struct ssl_proxy *proxy);
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walterbool ssl_proxy_is_handshaked(const struct ssl_proxy *proxy) ATTR_PURE;
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walterconst char *ssl_proxy_get_last_error(const struct ssl_proxy *proxy) ATTR_PURE;
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walterconst char *ssl_proxy_get_security_string(struct ssl_proxy *proxy);
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Waltervoid ssl_proxy_free(struct ssl_proxy *proxy);
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walter
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walter/* Return number of active SSL proxies */
b699c4d7f85a5404be1d1ee9450331aea869b886Stef Walterunsigned int ssl_proxy_get_count(void) ATTR_PURE;
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Waltervoid ssl_proxy_init(void);
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Waltervoid ssl_proxy_deinit(void);
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter#endif
dff909d473f43a6bd0f0286fa2d279c0ebe945c6Stef Walter