ssl-proxy.h revision 97db4761382024093f441e4bc78ba8b6a056504d
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen#ifndef SSL_PROXY_H
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen#define SSL_PROXY_H
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen#include "ioloop.h"
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainenstruct ip_addr;
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainenstruct ssl_proxy;
5b62dea2f88165f3f4d87bba9011343f3ff415ffTimo Sirainenstruct login_settings;
b9f564d00b7a115f465ffd6840341c7b8f9bfc8aTimo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainenextern bool ssl_initialized;
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainentypedef int ssl_handshake_callback_t(void *context);
6c073ea23cd0e3760b072727cc18114860c27647Timo Sirainen
1fb81cb0b622cef1690c96bcc6a3e183e0b1e6ffTimo Sirainen/* establish SSL connection with the given fd, returns a new fd which you
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen must use from now on, or -1 if error occurred. Unless -1 is returned,
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen the given fd must be simply forgotten. */
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainenint ssl_proxy_new(int fd, const struct ip_addr *ip,
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen const struct login_settings *set, struct ssl_proxy **proxy_r);
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainenint ssl_proxy_client_new(int fd, struct ip_addr *ip,
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen const struct login_settings *set,
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen ssl_handshake_callback_t *callback, void *context,
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen struct ssl_proxy **proxy_r);
2271d1a3dfc7191e610f039e86b9245bbc5dfb8cTimo Sirainenbool ssl_proxy_has_valid_client_cert(const struct ssl_proxy *proxy) ATTR_PURE;
2271d1a3dfc7191e610f039e86b9245bbc5dfb8cTimo Sirainenbool ssl_proxy_has_broken_client_cert(struct ssl_proxy *proxy);
2271d1a3dfc7191e610f039e86b9245bbc5dfb8cTimo Sirainenconst char *ssl_proxy_get_peer_name(struct ssl_proxy *proxy);
9865d9e7c5713e41db939222ed9c0225a11fb99eTimo Sirainenbool ssl_proxy_is_handshaked(const struct ssl_proxy *proxy) ATTR_PURE;
9865d9e7c5713e41db939222ed9c0225a11fb99eTimo Sirainenconst char *ssl_proxy_get_last_error(const struct ssl_proxy *proxy) ATTR_PURE;
9865d9e7c5713e41db939222ed9c0225a11fb99eTimo Sirainenconst char *ssl_proxy_get_security_string(struct ssl_proxy *proxy);
9865d9e7c5713e41db939222ed9c0225a11fb99eTimo Sirainenvoid ssl_proxy_free(struct ssl_proxy *proxy);
9865d9e7c5713e41db939222ed9c0225a11fb99eTimo Sirainen
9865d9e7c5713e41db939222ed9c0225a11fb99eTimo Sirainen/* Return number of active SSL proxies */
9865d9e7c5713e41db939222ed9c0225a11fb99eTimo Sirainenunsigned int ssl_proxy_get_count(void) ATTR_PURE;
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainenvoid ssl_proxy_init(void);
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainenvoid ssl_proxy_deinit(void);
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen#endif
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen