Commit 1660a712 authored by Jean-Baptiste Kempf's avatar Jean-Baptiste Kempf

Contribs: gnutls: Fix win32, winrt, android, macOS compilation

(cherry picked from commit 909e0065)
Signed-off-by: Jean-Baptiste Kempf's avatarJean-Baptiste Kempf <jb@videolan.org>
parent 496d5f42
--- gnutls.old/gl/secure_getenv.c 2016-07-13 16:36:42.095099707 +0200
+++ gnutls/gl/secure_getenv.c 2016-07-13 16:43:29.440899856 +0200
@@ -24,7 +24,7 @@
# include <unistd.h>
# else
# undef issetugid
-# ifdef _WIN32
+# if defined (_WIN32) || defined(__ANDROID__)
# define issetugid() 0
# else
# define issetugid() 1
--- gnutls/lib/system.c.orig 2016-07-08 14:39:45.104700999 +0200
+++ gnutls/lib/system.c 2016-07-08 14:40:28.276750643 +0200
@@ -322,7 +322,7 @@
#ifdef _WIN32
#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20
HMODULE crypto;
- crypto = LoadLibraryA("Crypt32.dll");
+ crypto = LoadLibrary(TEXT("Crypt32.dll"));
if (crypto == NULL)
return GNUTLS_E_CRYPTO_INIT_FAILED;
--- gnutls/lib/system-keys-win.c.orig 2016-07-08 14:39:58.336716261 +0200
+++ gnutls/lib/system-keys-win.c 2016-07-08 14:40:12.568732630 +0200
@@ -1059,7 +1059,7 @@
--- gnutls-3.5.16/lib/system/keys-win.c 2016-11-05 19:12:02.000000000 +0100
+++ gnutls-3.5.16/lib/system/keys-win.c.new 2017-12-26 16:29:00.221119300 +0100
@@ -1426,7 +1426,7 @@
int ret;
#ifdef DYN_NCRYPT
......
--- gnutls-3.4.13/lib/system.c.orig 2016-05-27 22:40:06.000000000 +0200
+++ gnutls-3.4.13/lib/system.c 2016-06-29 15:36:26.645190212 +0200
@@ -34,7 +34,7 @@
#ifdef _WIN32
# include <windows.h>
# include <wincrypt.h>
-# if defined(__MINGW32__) && !defined(__MINGW64__) && __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20
+# if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20
typedef PCCRL_CONTEXT WINAPI(*CertEnumCRLsInStoreFunc) (HCERTSTORE
hCertStore,
PCCRL_CONTEXT
@@ -300,7 +300,7 @@
int gnutls_system_global_init(void)
{
#ifdef _WIN32
-#if defined(__MINGW32__) && !defined(__MINGW64__) && __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20
+#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20
HMODULE crypto;
crypto = LoadLibraryA("Crypt32.dll");
@@ -325,7 +325,7 @@
void gnutls_system_global_deinit(void)
{
#ifdef _WIN32
-#if defined(__MINGW32__) && !defined(__MINGW64__) && __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20
+#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20
FreeLibrary(Crypt32_dll);
#endif
#endif
--- gnutls-3.3.22/lib/gnutls.pc.in.orig 2016-03-10 16:17:25.955785469 +0100
+++ gnutls-3.3.22/lib/gnutls.pc.in 2016-03-10 16:20:49.979795202 +0100
@@ -19,6 +19,6 @@
URL: http://www.gnutls.org/
Version: @VERSION@
Libs: -L${libdir} -lgnutls
-Libs.private: @LIBZ@ @LIBINTL@ @LIBSOCKET@ @LIBPTHREAD@ @LIBICONV@ @P11_KIT_LIBS@ @LIB_SELECT@ @TSS_LIBS@ @GMP_LIBS@ @NETTLE_LIBS@ @LIBIDN_LIBS@ @HOGWEED_LIBS@
+Libs.private: @LIBZ@ @LIBINTL@ @LIBSOCKET@ -lcrypt32 @LIBPTHREAD@ @LIBICONV@ @P11_KIT_LIBS@ @LIB_SELECT@ @TSS_LIBS@ @GMP_LIBS@ @NETTLE_LIBS@ @LIBIDN_LIBS@ @HOGWEED_LIBS@
@GNUTLS_REQUIRES_PRIVATE@
Cflags: -I${includedir}
--- gnutls.old/lib/includes/gnutls/gnutls.h.in 2016-07-01 22:44:49.319398504 +0200
+++ gnutls/lib/includes/gnutls/gnutls.h.in 2016-07-01 22:48:00.515407625 +0200
@@ -68,7 +68,7 @@
......@@ -19,3 +9,13 @@
#else
# define _SYM_EXPORT
#endif
--- gnutls-3.5.16/lib/gnutls.pc.in.orig 2017-12-26 16:20:40.969104489 +0100
+++ gnutls-3.5.16/lib/gnutls.pc.in 2017-12-26 16:22:53.817108430 +0100
@@ -19,6 +19,6 @@
URL: http://www.gnutls.org/
Version: @VERSION@
Libs: -L${libdir} -lgnutls
-Libs.private: @LIBZ@ @LIBINTL@ @LIBSOCKET@ @LIBNSL@ @LIBPTHREAD@ @LIB_SELECT@ @TSS_LIBS@ @GMP_LIBS@ @LIBUNISTRING@ @LIBIDN2_LIBS@ @LIBIDN_LIBS@ @HOGWEED_LIBS@ @NETTLE_LIBS@
+Libs.private: @LIBZ@ @LIBINTL@ @LIBSOCKET@ @LIBNSL@ -lcrypt32 @LIBPTHREAD@ @LIB_SELECT@ @TSS_LIBS@ @GMP_LIBS@ @LIBUNISTRING@ @LIBIDN2_LIBS@ @LIBIDN_LIBS@ @HOGWEED_LIBS@ @NETTLE_LIBS@
@GNUTLS_REQUIRES_PRIVATE@
Cflags: -I${includedir}
--- gnutls/lib/system.c 2016-05-18 09:28:09.902830600 +0200
+++ gnutls/lib/system.c.winstore 2016-05-18 13:06:32.408396400 +0200
@@ -34,6 +34,17 @@
#ifdef _WIN32
# include <windows.h>
# include <wincrypt.h>
+# include <winapifamily.h>
+# if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+# if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0A00 /* Univeral Winstore */
+# undef CertOpenSystemStore
--- gnutls-3.5.16/lib/system/keys-win.c 2017-12-26 16:29:00.221119300 +0100
+++ gnutls-3.5.16/lib/system/keys-win.c.new 2017-12-26 16:33:02.501126487 +0100
@@ -44,6 +44,18 @@
#include <wincrypt.h>
#include <winbase.h>
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+# if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0A00 /* Univeral Winstore */
+# undef CertOpenSystemStore
+HCERTSTORE CertOpenSystemStore( HCRYPTPROV_LEGACY hprov, LPCSTR szSubsystemProtocol )
+{
+ return CertOpenStore( CERT_STORE_PROV_SYSTEM_A, X509_ASN_ENCODING, 0,
+ CERT_SYSTEM_STORE_CURRENT_USER, szSubsystemProtocol );
+}
+# endif /* _WIN32_WINNT */
+# endif /* WINAPI_FAMILY */
# if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR) && __MINGW32_MAJOR_VERSION <= 3 && __MINGW32_MINOR_VERSION <= 20
typedef PCCRL_CONTEXT WINAPI(*Type_CertEnumCRLsInStore) (HCERTSTORE
hCertStore,
+# endif /* _WIN32_WINNT */
+#endif /* WINAPI_FAMILY */
+
#define DYN_NCRYPT
#ifdef __MINGW32__
diff -ru gnutls-old/lib/Makefile.am gnutls/lib/Makefile.am
--- gnutls-old/lib/Makefile.am 2013-06-02 19:33:57.000000000 +0200
+++ gnutls/lib/Makefile.am 2013-11-10 13:28:18.000000000 +0100
@@ -152,6 +152,10 @@
DISTCLEANFILES += $(defexec_DATA)
--- gnutls-old/lib/Makefile.am
+++ gnutls/lib/Makefile.am
@@ -206,6 +206,10 @@
thirdparty_libadd += -lcrypt32
endif
+if MACOSX
+libgnutls_la_LDFLAGS += -Wl,-framework,Security,-framework,CoreFoundation
+endif
+
if WINDOWS
thirdparty_libadd += -lcrypt32
endif
diff -ru gnutls-old/lib/system.c gnutls/lib/system.c
--- gnutls-old/lib/system.c 2013-04-10 22:25:51.000000000 +0200
+++ gnutls/lib/system.c 2013-11-10 13:30:31.000000000 +0100
@@ -57,6 +57,15 @@
#undef send
#undef select
libgnutls_la_LIBADD += $(thirdparty_libadd)
+#ifdef __APPLE__
# C++ library
--- gnutls-old/lib/system/certs.c
+++ gnutls/lib/system/certs.c
@@ -270,6 +270,43 @@
return r;
}
+
+#elif defined(__APPLE__) && TARGET_OS_MAC
+
+#include "TargetConditionals.h"
+#ifdef TARGET_OS_MAC
+#define _UINT64
+#include <Security/Security.h>
+#include <Security/SecCertificate.h>
+#endif
+#endif
+
/* System specific function wrappers.
*/
@@ -550,6 +559,40 @@
return r;
}
+#elif defined(__APPLE__)
+#if TARGET_OS_MAC
+static
+int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags, unsigned int tl_vflags)
+{
......@@ -66,9 +54,6 @@ diff -ru gnutls-old/lib/system.c gnutls/lib/system.c
+ return ret;
+}
+
+#else
+#define add_system_trust(x,y,z) GNUTLS_E_UNIMPLEMENTED_FEATURE
+#endif
#else
#define add_system_trust(x,y,z) GNUTLS_E_UNIMPLEMENTED_FEATURE
......@@ -22,7 +22,6 @@ gnutls: gnutls-$(GNUTLS_VERSION).tar.xz .sum-gnutls
$(APPLY) $(SRC)/gnutls/gnutls-pkgconfig-static.patch
ifdef HAVE_WIN32
$(APPLY) $(SRC)/gnutls/gnutls-win32.patch
$(APPLY) $(SRC)/gnutls/gnutls-mingw64.patch
$(APPLY) $(SRC)/gnutls/gnutls-loadlibrary.patch
ifdef HAVE_WINSTORE
$(APPLY) $(SRC)/gnutls/gnutls-winrt.patch
......@@ -31,7 +30,6 @@ endif
endif
ifdef HAVE_ANDROID
$(APPLY) $(SRC)/gnutls/no-create-time-h.patch
$(APPLY) $(SRC)/gnutls/gnutls-android.patch
endif
$(APPLY) $(SRC)/gnutls/read-file-limits.h.patch
ifdef HAVE_MACOSX
......
--- gnutls/lib/x509/verify-high2.c.orig 2016-05-11 21:28:25.584504325 +0200
+++ gnutls/lib/x509/verify-high2.c 2016-05-11 21:32:00.596348074 +0200
@@ -37,6 +37,10 @@
#include <dirent.h>
--- gnutls-3.5.16/lib/x509/verify-high2.c.orig 2016-12-19 15:10:59.000000000 +0100
+++ gnutls-3.5.16/lib/x509/verify-high2.c 2017-12-26 16:39:02.565137168 +0100
@@ -43,6 +43,9 @@
# endif
#endif
+#include <windows.h>
+#include <tchar.h>
+
+
#ifndef _DIRENT_HAVE_D_TYPE
# ifdef DT_UNKNOWN
# define _DIRENT_HAVE_D_TYPE
@@ -366,14 +370,40 @@
/* Convenience functions for verify-high functionality
*/
@@ -368,29 +371,59 @@
return ret;
}
......@@ -54,35 +53,29 @@
int ret;
int r = 0;
char path[GNUTLS_PATH_MAX];
@@ -381,11 +411,13 @@
struct dirent e;
#endif
- dirp = opendir(dirname);
+ TCHAR* dirnameW = ToWide(dirname);
+ TCHAR* dirnameW = ToWide(dirname);
+ dirp = _topendir(dirnameW);
+ free(dirnameW);
+ free(dirnameW);
if (dirp != NULL) {
do {
#ifdef _WIN32
- d = readdir(dirp);
+ d = _treaddir(dirp);
if (d != NULL) {
#else
ret = readdir_r(dirp, &e, &d);
@@ -395,8 +427,10 @@
if (d != NULL
#ifdef _DIRENT_HAVE_D_TYPE
&& (d->d_type == DT_REG || d->d_type == DT_LNK || d->d_type == DT_UNKNOWN)
#endif
) {
#endif
+ char* d_name = FromWide(d->d_name);
snprintf(path, sizeof(path), "%s/%s",
- dirname, d->d_name);
+ dirname, d_name);
+ free(d_name);
+ free(d_name);
if (crl != 0) {
ret =
@@ -414,7 +448,7 @@
@@ -408,7 +441,7 @@
}
}
while (d != NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment