#ifndef IOSTREAM_OPENSSL_H
#define IOSTREAM_OPENSSL_H
#include "iostream-ssl-private.h"
#ifndef HAVE_ASN1_STRING_GET0_DATA
#endif
enum openssl_iostream_sync_type {
};
struct ssl_iostream_context {
int refcount;
int username_nid;
};
struct ssl_iostream {
int refcount;
/* SSL clients: host where we connected to */
char *connected_host;
/* SSL servers: host requested by the client via SNI */
char *sni_host;
char *last_error;
char *log_prefix;
char *plain_stream_errstr;
int plain_stream_errno;
/* copied settings */
int username_nid;
void *handshake_context;
void *sni_context;
};
extern int dovecot_ssl_extdata_index;
const char **error_r);
struct ssl_iostream_context **ctx_r,
const char **error_r);
struct ssl_iostream_context **ctx_r,
const char **error_r);
void openssl_iostream_global_deinit(void);
const char **reason_r);
#define OPENSSL_ALL_PROTOCOL_OPTIONS \
/* opt_r is used with SSL_set_options() and version_r is used with
SSL_set_min_proto_version(). Using either method should enable the same SSL
protocol versions. */
/* Sync plain_input/plain_output streams with BIOs. Returns TRUE if at least
enum openssl_iostream_sync_type type);
/* Call when there's more data available in plain_input/plain_output.
(still handshaking), -1 if error occurred. */
enum openssl_iostream_sync_type type);
0 if the operation should retried later once more data has been
const char *func_name);
const char *openssl_iostream_error(void);
const char *openssl_iostream_key_load_error(void);
const char *
void openssl_iostream_clear_errors(void);
void ssl_iostream_openssl_init(void);
void ssl_iostream_openssl_deinit(void);
#endif