summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt4
-rw-r--r--config.h.in1
-rw-r--r--src/uscxml/server/HTTPServer.cpp6
-rw-r--r--src/uscxml/server/HTTPServer.h2
4 files changed, 9 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 797244d..597d12f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -590,8 +590,12 @@ endif()
find_package(OpenSSL)
if (OPENSSL_FOUND)
+ set(OPENSSL_HAS_ELIPTIC_CURVES OFF)
include_directories(${OPENSSL_INCLUDE_DIR})
list (APPEND USCXML_OPT_LIBS ${OPENSSL_LIBRARIES})
+ if (EXISTS ${OPENSSL_INCLUDE_DIR}/openssl/ec.h)
+ set(OPENSSL_HAS_ELIPTIC_CURVES ON)
+ endif()
endif()
if (EVENT_SSL_FOUND AND OPENSSL_FOUND)
diff --git a/config.h.in b/config.h.in
index 2498d12..666a005 100644
--- a/config.h.in
+++ b/config.h.in
@@ -67,6 +67,7 @@
#cmakedefine CORELOCATION_FOUND
#cmakedefine LIBPURPLE_FOUND
#cmakedefine OPENSSL_FOUND
+#cmakedefine OPENSSL_HAS_ELIPTIC_CURVES
#cmakedefine EVENT_SSL_FOUND
/** Header files we found */
diff --git a/src/uscxml/server/HTTPServer.cpp b/src/uscxml/server/HTTPServer.cpp
index ce403ee..ef7fb83 100644
--- a/src/uscxml/server/HTTPServer.cpp
+++ b/src/uscxml/server/HTTPServer.cpp
@@ -50,7 +50,7 @@ extern "C" {
//#include <arpa/inet.h>
#endif
-#if (defined EVENT_SSL_FOUND && defined OPENSSL_FOUND)
+#if (defined EVENT_SSL_FOUND && defined OPENSSL_FOUND && defined OPENSSL_HAS_ELIPTIC_CURVES)
#include <openssl/ssl.h>
#include <openssl/bio.h>
#include <openssl/err.h>
@@ -92,7 +92,7 @@ HTTPServer::HTTPServer(unsigned short port, SSLConfig* sslConf) {
}
determineAddress();
-#if (defined EVENT_SSL_FOUND && defined OPENSSL_FOUND)
+#if (defined EVENT_SSL_FOUND && defined OPENSSL_FOUND && defined OPENSSL_HAS_ELIPTIC_CURVES)
if (!sslConf) {
_https = NULL;
_sslHandle = NULL;
@@ -165,7 +165,7 @@ HTTPServer* HTTPServer::getInstance(unsigned short port, SSLConfig* sslConf) {
return _instance;
}
-#if (defined EVENT_SSL_FOUND && defined OPENSSL_FOUND)
+#if (defined EVENT_SSL_FOUND && defined OPENSSL_FOUND && defined OPENSSL_HAS_ELIPTIC_CURVES)
// see https://github.com/ppelleti/https-example/blob/master/https-server.c
struct bufferevent* HTTPServer::sslBufferEventCallback(struct event_base *base, void *arg) {
struct bufferevent* r;
diff --git a/src/uscxml/server/HTTPServer.h b/src/uscxml/server/HTTPServer.h
index 581181c..d5191da 100644
--- a/src/uscxml/server/HTTPServer.h
+++ b/src/uscxml/server/HTTPServer.h
@@ -125,7 +125,7 @@ private:
friend class HTTPServlet;
-#if (defined EVENT_SSL_FOUND && defined OPENSSL_FOUND)
+#if (defined EVENT_SSL_FOUND && defined OPENSSL_FOUND && defined OPENSSL_HAS_ELIPTIC_CURVES)
struct evhttp* _https;
struct evhttp_bound_socket* _sslHandle;
unsigned short _sslPort;