.TH "event2/bufferevent_ssl.h" 3 "Tue Jan 31 2017" "libevent" \" -*- nroff -*- .ad l .nh .SH NAME event2/bufferevent_ssl.h \- OpenSSL support for bufferevents\&. .SH SYNOPSIS .br .PP \fC#include \fP .br \fC#include \fP .br \fC#include \fP .br \fC#include \fP .br .SS "Enumerations" .in +1c .ti -1c .RI "enum \fBbufferevent_ssl_state\fP { \fBBUFFEREVENT_SSL_OPEN\fP = 0, \fBBUFFEREVENT_SSL_CONNECTING\fP = 1, \fBBUFFEREVENT_SSL_ACCEPTING\fP = 2 } .RI "\fIThe state of an SSL object to be used when creating a new SSL bufferevent\&. \fP"" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "EVENT2_EXPORT_SYMBOL unsigned long \fBbufferevent_get_openssl_error\fP (struct \fBbufferevent\fP *bev)" .br .RI "\fIReturn the most recent OpenSSL error reported on an SSL bufferevent\&. \fP" .ti -1c .RI "EVENT2_EXPORT_SYMBOL struct \fBbufferevent\fP * \fBbufferevent_openssl_filter_new\fP (struct \fBevent_base\fP *base, struct \fBbufferevent\fP *underlying, struct ssl_st *ssl, enum \fBbufferevent_ssl_state\fP state, int options)" .br .RI "\fICreate a new SSL bufferevent to send its data over another bufferevent\&. \fP" .ti -1c .RI "EVENT2_EXPORT_SYMBOL int \fBbufferevent_openssl_get_allow_dirty_shutdown\fP (struct \fBbufferevent\fP *bev)" .br .RI "\fIControl how to report dirty SSL shutdowns\&. \fP" .ti -1c .RI "EVENT2_EXPORT_SYMBOL struct ssl_st * \fBbufferevent_openssl_get_ssl\fP (struct \fBbufferevent\fP *bufev)" .br .RI "\fIReturn the underlying openssl SSL * object for an SSL bufferevent\&. \fP" .ti -1c .RI "EVENT2_EXPORT_SYMBOL void \fBbufferevent_openssl_set_allow_dirty_shutdown\fP (struct \fBbufferevent\fP *bev, int allow_dirty_shutdown)" .br .ti -1c .RI "EVENT2_EXPORT_SYMBOL struct \fBbufferevent\fP * \fBbufferevent_openssl_socket_new\fP (struct \fBevent_base\fP *base, \fBevutil_socket_t\fP fd, struct ssl_st *ssl, enum \fBbufferevent_ssl_state\fP state, int options)" .br .RI "\fICreate a new SSL bufferevent to send its data over an SSL * on a socket\&. \fP" .ti -1c .RI "EVENT2_EXPORT_SYMBOL int \fBbufferevent_ssl_renegotiate\fP (struct \fBbufferevent\fP *bev)" .br .RI "\fITells a bufferevent to begin SSL renegotiation\&. \fP" .in -1c .SH "Detailed Description" .PP OpenSSL support for bufferevents\&. .SH "Function Documentation" .PP .SS "EVENT2_EXPORT_SYMBOL unsigned long bufferevent_get_openssl_error (struct \fBbufferevent\fP * bev)" .PP Return the most recent OpenSSL error reported on an SSL bufferevent\&. .SS "EVENT2_EXPORT_SYMBOL struct \fBbufferevent\fP* bufferevent_openssl_filter_new (struct \fBevent_base\fP * base, struct \fBbufferevent\fP * underlying, struct ssl_st * ssl, enum \fBbufferevent_ssl_state\fP state, int options)" .PP Create a new SSL bufferevent to send its data over another bufferevent\&. .PP \fBParameters:\fP .RS 4 \fIbase\fP An \fBevent_base\fP to use to detect reading and writing\&. It must also be the base for the underlying bufferevent\&. .br \fIunderlying\fP A socket to use for this SSL .br \fIssl\fP A SSL* object from openssl\&. .br \fIstate\fP The current state of the SSL connection .br \fIoptions\fP One or more bufferevent_options .RE .PP \fBReturns:\fP .RS 4 A new bufferevent on success, or NULL on failure .RE .PP .SS "EVENT2_EXPORT_SYMBOL int bufferevent_openssl_get_allow_dirty_shutdown (struct \fBbufferevent\fP * bev)" .PP Control how to report dirty SSL shutdowns\&. If the peer (or the network, or an attacker) closes the TCP connection before closing the SSL channel, and the protocol is SSL >= v3, this is a 'dirty' shutdown\&. If allow_dirty_shutdown is 0 (default), this is reported as BEV_EVENT_ERROR\&. .PP If instead allow_dirty_shutdown=1, a dirty shutdown is reported as BEV_EVENT_EOF\&. .PP (Note that if the protocol is < SSLv3, you will always receive BEV_EVENT_EOF, since SSL 2 and earlier cannot distinguish a secure connection close from a dirty one\&. This is one reason (among many) not to use SSL 2\&.) .SS "EVENT2_EXPORT_SYMBOL struct ssl_st* bufferevent_openssl_get_ssl (struct \fBbufferevent\fP * bufev)" .PP Return the underlying openssl SSL * object for an SSL bufferevent\&. .SS "EVENT2_EXPORT_SYMBOL struct \fBbufferevent\fP* bufferevent_openssl_socket_new (struct \fBevent_base\fP * base, \fBevutil_socket_t\fP fd, struct ssl_st * ssl, enum \fBbufferevent_ssl_state\fP state, int options)" .PP Create a new SSL bufferevent to send its data over an SSL * on a socket\&. .PP \fBParameters:\fP .RS 4 \fIbase\fP An \fBevent_base\fP to use to detect reading and writing .br \fIfd\fP A socket to use for this SSL .br \fIssl\fP A SSL* object from openssl\&. .br \fIstate\fP The current state of the SSL connection .br \fIoptions\fP One or more bufferevent_options .RE .PP \fBReturns:\fP .RS 4 A new bufferevent on success, or NULL on failure\&. .RE .PP .SS "EVENT2_EXPORT_SYMBOL int bufferevent_ssl_renegotiate (struct \fBbufferevent\fP * bev)" .PP Tells a bufferevent to begin SSL renegotiation\&. .SH "Author" .PP Generated automatically by Doxygen for libevent from the source code\&.