#ifndef __SSLUTILS_H__
#define __SSLUTILS_H__
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#ifdef HAVE_OPENSSL
+#include "pcap/socket.h" // for PCAP_SOCKET
+// If this is OpenSSL 1.0, at least one header may trigger a -Wdocumentation
+// in Clang, which should not be a problem of this header or a file that
+// includes it.
+#include "diag-control.h"
+DIAG_OFF_DOCUMENTATION
#include <openssl/ssl.h>
#include <openssl/err.h>
-#include "sockutils.h"
+DIAG_ON_DOCUMENTATION
/*
- * Configuration parameters
+ * Utility functions
*/
-extern int uses_ssl;
-extern char ssl_keyfile[PATH_MAX];
-extern char ssl_certfile[PATH_MAX];
-extern char ssl_rootfile[PATH_MAX];
+void ssl_set_certfile(const char *certfile);
+void ssl_set_keyfile(const char *keyfile);
+int ssl_init_once(int is_server, int enable_compression, char *errbuf, size_t errbuflen);
+SSL *ssl_promotion(int is_server, PCAP_SOCKET s, char *errbuf, size_t errbuflen);
+void ssl_finish(SSL *ssl);
+int ssl_send(SSL *, char const *buffer, int size, char *errbuf, size_t errbuflen);
+int ssl_recv(SSL *, char *buffer, int size, char *errbuf, size_t errbuflen);
-/*
- * Utility functions
- */
+// The SSL parameters are used
+#define _U_NOSSL_
+
+#else // HAVE_OPENSSL
+
+// This saves us from a lot of ifdefs:
+#define SSL void const
-void init_ssl_or_die(int is_server);
-SSL *ssl_promotion(int is_server, SOCKET s, char *errbuf, size_t errbuflen);
-int ssl_send(SSL *, char const *buffer, size_t size, char *errbuf, size_t errbuflen);
-int ssl_recv(SSL *, unsigned char *buffer, size_t size, char *errbuf, size_t errbuflen);
+// The SSL parameters are unused
+#define _U_NOSSL_ _U_
#endif // HAVE_OPENSSL