Browse Source

Adding SChannel support on Windows. No SecureTransport, yet.

Jay Sistar 10 years ago
parent
commit
7d950dd770

+ 3 - 1
Source/Atomic/Web/WebRequest.cpp

@@ -307,8 +307,10 @@ void WebRequest::setup(asio::io_service *service, CURLM *curlm)
     curl_easy_setopt(is_->curl, CURLOPT_ERRORBUFFER, is_->error);
     is_->error[0] = '\0';
 
+#if !(defined WIN32 || APPLE)
     // This line will eventually go away with a CA bundle in place, or other TLS options.
-    curl_easy_setopt(is_->curl, CURLOPT_SSL_VERIFYPEER, 0);
+    curl_easy_setopt(is_->curl, CURLOPT_SSL_VERIFYPEER, 0L);
+#endif
 
     curl_easy_setopt(is_->curl, CURLOPT_URL, is_->url.CString());
 

+ 1 - 1
Source/ThirdParty/libcurl/CMake/OtherTests.cmake

@@ -10,9 +10,9 @@ endmacro(add_header_include)
 
 set(signature_call_conv)
 if(HAVE_WINDOWS_H)
-  add_header_include(HAVE_WINDOWS_H "windows.h")
   add_header_include(HAVE_WINSOCK2_H "winsock2.h")
   add_header_include(HAVE_WINSOCK_H "winsock.h")
+  add_header_include(HAVE_WINDOWS_H "windows.h")
   set(_source_epilogue
       "${_source_epilogue}\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif")
   set(signature_call_conv "PASCAL")

+ 12 - 3
Source/ThirdParty/libcurl/CMakeLists.txt

@@ -104,8 +104,13 @@ option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide al
 mark_as_advanced(CURL_HIDDEN_SYMBOLS)
 
 IF(WIN32)
-  OPTION(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" OFF)
+  OPTION(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON)
   MARK_AS_ADVANCED(CURL_WINDOWS_SSPI)
+
+  if (CURL_WINDOWS_SSPI)
+    add_definitions(-DUSE_WINDOWS_SSPI -DUSE_SCHANNEL)
+    set(SSL_ENABLED 1)
+  endif()
 ENDIF()
 
 option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" ON)
@@ -290,7 +295,11 @@ if(WIN32)
   check_library_exists_concat("winmm"  getch        HAVE_LIBWINMM)
 endif()
 
-option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ON)
+if (WIN32)
+  option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" OFF)
+else()
+  option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ON)
+endif()
 mark_as_advanced(CMAKE_USE_OPENSSL)
 
 set(USE_SSLEAY OFF)
@@ -1395,7 +1404,7 @@ if(CURL_STATICLIB)
   #message(WARNING "Static linking is broken!")
   set_property(
     TARGET libcurl
-    APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS LIBCURL_STATIC=1
+    APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS CURL_STATICLIB=1
   )
   set(ENABLE_STATIC         "yes")
 else()

+ 5 - 0
Source/ToolCore/Net/CurlManager.cpp

@@ -22,6 +22,11 @@ CurlRequest::CurlRequest(Context* context, const String& url, const String& post
     url_ = url;
     postData_ = postData;
 
+#if !(defined WIN32 || APPLE)
+    // This line will eventually go away with a CA bundle in place, or other TLS options.
+    curl_easy_setopt(curl_, CURLOPT_SSL_VERIFYPEER, 0L);
+#endif
+
     curl_easy_setopt(curl_, CURLOPT_URL, url_.CString());
     curl_easy_setopt(curl_, CURLOPT_WRITEFUNCTION, Writer);