Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 Oct 2018 02:29:03 +0000 (UTC)
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r483545 - in head/net/qt4-network: . files
Message-ID:  <201810310229.w9V2T3nP056791@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: danfe
Date: Wed Oct 31 02:29:03 2018
New Revision: 483545
URL: https://svnweb.freebsd.org/changeset/ports/483545

Log:
  Unbreak the build against newer versions of OpenSSL (since 1.1.0-pre5),
  where many data structures were made opaque.

Added:
  head/net/qt4-network/files/patch-src_network_ssl_qsslcertificate.cpp   (contents, props changed)
  head/net/qt4-network/files/patch-src_network_ssl_qsslkey.cpp   (contents, props changed)
Modified:
  head/net/qt4-network/Makefile
  head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl.cpp

Modified: head/net/qt4-network/Makefile
==============================================================================
--- head/net/qt4-network/Makefile	Wed Oct 31 02:14:50 2018	(r483544)
+++ head/net/qt4-network/Makefile	Wed Oct 31 02:29:03 2018	(r483545)
@@ -13,9 +13,6 @@ COMMENT=	Qt network module
 LICENSE=	GPLv3 LGPL21 LGPL3 GFDL
 LICENSE_COMB=	dual
 
-BROKEN_SSL=	openssl-devel
-BROKEN_SSL_REASON_openssl-devel=	error: member access into incomplete type 'RSA' (aka 'rsa_st')
-
 RUN_DEPENDS=	${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss
 
 USES=		qmake:no_env qt-dist:4 ssl

Added: head/net/qt4-network/files/patch-src_network_ssl_qsslcertificate.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/qt4-network/files/patch-src_network_ssl_qsslcertificate.cpp	Wed Oct 31 02:29:03 2018	(r483545)
@@ -0,0 +1,44 @@
+--- src/network/ssl/qsslcertificate.cpp.orig	2015-05-07 14:14:44 UTC
++++ src/network/ssl/qsslcertificate.cpp
+@@ -261,7 +261,7 @@ QByteArray QSslCertificate::version() const
+     QMutexLocker lock(QMutexPool::globalInstanceGet(d.data()));
+     if (d->versionString.isEmpty() && d->x509)
+         d->versionString =
+-            QByteArray::number(qlonglong(q_ASN1_INTEGER_get(d->x509->cert_info->version)) + 1);
++            QByteArray::number(qlonglong(X509_get_version(d->x509)) + 1);
+ 
+     return d->versionString;
+ }
+@@ -276,7 +276,7 @@ QByteArray QSslCertificate::serialNumber() const
+ {
+     QMutexLocker lock(QMutexPool::globalInstanceGet(d.data()));
+     if (d->serialNumberString.isEmpty() && d->x509) {
+-        ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber;
++        ASN1_INTEGER *serialNumber = X509_get_serialNumber(d->x509);
+         // if we cannot convert to a long, just output the hexadecimal number
+         if (serialNumber->length > 4) {
+             QByteArray hexString;
+@@ -489,19 +489,19 @@ QSslKey QSslCertificate::publicKey() const
+     QSslKey key;
+ 
+     key.d->type = QSsl::PublicKey;
+-    X509_PUBKEY *xkey = d->x509->cert_info->key;
++    X509_PUBKEY *xkey = X509_get_X509_PUBKEY(d->x509);
+     EVP_PKEY *pkey = q_X509_PUBKEY_get(xkey);
+     Q_ASSERT(pkey);
+ 
+-    if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_RSA) {
++    if (q_EVP_PKEY_type(EVP_PKEY_id(pkey)) == EVP_PKEY_RSA) {
+         key.d->rsa = q_EVP_PKEY_get1_RSA(pkey);
+         key.d->algorithm = QSsl::Rsa;
+         key.d->isNull = false;
+-    } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DSA) {
++    } else if (q_EVP_PKEY_type(EVP_PKEY_id(pkey)) == EVP_PKEY_DSA) {
+         key.d->dsa = q_EVP_PKEY_get1_DSA(pkey);
+         key.d->algorithm = QSsl::Dsa;
+         key.d->isNull = false;
+-    } else if (q_EVP_PKEY_type(pkey->type) == EVP_PKEY_DH) {
++    } else if (q_EVP_PKEY_type(EVP_PKEY_id(pkey)) == EVP_PKEY_DH) {
+         // DH unsupported
+     } else {
+         // error?

Added: head/net/qt4-network/files/patch-src_network_ssl_qsslkey.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/qt4-network/files/patch-src_network_ssl_qsslkey.cpp	Wed Oct 31 02:29:03 2018	(r483545)
@@ -0,0 +1,17 @@
+--- src/network/ssl/qsslkey.cpp.orig	2015-05-07 14:14:44 UTC
++++ src/network/ssl/qsslkey.cpp
+@@ -321,8 +321,12 @@ int QSslKey::length() const
+ {
+     if (d->isNull)
+         return -1;
+-    return (d->algorithm == QSsl::Rsa)
+-           ? q_BN_num_bits(d->rsa->n) : q_BN_num_bits(d->dsa->p);
++    return (d->algorithm == QSsl::Rsa) ?
++#if OPENSSL_VERSION_NUMBER >= 0x10100005L
++        q_BN_num_bits(RSA_get0_n(d->rsa)) : q_BN_num_bits(DSA_get0_p(d->dsa));
++#else
++        q_BN_num_bits(d->rsa->n) : q_BN_num_bits(d->dsa->p);
++#endif
+ }
+ 
+ /*!

Modified: head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl.cpp
==============================================================================
--- head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl.cpp	Wed Oct 31 02:14:50 2018	(r483544)
+++ head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl.cpp	Wed Oct 31 02:29:03 2018	(r483545)
@@ -2,7 +2,17 @@
 *
 --- src/network/ssl/qsslsocket_openssl.cpp.orig	2015-05-07 14:14:44 UTC
 +++ src/network/ssl/qsslsocket_openssl.cpp
-@@ -267,9 +267,13 @@ init_context:
+@@ -222,8 +222,7 @@ QSslCipher QSslSocketBackendPrivate::QSslCipher_from_S
+             ciph.d->encryptionMethod = descriptionList.at(4).mid(4);
+         ciph.d->exportable = (descriptionList.size() > 6 && descriptionList.at(6) == QLatin1String("export"));
+ 
+-        ciph.d->bits = cipher->strength_bits;
+-        ciph.d->supportedBits = cipher->alg_bits;
++        ciph.d->bits = SSL_CIPHER_get_bits(cipher, &ciph.d->supportedBits);
+ 
+     }
+     return ciph;
+@@ -267,9 +266,13 @@ init_context:
  #endif
          break;
      case QSsl::SslV3:
@@ -17,7 +27,7 @@
      case QSsl::TlsV1SslV3: // SslV2 will be disabled below
      case QSsl::AnyProtocol:
      default:
-@@ -297,8 +301,10 @@ init_context:
+@@ -297,8 +300,10 @@ init_context:
  
      // Enable bug workarounds.
      long options;
@@ -28,4 +38,40 @@
 +        options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3;
      else
          options = SSL_OP_ALL;
+ 
+@@ -325,7 +330,7 @@ init_context:
+         options |= SSL_OP_NO_COMPRESSION;
+ #endif
+ 
+-    q_SSL_CTX_set_options(ctx, options);
++    SSL_CTX_set_options(ctx, options);
+ 
+     // Initialize ciphers
+     QByteArray cipherString;
+@@ -363,7 +368,7 @@ init_context:
+         //
+         // See also: QSslContext::fromConfiguration()
+         if (caCertificate.expiryDate() >= QDateTime::currentDateTime()) {
+-            q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle());
++            q_X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx), (X509 *)caCertificate.handle());
+         }
+     }
+ 
+@@ -659,13 +664,17 @@ void QSslSocketPrivate::resetDefaultCiphers()
+     STACK_OF(SSL_CIPHER) *supportedCiphers = q_SSL_get_ciphers(mySsl);
+     for (int i = 0; i < q_sk_SSL_CIPHER_num(supportedCiphers); ++i) {
+         if (SSL_CIPHER *cipher = q_sk_SSL_CIPHER_value(supportedCiphers, i)) {
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+             if (cipher->valid) {
++#endif
+                 QSslCipher ciph = QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(cipher);
+                 if (!ciph.isNull()) {
+                     if (!ciph.name().toLower().startsWith(QLatin1String("adh")))
+                         ciphers << ciph;
+                 }
++#if OPENSSL_VERSION_NUMBER < 0x10100005L
+             }
++#endif
+         }
+     }
  



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201810310229.w9V2T3nP056791>