o pop3: Added support for sasl digest-md5 authentication
o pop3: Added support for apop authentication
o sspi: Added support for Schannel SSL/TLS encryption
- o sspi: Changed curl version information output
This release includes the following bugfixes:
AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
AC_SUBST(USE_WINDOWS_SSPI, [1])
curl_sspi_msg="enabled"
- LIBS="$LIBS -lversion"
else
AC_MSG_RESULT(no)
AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
FOOTNOTES
=========
- *1 = requires OpenSSL, GnuTLS, NSS, yassl, axTLS, PolarSSL or Windows SSPI
+ *1 = requires OpenSSL, GnuTLS, NSS, yassl, axTLS, PolarSSL or schannel
*2 = requires OpenLDAP
*3 = requires a GSSAPI-compliant library, such as Heimdal or similar.
*4 = requires FBopenssl
endif
ifdef SSPI
CFLAGS += -DUSE_WINDOWS_SSPI
- DLL_LIBS += -lversion
ifdef SCHANNEL
CFLAGS += -DUSE_SCHANNEL
endif
\r
!IFDEF WINDOWS_SSPI\r
CFLAGS = $(CFLAGS) /DUSE_WINDOWS_SSPI /I$(WINDOWS_SDK_PATH)\include\r
-WINLIBS = $(WINLIBS) version.lib\r
!ENDIF\r
\r
!IFDEF USE_IPV6\r
#include "setup.h"
-#ifdef USE_WINDOWS_SSPI
#ifdef USE_SCHANNEL
+#ifndef USE_WINDOWS_SSPI
+# error "Can't compile SCHANNEL support without SSPI."
+#endif
+
#include "curl_sspi.h"
#include "curl_schannel.h"
#include "sslgen.h"
size_t Curl_schannel_version(char *buffer, size_t size)
{
- int sspi_major = 0, sspi_minor = 0, sspi_build = 0;
-
- if(!Curl_sspi_version(&sspi_major, &sspi_minor, &sspi_build, NULL))
- size = snprintf(buffer, size, "WinSSPI/%d.%d.%d", sspi_major, sspi_minor,
- sspi_build);
- else
- size = snprintf(buffer, size, "WinSSPI/unknown");
+ size = snprintf(buffer, size, "schannel");
return size;
}
#endif /* USE_SCHANNEL */
-#endif /* USE_WINDOWS_SSPI */
-#ifndef HEADER_SCHANNEL_H
-#define HEADER_SCHANNEL_H
+#ifndef HEADER_CURL_SCHANNEL_H
+#define HEADER_CURL_SCHANNEL_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* \___|\___/|_| \_\_____|
*
* Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
+ * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
***************************************************************************/
#include "setup.h"
-#ifdef USE_WINDOWS_SSPI
#ifdef USE_SCHANNEL
#include "urldata.h"
#define curlssl_data_pending Curl_schannel_data_pending
#endif /* USE_SCHANNEL */
-#endif /* USE_WINDOWS_SSPI */
-#endif /* HEADER_SCHANNEL_H */
+#endif /* HEADER_CURL_SCHANNEL_H */
}
}
-/*
- * Curl_sspi_version()
- *
- * This function returns the SSPI library version information.
- */
-CURLcode Curl_sspi_version(int *major, int *minor, int *build, int *special)
-{
- CURLcode result = CURLE_OK;
- VS_FIXEDFILEINFO *version_info = NULL;
- LPTSTR path = NULL;
- LPVOID data = NULL;
- DWORD size, handle;
- UINT length;
-
- if(!s_hSecDll)
- return CURLE_FAILED_INIT;
-
- path = (char *) malloc(MAX_PATH);
- if(!path)
- return CURLE_OUT_OF_MEMORY;
-
- if(GetModuleFileName(s_hSecDll, path, MAX_PATH)) {
- size = GetFileVersionInfoSize(path, &handle);
- if(size) {
- data = malloc(size);
- if(data) {
- if(GetFileVersionInfo(path, handle, size, data)) {
- if(!VerQueryValue(data, "\\", (LPVOID*) &version_info, &length))
- result = CURLE_OUT_OF_MEMORY;
- }
- else
- result = CURLE_OUT_OF_MEMORY;
- }
- else
- result = CURLE_OUT_OF_MEMORY;
- }
- else
- result = CURLE_OUT_OF_MEMORY;
- }
- else
- result = CURLE_OUT_OF_MEMORY;
-
- /* Set the out parameters */
- if(!result) {
- if(major)
- *major = (version_info->dwProductVersionMS >> 16) & 0xffff;
-
- if(minor)
- *minor = (version_info->dwProductVersionMS >> 0) & 0xffff;
-
- if(build)
- *build = (version_info->dwProductVersionLS >> 16) & 0xffff;
-
- if(special)
- *special = (version_info->dwProductVersionLS >> 0) & 0xffff;
- }
-
- Curl_safefree(data);
- Curl_safefree(path);
-
- return result;
-}
-
#endif /* USE_WINDOWS_SSPI */
CURLcode Curl_sspi_global_init(void);
void Curl_sspi_global_cleanup(void);
-CURLcode Curl_sspi_version(int *major, int *minor, int *build, int *special);
/* Forward-declaration of global variables defined in curl_sspi.c */
char *ptr = version;
size_t len;
size_t left = sizeof(version);
-#ifdef USE_WINDOWS_SSPI
-#ifndef USE_SCHANNEL
- int sspi_major = 0, sspi_minor = 0, sspi_build = 0;
-#endif
-#endif
strcpy(ptr, LIBCURL_NAME "/" LIBCURL_VERSION);
len = strlen(ptr);
}
}
-#ifdef USE_WINDOWS_SSPI
-#ifndef USE_SCHANNEL
- if(CURLE_OK == Curl_sspi_version(&sspi_major, &sspi_minor, &sspi_build,
- NULL))
- len = snprintf(ptr, left, " WinSSPI/%d.%d.%d", sspi_major, sspi_minor,
- sspi_build);
- else
- len = snprintf(ptr, left, " WinSSPI/unknown");
-
- left -= len;
- ptr += len;
-#endif
-#endif
#ifdef HAVE_LIBZ
len = snprintf(ptr, left, " zlib/%s", zlibVersion());
left -= len;
endif
ifdef SSPI
CFLAGS += -DUSE_WINDOWS_SSPI
- curl_LDADD += -lversion
ifdef SCHANNEL
CFLAGS += -DUSE_SCHANNEL
endif
SSL_IMP_LFLAGS = /LIBPATH:"$(OPENSSL_PATH)/out32dll"\r
SSL_LIBS = libeay32.lib ssleay32.lib gdi32.lib user32.lib advapi32.lib\r
\r
-WINLIBS = ws2_32.lib wldap32.lib\r
-\r
# Runtime library configuration\r
RTLIB = /MD\r
RTLIBD = /MDd\r
CFLAGS = $(CFLAGS) /DCURL_STATICLIB\r
LINKLIBS = $(LIBCURL_STA_LIB_REL)\r
LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG)\r
-!IFDEF WINDOWS_SSPI\r
-WINLIBS = $(WINLIBS) version.lib\r
-!ENDIF\r
\r
#################################################\r
# release dynamic library\r
LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_LIBS)\r
LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_LIBS)\r
LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)\r
-!IFDEF WINDOWS_SSPI\r
-WINLIBS = $(WINLIBS) version.lib\r
-!ENDIF\r
!ENDIF\r
\r
#################################################\r
LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
LFLAGS = $(LFLAGS) $(SSL_LFLAGS)\r
-!IFDEF WINDOWS_SSPI\r
-WINLIBS = $(WINLIBS) version.lib\r
-!ENDIF\r
!ENDIF\r
\r
#################################################\r
LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_LIBS)\r
LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_LIBS)\r
LFLAGS = $(LFLAGS) $(SSL_LFLAGS) $(ZLIB_LFLAGS)\r
-!IFDEF WINDOWS_SSPI\r
-WINLIBS = $(WINLIBS) version.lib\r
-!ENDIF\r
!ENDIF\r
\r
#################################################\r
LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS)\r
LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS)\r
LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS)\r
-!IFDEF WINDOWS_SSPI\r
-WINLIBS = $(WINLIBS) version.lib\r
-!ENDIF\r
!ENDIF\r
\r
#################################################\r
LINKLIBS = $(LIBCURL_STA_LIB_REL) $(ZLIB_IMP_LIBS)\r
LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(ZLIB_IMP_LIBS)\r
LFLAGS = $(LFLAGS) $(ZLIB_LFLAGS)\r
-!IFDEF WINDOWS_SSPI\r
-WINLIBS = $(WINLIBS) version.lib\r
-!ENDIF\r
!ENDIF\r
\r
#################################################\r
LINKLIBS = $(LIBCURL_STA_LIB_REL) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
LINKLIBS_DEBUG = $(LIBCURL_STA_LIB_DBG) $(SSL_LIBS) $(ZLIB_IMP_LIBS)\r
LFLAGS = $(LFLAGS) $(SSL_IMP_LFLAGS) $(ZLIB_LFLAGS)\r
-!IFDEF WINDOWS_SSPI\r
-WINLIBS = $(WINLIBS) version.lib\r
-!ENDIF\r
!ENDIF\r
\r
#################################################\r
!ENDIF\r
\r
\r
-LINKLIBS = $(LINKLIBS) $(WINLIBS)\r
-LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) $(WINLIBS)\r
+LINKLIBS = $(LINKLIBS) ws2_32.lib wldap32.lib\r
+LINKLIBS_DEBUG = $(LINKLIBS_DEBUG) ws2_32.lib wldap32.lib\r
\r
all : release\r
\r
!ENDIF
+!IFNDEF USE_SSL
+CFLAGS_SSPI = /DUSE_SCHANNEL
+USE_SCHANNEL = true
+USE_SSPI = yes
+!ENDIF
+
!IFNDEF USE_SSPI
USE_SSPI = yes
!ENDIF
!IF "$(USE_SSPI)"=="yes"
-CFLAGS_SSPI = /DUSE_WINDOWS_SSPI
-LFLAGS_SSPI = version.lib
+CFLAGS_SSPI = $(CFLAGS_SSPI) /DUSE_WINDOWS_SSPI
USE_SSPI = true
-!IFNDEF USE_SSL
-CFLAGS_SSPI = $(CFLAGS_SSPI) /DUSE_SCHANNEL
-!ENDIF
!ENDIF
!IF "$(USE_SSPI)"=="true"
CFLAGS = $(CFLAGS) $(CFLAGS_SSPI)
-LFLAGS = $(LFLAGS) $(LFLAGS_SSPI)
+!IF "$(USE_SCHANNEL)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi-schannel
+!ELSE
CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-sspi
!ENDIF
+!ENDIF
!IF "$(GEN_PDB)"=="true"
CFLAGS = $(CFLAGS) $(CFLAGS_PDB)