Index: files/patch-qsslsocket__openssl__symbols.cpp =================================================================== --- files/patch-qsslsocket__openssl__symbols.cpp (nonexistent) +++ files/patch-qsslsocket__openssl__symbols.cpp (working copy) @@ -0,0 +1,86 @@ +--- src/network/ssl/qsslsocket_openssl_symbols.cpp.orig 2018-05-19 15:06:03 UTC ++++ src/network/ssl/qsslsocket_openssl_symbols.cpp +@@ -146,7 +146,9 @@ DEFINEFUNC2(int, OPENSSL_init_ssl, uint6 + DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return 0, return) + DEFINEFUNC(BIO *, BIO_new, const BIO_METHOD *a, a, return 0, return) + DEFINEFUNC(const BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return 0, return) ++#if !defined(LIBRESSL_VERSION_NUMBER) + DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w, w, return 0, return) ++#endif + DEFINEFUNC(int, EVP_CIPHER_CTX_reset, EVP_CIPHER_CTX *c, c, return 0, return) + DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return) + DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return) +@@ -524,6 +526,9 @@ DEFINEFUNC(void, EC_KEY_free, EC_KEY *ec + DEFINEFUNC2(size_t, EC_get_builtin_curves, EC_builtin_curve * r, r, size_t nitems, nitems, return 0, return) + #if OPENSSL_VERSION_NUMBER >= 0x10002000L + DEFINEFUNC(int, EC_curve_nist2nid, const char *name, name, return 0, return) ++#if defined(LIBRESSL_VERSION_NUMBER) ++DEFINEFUNC3(int, SSL_CTX_set1_groups, SSL_CTX *a, a, int *b, b, int c, c, return -1, return) ++#endif // defined(LIBRESSL_VERSION_NUMBER) + #endif // OPENSSL_VERSION_NUMBER >= 0x10002000L + #endif // OPENSSL_NO_EC + +@@ -769,8 +774,13 @@ static QPair loadO + #endif + #if defined(SHLIB_VERSION_NUMBER) && !defined(Q_OS_QNX) // on QNX, the libs are always libssl.so and libcrypto.so + // first attempt: the canonical name is libssl.so. ++#if defined(LIBRESSL_VERSION_NUMBER) ++ libssl->setFileNameAndVersion(QLatin1String("/usr/local/lib/libssl"), QLatin1String(SHLIB_VERSION_NUMBER)); ++ libcrypto->setFileNameAndVersion(QLatin1String("/usr/local/lib/libcrypto"), QLatin1String(SHLIB_VERSION_NUMBER)); ++#else + libssl->setFileNameAndVersion(QLatin1String("ssl"), QLatin1String(SHLIB_VERSION_NUMBER)); + libcrypto->setFileNameAndVersion(QLatin1String("crypto"), QLatin1String(SHLIB_VERSION_NUMBER)); ++#endif + if (libcrypto->load() && libssl->load()) { + // libssl.so. and libcrypto.so. found + return pair; +@@ -786,9 +796,14 @@ static QPair loadO + // disabled on macOS/iOS: + // macOS's /usr/lib/libssl.dylib, /usr/lib/libcrypto.dylib will be picked up in the third + // attempt, _after_ /Contents/Frameworks has been searched. ++#if defined(LIBRESSL_VERSION_NUMBER) + // iOS does not ship a system libssl.dylib, libcrypto.dylib in the first place. ++ libssl->setFileNameAndVersion(QLatin1String("/usr/local/lib/libssl"), -1); ++ libcrypto->setFileNameAndVersion(QLatin1String("/usr/local/lib/libcrypto"), -1); ++#else + libssl->setFileNameAndVersion(QLatin1String("ssl"), -1); + libcrypto->setFileNameAndVersion(QLatin1String("crypto"), -1); ++#endif + if (libcrypto->load() && libssl->load()) { + // libssl.so.0 and libcrypto.so.0 found + return pair; +@@ -979,10 +994,9 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(OPENSSL_add_all_algorithms_conf) + RESOLVEFUNC(SSLeay) + +- if (!_q_SSLeay || q_SSLeay() >= 0x10100000L) { ++ if (!_q_SSLeay) { + // OpenSSL 1.1 has deprecated and removed SSLeay. We consider a failure to + // resolve this symbol as a failure to resolve symbols. +- // The right operand of '||' above is ... a bit of paranoia. + delete libs.first; + delete libs.second; + qCWarning(lcSsl, "Incompatible version of OpenSSL"); +@@ -994,8 +1008,12 @@ bool q_resolveOpenSslSymbols() + + #ifndef OPENSSL_NO_EC + #if OPENSSL_VERSION_NUMBER >= 0x10002000L +- if (q_SSLeay() >= 0x10002000L) ++ if (q_SSLeay() >= 0x10002000L) { + RESOLVEFUNC(EC_curve_nist2nid) ++#if defined(LIBRESSL_VERSION_NUMBER) ++ RESOLVEFUNC(SSL_CTX_set1_groups) ++#endif // defined(LIBRESSL_VERSION_NUMBER) ++ } + #endif // OPENSSL_VERSION_NUMBER >= 0x10002000L + #endif // OPENSSL_NO_EC + +@@ -1017,7 +1035,7 @@ bool q_resolveOpenSslSymbols() + RESOLVEFUNC(EC_GROUP_get_degree) + #endif + RESOLVEFUNC(BN_num_bits) +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if !defined(BN_is_word) + RESOLVEFUNC(BN_is_word) + #endif + RESOLVEFUNC(BN_mod_word) Property changes on: files/patch-qsslsocket__openssl__symbols.cpp ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: files/patch-qsslsocket__openssl__symbols__p.h =================================================================== --- files/patch-qsslsocket__openssl__symbols__p.h (nonexistent) +++ files/patch-qsslsocket__openssl__symbols__p.h (working copy) @@ -0,0 +1,38 @@ +--- src/network/ssl/qsslsocket_openssl_symbols_p.h.orig 2018-05-19 13:59:45 UTC ++++ src/network/ssl/qsslsocket_openssl_symbols_p.h + +@@ -76,6 +76,15 @@ QT_BEGIN_NAMESPACE + + #define DUMMYARG + ++#if defined(LIBRESSL_VERSION_NUMBER) ++typedef _STACK STACK; ++typedef STACK OPENSSL_STACK; ++typedef void OPENSSL_INIT_SETTINGS; ++typedef int (*X509_STORE_CTX_verify_cb)(int ok,X509_STORE_CTX *ctx); ++#endif ++ ++ ++ + #if !defined QT_LINKED_OPENSSL + // **************** Shared declarations ****************** + // ret func(arg) +@@ -232,7 +241,7 @@ BIO *q_BIO_new_mem_buf(void *a, int b); + int q_BIO_read(BIO *a, void *b, int c); + Q_AUTOTEST_EXPORT int q_BIO_write(BIO *a, const void *b, int c); + int q_BN_num_bits(const BIGNUM *a); +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if !defined(BN_is_word) + int q_BN_is_word(BIGNUM *a, BN_ULONG w); + #else + // BN_is_word is implemented purely as a +@@ -454,6 +463,9 @@ void q_EC_KEY_free(EC_KEY *ecdh); + size_t q_EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + #if OPENSSL_VERSION_NUMBER >= 0x10002000L + int q_EC_curve_nist2nid(const char *name); ++#if defined(LIBRESSL_VERSION_NUMBER) ++int q_SSL_CTX_set1_groups(SSL_CTX *a, int *b, int c); ++#endif // defined(LIBRESSL_VERSION_NUMBER) + #endif // OPENSSL_VERSION_NUMBER >= 0x10002000L + #endif // OPENSSL_NO_EC + #if OPENSSL_VERSION_NUMBER >= 0x10002000L Property changes on: files/patch-qsslsocket__openssl__symbols__p.h ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Author Date Id Rev URL \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: files/patch-src_network_ssl_qsslsocket__openssl__symbols.cpp =================================================================== --- files/patch-src_network_ssl_qsslsocket__openssl__symbols.cpp (revision 470407) +++ files/patch-src_network_ssl_qsslsocket__openssl__symbols.cpp (nonexistent) @@ -1,74 +0,0 @@ -* Boilerplate for SSL_CTX_set1_groups() used in qsslcontext_openssl.cpp -* -* Prepend the path of the SSL libraries used for building so the same libraries are -* found and loaded at runtime. Normal search finds base SSL libraries before ports. -* ---- src/network/ssl/qsslsocket_openssl_symbols.cpp.orig 2017-11-30 13:49:46 UTC -+++ src/network/ssl/qsslsocket_openssl_symbols.cpp -@@ -524,6 +524,9 @@ DEFINEFUNC(void, EC_KEY_free, EC_KEY *ecdh, ecdh, retu - DEFINEFUNC2(size_t, EC_get_builtin_curves, EC_builtin_curve * r, r, size_t nitems, nitems, return 0, return) - #if OPENSSL_VERSION_NUMBER >= 0x10002000L - DEFINEFUNC(int, EC_curve_nist2nid, const char *name, name, return 0, return) -+#if defined(LIBRESSL_VERSION_NUMBER) -+DEFINEFUNC3(int, SSL_CTX_set1_groups, SSL_CTX *a, a, int *b, b, int c, c, return -1, return) -+#endif // defined(LIBRESSL_VERSION_NUMBER) - #endif // OPENSSL_VERSION_NUMBER >= 0x10002000L - #endif // OPENSSL_NO_EC - -@@ -769,8 +772,8 @@ static QPair loadOpenSsl() - #endif - #if defined(SHLIB_VERSION_NUMBER) && !defined(Q_OS_QNX) // on QNX, the libs are always libssl.so and libcrypto.so - // first attempt: the canonical name is libssl.so. -- libssl->setFileNameAndVersion(QLatin1String("ssl"), QLatin1String(SHLIB_VERSION_NUMBER)); -- libcrypto->setFileNameAndVersion(QLatin1String("crypto"), QLatin1String(SHLIB_VERSION_NUMBER)); -+ libssl->setFileNameAndVersion(QLatin1String("%%OPENSSLLIB%%/libssl"), QLatin1String(SHLIB_VERSION_NUMBER)); -+ libcrypto->setFileNameAndVersion(QLatin1String("%%OPENSSLLIB%%/libcrypto"), QLatin1String(SHLIB_VERSION_NUMBER)); - if (libcrypto->load() && libssl->load()) { - // libssl.so. and libcrypto.so. found - return pair; -@@ -787,8 +790,8 @@ static QPair loadOpenSsl() - // macOS's /usr/lib/libssl.dylib, /usr/lib/libcrypto.dylib will be picked up in the third - // attempt, _after_ /Contents/Frameworks has been searched. - // iOS does not ship a system libssl.dylib, libcrypto.dylib in the first place. -- libssl->setFileNameAndVersion(QLatin1String("ssl"), -1); -- libcrypto->setFileNameAndVersion(QLatin1String("crypto"), -1); -+ libssl->setFileNameAndVersion(QLatin1String("%%OPENSSLLIB%%/libssl"), -1); -+ libcrypto->setFileNameAndVersion(QLatin1String("%%OPENSSLLIB%%/libcrypto"), -1); - if (libcrypto->load() && libssl->load()) { - // libssl.so.0 and libcrypto.so.0 found - return pair; -@@ -979,10 +982,9 @@ bool q_resolveOpenSslSymbols() - RESOLVEFUNC(OPENSSL_add_all_algorithms_conf) - RESOLVEFUNC(SSLeay) - -- if (!_q_SSLeay || q_SSLeay() >= 0x10100000L) { -+ if (!_q_SSLeay) { - // OpenSSL 1.1 has deprecated and removed SSLeay. We consider a failure to - // resolve this symbol as a failure to resolve symbols. -- // The right operand of '||' above is ... a bit of paranoia. - delete libs.first; - delete libs.second; - qCWarning(lcSsl, "Incompatible version of OpenSSL"); -@@ -994,8 +996,12 @@ bool q_resolveOpenSslSymbols() - - #ifndef OPENSSL_NO_EC - #if OPENSSL_VERSION_NUMBER >= 0x10002000L -- if (q_SSLeay() >= 0x10002000L) -+ if (q_SSLeay() >= 0x10002000L) { - RESOLVEFUNC(EC_curve_nist2nid) -+#if defined(LIBRESSL_VERSION_NUMBER) -+ RESOLVEFUNC(SSL_CTX_set1_groups) -+#endif // defined(LIBRESSL_VERSION_NUMBER) -+ } - #endif // OPENSSL_VERSION_NUMBER >= 0x10002000L - #endif // OPENSSL_NO_EC - -@@ -1017,7 +1023,7 @@ bool q_resolveOpenSslSymbols() - RESOLVEFUNC(EC_GROUP_get_degree) - #endif - RESOLVEFUNC(BN_num_bits) --#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+#if !defined(BN_is_word) - RESOLVEFUNC(BN_is_word) - #endif - RESOLVEFUNC(BN_mod_word) Property changes on: files/patch-src_network_ssl_qsslsocket__openssl__symbols.cpp ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: files/patch-src_network_ssl_qsslsocket__openssl__symbols__p.h =================================================================== --- files/patch-src_network_ssl_qsslsocket__openssl__symbols__p.h (revision 470407) +++ files/patch-src_network_ssl_qsslsocket__openssl__symbols__p.h (nonexistent) @@ -1,22 +0,0 @@ -Boilerplate for SSL_CTX_set1_groups() used in qsslcontext_openssl.cpp. ---- src/network/ssl/qsslsocket_openssl_symbols_p.h.orig 2017-11-30 13:49:46 UTC -+++ src/network/ssl/qsslsocket_openssl_symbols_p.h -@@ -232,7 +232,7 @@ BIO *q_BIO_new_mem_buf(void *a, int b); - int q_BIO_read(BIO *a, void *b, int c); - Q_AUTOTEST_EXPORT int q_BIO_write(BIO *a, const void *b, int c); - int q_BN_num_bits(const BIGNUM *a); --#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+#if !defined(BN_is_word) - int q_BN_is_word(BIGNUM *a, BN_ULONG w); - #else - // BN_is_word is implemented purely as a -@@ -454,6 +454,9 @@ void q_EC_KEY_free(EC_KEY *ecdh); - size_t q_EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); - #if OPENSSL_VERSION_NUMBER >= 0x10002000L - int q_EC_curve_nist2nid(const char *name); -+#if defined(LIBRESSL_VERSION_NUMBER) -+int q_SSL_CTX_set1_groups(SSL_CTX *a, int *b, int c); -+#endif // defined(LIBRESSL_VERSION_NUMBER) - #endif // OPENSSL_VERSION_NUMBER >= 0x10002000L - #endif // OPENSSL_NO_EC - #if OPENSSL_VERSION_NUMBER >= 0x10002000L Property changes on: files/patch-src_network_ssl_qsslsocket__openssl__symbols__p.h ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property