/* Copyright (c) 2009-2018 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "module-dir.h"
#include "iostream-ssl-private.h"
};
#ifdef HAVE_SSL
#endif
#ifdef HAVE_SSL
static void ssl_module_unload(void)
{
}
#endif
{
ssl_vfuncs = vfuncs;
}
{
#ifdef HAVE_SSL
return -1;
if (!ssl_module_loaded) {
"%s didn't call iostream_ssl_module_init() - SSL not initialized",
return -1;
}
/* Destroy SSL module after (most of) the others. Especially lib-fs
backends may still want to access SSL module in their own
atexit-callbacks. */
return 0;
#else
*error_r = "SSL support not compiled in";
return -1;
#endif
}
const char **error_r)
{
}
struct ssl_iostream_context **ctx_r,
const char **error_r)
{
/* ensure this is set to TRUE */
if (!ssl_module_loaded) {
if (ssl_module_load(error_r) < 0)
return -1;
}
return -1;
}
struct ssl_iostream_context **ctx_r,
const char **error_r)
{
if (!ssl_module_loaded) {
if (ssl_module_load(error_r) < 0)
return -1;
}
return -1;
}
{
}
{
}
const struct ssl_iostream_settings *set,
struct ssl_iostream **iostream_r,
const char **error_r)
{
}
const struct ssl_iostream_settings *set,
struct ssl_iostream **iostream_r,
const char **error_r)
{
}
{
}
{
return;
}
const char *prefix)
{
}
{
}
void *context)
{
}
void *context)
{
}
struct ssl_iostream_context *ctx)
{
}
{
}
{
}
{
}
{
}
const char **reason_r)
{
}
{
const char *reason;
if (!ssl_iostream_has_valid_client_cert(ssl_io)) {
*error_r = "SSL certificate not received";
else {
*error_r = "Received invalid SSL certificate";
}
return -1;
"SSL certificate doesn't match expected host name %s: %s",
return -1;
}
return 0;
}
{
}
{
}
{
}
{
}
{
}
const struct ssl_iostream_settings *old_set)
{
return new_set;
}
struct ssl_iostream_settings *dest,
const struct ssl_iostream_settings *src)
{
unsigned int i;
for (i = 0; i < N_ELEMENTS(ssl_iostream_settings_string_offsets); i++) {
}
}
const struct ssl_iostream_settings *set2)
{
unsigned int i;
set1_nonstr = *set1;
set2_nonstr = *set2;
for (i = 0; i < N_ELEMENTS(ssl_iostream_settings_string_offsets); i++) {
return FALSE;
/* clear away the string pointer from the settings struct */
}
/* The set*_nonstr no longer have any pointers, so we can compare them
directly. */
}
{
}
unsigned int *bits_r)
{
}
{
}
{
}