diff options
| author | Sam Varshavchik | 2013-08-19 16:39:41 -0400 |
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:51 -0400 |
| commit | 9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch) | |
| tree | 7a81a04cb51efb078ee350859a64be2ebc6b8813 /libmail/fdtls.C | |
| parent | a9520698b770168d1f33d6301463bb70a19655ec (diff) | |
| download | courier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2 | |
Initial checkin
Imported from subversion report, converted to git. Updated all paths in
scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'libmail/fdtls.C')
| -rw-r--r-- | libmail/fdtls.C | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/libmail/fdtls.C b/libmail/fdtls.C new file mode 100644 index 0000000..d478131 --- /dev/null +++ b/libmail/fdtls.C @@ -0,0 +1,95 @@ +/* +** Copyright 2002-2008, Double Precision Inc. +** +** See COPYING for distribution information. +*/ +#include "libmail_config.h" +#include "fdtls.H" +#include <cstdlib> + +#if HAVE_LIBCOURIERTLS + +// libcouriertls.a callback - get a config setting + +const char *mail::fdTLS::get_tls_config_var(const char *varname, void *vp) +{ + return ((mail::fdTLS *)vp)->get_tls_config_var(varname); +} + +// libcouriertls.a callback - report a tls error msg + +void mail::fdTLS::get_tls_err_msg(const char *errmsg, void *vp) +{ + ((mail::fdTLS *)vp)->get_tls_err_msg(errmsg); +} + +// libcouriertls.a callback - retrieve SSL/TLS certificate + +int mail::fdTLS::get_tls_client_certs(size_t i, + const char **cert_array_ret, + size_t *cert_array_size_ret, + void *vp) +{ + return ((mail::fdTLS *)vp)->get_tls_client_certs(i, cert_array_ret, + cert_array_size_ret); +} + +// libcouriertls.a callback - release all SSL/TLS certificates + +void mail::fdTLS::free_tls_client_certs(void *vp) +{ + ((mail::fdTLS *)vp)->free_tls_client_certs(); +} + + +// Get a config setting, for now, use getenv. + +const char *mail::fdTLS::get_tls_config_var(const char *varname) +{ + if (strcmp(varname, "TLS_PROTOCOL") == 0 && tlsflag) + varname="TLS_STARTTLS_PROTOCOL"; + + if (strcmp(varname, "TLS_VERIFYPEER") == 0) + { + if (domain.size() == 0) + return "NONE"; + } + + return getenv(varname); +} + +int mail::fdTLS::get_tls_client_certs(size_t i, + const char **cert_array_ret, + size_t *cert_array_size_ret) +{ + if (i < certs.size()) + { + *cert_array_ret=certs[i].c_str(); + *cert_array_size_ret=certs[i].size(); + return 1; + } + + return 0; +} + +void mail::fdTLS::free_tls_client_certs() +{ +} + +// libcouriertls.a callback - report a tls error msg + +void mail::fdTLS::get_tls_err_msg(const char *errmsgArg) +{ + errmsg=errmsgArg; +} +#else + +mail::fdTLS::fdTLS() +{ +} + +mail::fdTLS::~fdTLS() +{ +} + +#endif |
