wolfssl: handle builds without SSLv3 support
authorDaniel Stenberg <daniel@haxx.se>
Wed, 16 Dec 2015 09:06:09 +0000 (10:06 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 16 Dec 2015 09:06:09 +0000 (10:06 +0100)
configure.ac
lib/vtls/cyassl.c

index 4c14e382ea69199c1f1f7aa28febf76654c3cb95..3031f05aef3c580de6643cd4f41b3d62d03efcf0 100644 (file)
@@ -2166,11 +2166,11 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
        ]])
       ],[
          AC_MSG_RESULT(yes)
-         AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
+         AC_DEFINE(USE_CYASSL, 1, [if CyaSSL/WolfSSL is enabled])
          AC_SUBST(USE_CYASSL, [1])
          CYASSL_ENABLED=1
          USE_CYASSL="yes"
-         curl_ssl_msg="enabled (CyaSSL)"
+         curl_ssl_msg="enabled (WolfSSL)"
        ],
        [
          AC_MSG_RESULT(no)
@@ -2195,6 +2195,11 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then
 
       LIBS="-l$cyassllibname -lm $LIBS"
 
+      if test "x$cyassllib" = "xwolfssl"; then
+        dnl Recent WolfSSL versions build without SSLv3 by default
+        AC_CHECK_FUNCS(wolfSSLv3_client_method)
+      fi
+
       if test -n "$cyassllib"; then
         dnl when shared libs were found in a path that the run-time
         dnl linker doesn't search through, we need to add it to
index f51b0419210c898fda45413c62df3db8ebd352f3..20629f45d42ff237ddb88d550d2a722fe1c7f1ed 100644 (file)
@@ -143,8 +143,15 @@ cyassl_connect_step1(struct connectdata *conn,
     use_sni(TRUE);
     break;
   case CURL_SSLVERSION_SSLv3:
+    /* before WolfSSL SSLv3 was enabled by default, and starting in WolfSSL
+       we check for its presence since it is built without it by default */
+#if !defined(WOLFSSL_VERSION) || defined(HAVE_WOLFSSLV3_CLIENT_METHOD)
     req_method = SSLv3_client_method();
     use_sni(FALSE);
+#else
+    failf(data, "No support for SSLv3");
+    return CURLE_NOT_BUILT_IN;
+#endif
     break;
   case CURL_SSLVERSION_SSLv2:
     failf(data, "CyaSSL does not support SSLv2");