Without the patch to x11/qt5/qtbase below, the build of
x11/qt5/qtdeclarative fails with the following linking errors:
/usr/local/lib/qt5/libQt5Network.so.2.2: undefined reference to
`X509_getm_notBefore'
/usr/local/lib/qt5/libQt5Network.so.2.2: undefined reference to
`X509_getm_notAfter'
(note that the above library is part of the qtbase package)
The patch is analogous to the fix for qt4 that I sent out earlier today,
but for some reason its absence doesn't break the build for qtbase.
Index: patches/patch-src_network_ssl_qsslcertificate_openssl_cpp
===================================================================
RCS file: patches/patch-src_network_ssl_qsslcertificate_openssl_cpp
diff -N patches/patch-src_network_ssl_qsslcertificate_openssl_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_network_ssl_qsslcertificate_openssl_cpp 26 Aug 2018
11:41:26 -0000
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Index: src/network/ssl/qsslcertificate_openssl.cpp
+--- src/network/ssl/qsslcertificate_openssl.cpp.orig
++++ src/network/ssl/qsslcertificate_openssl.cpp
+@@ -619,8 +619,8 @@ QSslCertificate QSslCertificatePrivate::QSslCertificat
+ if (!x509 || !QSslSocket::supportsSsl())
+ return certificate;
+
+- ASN1_TIME *nbef = q_X509_get_notBefore(x509);
+- ASN1_TIME *naft = q_X509_get_notAfter(x509);
++ ASN1_TIME *nbef = q_X509_getm_notBefore(x509);
++ ASN1_TIME *naft = q_X509_getm_notAfter(x509);
+ certificate.d->notValidBefore = q_getTimeFromASN1(nbef);
+ certificate.d->notValidAfter = q_getTimeFromASN1(naft);
+ certificate.d->null = false;
Index: patches/patch-src_network_ssl_qsslsocket_openssl_symbols_cpp
===================================================================
RCS file:
/var/cvs/ports/x11/qt5/qtbase/patches/patch-src_network_ssl_qsslsocket_openssl_symbols_cpp,v
retrieving revision 1.3
diff -u -p -r1.3 patch-src_network_ssl_qsslsocket_openssl_symbols_cpp
--- patches/patch-src_network_ssl_qsslsocket_openssl_symbols_cpp 21 Jul
2017 15:28:25 -0000 1.3
+++ patches/patch-src_network_ssl_qsslsocket_openssl_symbols_cpp 26 Aug
2018 12:51:23 -0000
@@ -13,7 +13,16 @@ Index: src/network/ssl/qsslsocket_openss
DEFINEFUNC2(int, BN_is_word, BIGNUM *a, a, BN_ULONG w, w, return 0, return)
#endif
DEFINEFUNC2(BN_ULONG, BN_mod_word, const BIGNUM *a, a, BN_ULONG w, w, return
static_cast<BN_ULONG>(-1), return)
-@@ -461,6 +461,8 @@ DEFINEFUNC5(int, PKCS12_parse, PKCS12 *p12, p12, const
+@@ -378,6 +378,8 @@ DEFINEFUNC2(int, ASN1_STRING_print, BIO *a, a, ASN1_ST
+ DEFINEFUNC2(int, X509_check_issued, X509 *a, a, X509 *b, b, return -1, return)
+ DEFINEFUNC(X509_NAME *, X509_get_issuer_name, X509 *a, a, return 0, return)
+ DEFINEFUNC(X509_NAME *, X509_get_subject_name, X509 *a, a, return 0, return)
++DEFINEFUNC(ASN1_TIME *, X509_getm_notAfter, const X509 *a, a, return 0,
return)
++DEFINEFUNC(ASN1_TIME *, X509_getm_notBefore, const X509 *a, a, return 0,
return)
+ DEFINEFUNC(int, X509_verify_cert, X509_STORE_CTX *a, a, return -1, return)
+ DEFINEFUNC(int, X509_NAME_entry_count, X509_NAME *a, a, return 0, return)
+ DEFINEFUNC2(X509_NAME_ENTRY *, X509_NAME_get_entry, X509_NAME *a, a, int b,
b, return 0, return)
+@@ -461,6 +463,8 @@ DEFINEFUNC5(int, PKCS12_parse, PKCS12 *p12, p12, const
DEFINEFUNC2(PKCS12 *, d2i_PKCS12_bio, BIO *bio, bio, PKCS12 **pkcs12, pkcs12,
return 0, return);
DEFINEFUNC(void, PKCS12_free, PKCS12 *pkcs12, pkcs12, return, DUMMYARG)
@@ -22,7 +31,7 @@ Index: src/network/ssl/qsslsocket_openss
#define RESOLVEFUNC(func) \
if (!(_q_##func = _q_PTR_##func(libs.first->resolve(#func))) \
&& !(_q_##func = _q_PTR_##func(libs.second->resolve(#func)))) \
-@@ -790,7 +792,7 @@ bool q_resolveOpenSslSymbols()
+@@ -790,7 +794,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(EC_GROUP_get_degree)
#endif
RESOLVEFUNC(BN_num_bits)
@@ -31,7 +40,16 @@ Index: src/network/ssl/qsslsocket_openss
RESOLVEFUNC(BN_is_word)
#endif
RESOLVEFUNC(BN_mod_word)
-@@ -1028,12 +1030,13 @@ bool q_resolveOpenSslSymbols()
+@@ -982,6 +986,8 @@ bool q_resolveOpenSslSymbols()
+ RESOLVEFUNC(X509_check_issued)
+ RESOLVEFUNC(X509_get_issuer_name)
+ RESOLVEFUNC(X509_get_subject_name)
++ RESOLVEFUNC(X509_getm_notAfter)
++ RESOLVEFUNC(X509_getm_notBefore)
+ RESOLVEFUNC(X509_verify_cert)
+ RESOLVEFUNC(d2i_X509)
+ RESOLVEFUNC(i2d_X509)
+@@ -1028,12 +1034,13 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(d2i_PKCS12_bio)
RESOLVEFUNC(PKCS12_free)
Index: patches/patch-src_network_ssl_qsslsocket_openssl_symbols_p_h
===================================================================
RCS file:
/var/cvs/ports/x11/qt5/qtbase/patches/patch-src_network_ssl_qsslsocket_openssl_symbols_p_h,v
retrieving revision 1.3
diff -u -p -r1.3 patch-src_network_ssl_qsslsocket_openssl_symbols_p_h
--- patches/patch-src_network_ssl_qsslsocket_openssl_symbols_p_h 21 Jul
2017 15:28:25 -0000 1.3
+++ patches/patch-src_network_ssl_qsslsocket_openssl_symbols_p_h 26 Aug
2018 12:47:01 -0000
@@ -13,7 +13,27 @@ Index: src/network/ssl/qsslsocket_openss
int q_BN_is_word(BIGNUM *a, BN_ULONG w);
#else
// BN_is_word is implemented purely as a
-@@ -599,6 +599,9 @@ void q_SSL_get0_alpn_selected(const SSL *ssl, const un
+@@ -471,6 +471,8 @@ int q_ASN1_STRING_print(BIO *a, ASN1_STRING *b);
+ int q_X509_check_issued(X509 *a, X509 *b);
+ X509_NAME *q_X509_get_issuer_name(X509 *a);
+ X509_NAME *q_X509_get_subject_name(X509 *a);
++ASN1_TIME *q_X509_getm_notAfter(const X509 *x);
++ASN1_TIME *q_X509_getm_notBefore(const X509 *x);
+ int q_X509_verify_cert(X509_STORE_CTX *ctx);
+ int q_X509_NAME_entry_count(X509_NAME *a);
+ X509_NAME_ENTRY *q_X509_NAME_get_entry(X509_NAME *a,int b);
+@@ -558,8 +560,8 @@ DSA *q_d2i_DSAPrivateKey(DSA **a, unsigned char **pp,
+ #define q_sk_SSL_CIPHER_value(st, i) q_SKM_sk_value(SSL_CIPHER, (st), (i))
+ #define q_SSL_CTX_add_extra_chain_cert(ctx,x509) \
+ q_SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509)
+-#define q_X509_get_notAfter(x) X509_get_notAfter(x)
+-#define q_X509_get_notBefore(x) X509_get_notBefore(x)
++#define q_X509_getm_notAfter(x) X509_getm_notAfter(x)
++#define q_X509_getm_notBefore(x) X509_getm_notBefore(x)
+ #define q_EVP_PKEY_assign_RSA(pkey,rsa)
q_EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
+ (char *)(rsa))
+ #define q_EVP_PKEY_assign_DSA(pkey,dsa)
q_EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
+@@ -599,6 +601,9 @@ void q_SSL_get0_alpn_selected(const SSL *ssl, const un
unsigned *len);
#endif
#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...