vlc/vlc-2.1 | branch: master | Felix Paul Kühne <[email protected]> | Sun Nov 10 13:23:17 2013 +0100| [07fb21d2a60b9379db2a10cbfe9a0f8f252f9ec1] | committer: Felix Paul Kühne
contrib/gnutls: add patch adding keychain root certificate lookups on OS X (not supported on iOS) (cherry picked from commit a06e7f27acef85631f7c748f568993de7f5023a1) > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.1.git/?a=commit;h=07fb21d2a60b9379db2a10cbfe9a0f8f252f9ec1 --- contrib/src/gnutls/mac-keychain-lookup.patch | 74 ++++++++++++++++++++++++++ contrib/src/gnutls/rules.mak | 3 ++ 2 files changed, 77 insertions(+) diff --git a/contrib/src/gnutls/mac-keychain-lookup.patch b/contrib/src/gnutls/mac-keychain-lookup.patch new file mode 100644 index 0000000..81e21c2 --- /dev/null +++ b/contrib/src/gnutls/mac-keychain-lookup.patch @@ -0,0 +1,74 @@ +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) + 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 + ++#ifdef __APPLE__ ++#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) ++{ ++ CFArrayRef anchors; ++ int ret = 0; ++ if (SecTrustCopyAnchorCertificates(&anchors) != 0) ++ return -1; ++ ++ CFIndex count = CFArrayGetCount(anchors); ++ for (int i = 0; i < count; i++) { ++ SecCertificateRef certref = (SecCertificateRef)CFArrayGetValueAtIndex(anchors, i); ++ ++ CSSM_DATA certData; ++ SecCertificateGetData(certref, &certData); ++ gnutls_datum data = { ++ .data = certData.Data, ++ .size = certData.Length, ++ }; ++ ++ if (!gnutls_x509_trust_list_add_trust_mem(list, &data, NULL, GNUTLS_X509_FMT_DER, tl_flags, tl_vflags)) ++ printf("cannot add x509 credentials\n"); ++ else ++ ret++; ++ } ++ CFRelease(anchors); ++ ++ 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 diff --git a/contrib/src/gnutls/rules.mak b/contrib/src/gnutls/rules.mak index 4ff843f..b587686 100644 --- a/contrib/src/gnutls/rules.mak +++ b/contrib/src/gnutls/rules.mak @@ -24,6 +24,9 @@ endif $(APPLY) $(SRC)/gnutls/gnutls-no-egd.patch $(APPLY) $(SRC)/gnutls/read-file-limits.h.patch $(APPLY) $(SRC)/gnutls/downgrade-automake-requirement.patch +ifdef HAVE_MACOSX + $(APPLY) $(SRC)/gnutls/mac-keychain-lookup.patch +endif $(call pkg_static,"lib/gnutls.pc.in") $(UPDATE_AUTOCONFIG) $(MOVE) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
