@@ -64,6 +64,7 @@ option(WITH_THREADS "Search for a threading library to build with multithreading
6464option (PREFER_WIN32THREADS "When searching for a threading library, prefer win32 threads if they are found" OFF )
6565option (WITH_GNUTLS "Search for the GnuTLS secure communications library to support TLS" ON )
6666option (WITH_OPENSSL "Search for the OpenSSL cryptography library to support TLS and use as crypto backend" ON )
67+ option (WITH_WOLFSSL "Search for the wolfSSL cryptography library to support TLS and use as crypto backend" OFF )
6768option (WITH_SYSTEMD "Search for libsystemd to build with systemd socket activation support" ON )
6869option (WITH_GCRYPT "Search for Libgcrypt to use as crypto backend" ON )
6970option (WITH_FFMPEG "Search for FFMPEG to build an example VNC to MPEG encoder" ON )
@@ -182,6 +183,14 @@ if(WITH_OPENSSL)
182183 find_package (OpenSSL )
183184endif (WITH_OPENSSL )
184185
186+ if (WITH_WOLFSSL)
187+ find_package (PkgConfig )
188+ pkg_check_modules (WOLFSSL "wolfssl" )
189+ if (WOLFSSL_FOUND)
190+ link_directories (${WOLFSSL_LIBRARY_DIRS} )
191+ endif (WOLFSSL_FOUND )
192+ endif (WITH_WOLFSSL )
193+
185194
186195if (WITH_SYSTEMD AND NOT ANDROID AND NOT WIN32 )
187196 find_package (PkgConfig )
@@ -275,6 +284,9 @@ endif(PNG_FOUND)
275284if (NOT OPENSSL_FOUND)
276285 unset (OPENSSL_LIBRARIES) # would otherwise contain -NOTFOUND, confusing target_link_libraries()
277286endif ()
287+ if (NOT WOLFSSL_FOUND)
288+ unset (WOLFSSL_LIBRARIES) # would otherwise contain -NOTFOUND, confusing target_link_libraries()
289+ endif ()
278290if (SYSTEMD_FOUND)
279291 add_definitions (-DLIBVNCSERVER_WITH_SYSTEMD )
280292 include_directories (${SYSTEMD_INCLUDE_DIRS} )
@@ -290,6 +302,10 @@ elseif(OPENSSL_FOUND)
290302 message (STATUS "Building crypto with OpenSSL" )
291303 set (CRYPTO_LIBRARIES ${OPENSSL_LIBRARIES} )
292304 set (CRYPTO_SOURCES ${COMMON_DIR} /crypto_openssl.c)
305+ elseif (WOLFSSL_FOUND)
306+ message (STATUS "Building crypto with wolfSSL" )
307+ set (CRYPTO_LIBRARIES ${WOLFSSL_LIBRARIES} )
308+ set (CRYPTO_SOURCES ${COMMON_DIR} /crypto_openssl.c)
293309else ()
294310 message (STATUS "Building crypto with builtin functions, only including SHA1 and D3DES" )
295311 set (CRYPTO_SOURCES ${COMMON_DIR} /crypto_included.c ${COMMON_DIR} /sha1.c ${COMMON_DIR} /d3des.c)
@@ -312,6 +328,13 @@ if(OPENSSL_FOUND)
312328 set (LIBVNCSERVER_HAVE_LIBSSL 1)
313329endif (OPENSSL_FOUND )
314330
331+ if (WOLFSSL_FOUND)
332+ include_directories ("${WOLFSSL_INCLUDE_DIRS} " "${WOLFSSL_INCLUDEDIR} /wolfssl" )
333+ set (LIBVNCSERVER_HAVE_LIBWOLFSSL 1)
334+ set (LIBVNCSERVER_HAVE_LIBSSL 1)
335+ add_definitions (-DEXTERNAL_OPTS_OPENVPN -DOPENSSL_VERSION_NUMBER=0x10001040L )
336+ endif (WOLFSSL_FOUND )
337+
315338if (WITH_IPv6)
316339 if (WIN32 AND LIBVNCSERVER_HAVE_WS2TCPIP_H AND LIBVNCSERVER_HAVE_VPRINTF)
317340 set (LIBVNCSERVER_IPv6 1)
@@ -448,6 +471,17 @@ elseif(OPENSSL_FOUND)
448471 ${LIBVNCSERVER_DIR} /rfbssl_openssl.c
449472 )
450473 include_directories (${OPENSSL_INCLUDE_DIR} )
474+ elseif (WOLFSSL_FOUND)
475+ message (STATUS "Building TLS with wolfSSL" )
476+ set (LIBVNCCLIENT_SOURCES
477+ ${LIBVNCCLIENT_SOURCES}
478+ ${LIBVNCCLIENT_DIR} /tls_openssl.c
479+ )
480+ set (LIBVNCSERVER_SOURCES
481+ ${LIBVNCSERVER_SOURCES}
482+ ${LIBVNCSERVER_DIR} /rfbssl_openssl.c
483+ )
484+ include_directories ("${WOLFSSL_INCLUDE_DIRS} " "${WOLFSSL_INCLUDEDIR} /wolfssl" )
451485else ()
452486 message (STATUS "Building without TLS" )
453487 set (LIBVNCCLIENT_SOURCES
@@ -548,6 +582,7 @@ target_link_libraries(vncclient
548582 ${CRYPTO_LIBRARIES}
549583 ${GNUTLS_LIBRARIES}
550584 ${OPENSSL_LIBRARIES}
585+ ${WOLFSSL_LIBRARIES}
551586)
552587target_link_libraries (vncserver
553588 ${ADDITIONAL_LIBS}
@@ -558,6 +593,7 @@ target_link_libraries(vncserver
558593 ${CRYPTO_LIBRARIES}
559594 ${GNUTLS_LIBRARIES}
560595 ${OPENSSL_LIBRARIES}
596+ ${WOLFSSL_LIBRARIES}
561597)
562598
563599SET_TARGET_PROPERTIES (vncclient vncserver
0 commit comments