New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add BIP70 deprecation warning and allow building GUI without BIP70 support #14451

Merged
merged 4 commits into from Oct 24, 2018

Conversation

Projects
None yet
@jameshilliard
Contributor

jameshilliard commented Oct 9, 2018

This is based off of #11622 and adds a deprecation warning when a BIP70 URL is used.

Rational:

  • BIP70 increases attack surface in multiple ways and is difficult for third party wallets to implement in a secure manner
  • Very few merchants use the standard BIP70 variant supported by Bitcoin Core
  • The one major payment processor that doesn't support BIP21 and currently uses a customized non-standard version of BIP70 has indicated that "Unfortunately the original BIP70 is not useful for us."
build: Add --disable-bip70 configure option
This patch adds a --disable-bip70 configure option that disables BIP70
payment request support. When disabled, this removes the dependency of
the GUI on OpenSSL and Protobuf.
@DrahtBot

This comment has been minimized.

Contributor

DrahtBot commented Oct 10, 2018

Reviewers, this pull request conflicts with the following ones:
  • #11625 (Add BitcoinApplication & RPCConsole tests by ryanofsky)

If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

@fanquake

This comment has been minimized.

Member

fanquake commented Oct 10, 2018

Concept ACK

1 similar comment
@TheBlueMatt

This comment has been minimized.

Contributor

TheBlueMatt commented Oct 10, 2018

Concept ACK

static void ReportInvalidCertificate(const QSslCertificate& cert)
{
#if QT_VERSION < 0x050000

This comment has been minimized.

@fanquake

fanquake Oct 10, 2018

Member

Can drop the Qt 5 check here, master now requires > 5.0

continue;
}
#if QT_VERSION >= 0x050000

This comment has been minimized.

@fanquake

fanquake Oct 10, 2018

Member

Can also remove the version check here

@MeshCollider

This comment has been minimized.

Member

MeshCollider commented Oct 10, 2018

Concept ACK

@MarcoFalke

This comment has been minimized.

Member

MarcoFalke commented Oct 10, 2018

I don't know enough of automake if this is possible, but could you please not link with SSL_LIBS when this flag is set? This way we'd get linker errors when new usage of the ssl libs are introduced.

@jameshilliard

This comment has been minimized.

Contributor

jameshilliard commented Oct 10, 2018

@MarcoFalke Something like this?

diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include
index dfc4903cf..1d70b79d4 100644
--- a/src/Makefile.qt.include
+++ b/src/Makefile.qt.include
@@ -419,8 +419,11 @@ endif
 if ENABLE_ZMQ
 qt_bitcoin_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
 endif
+if ENABLE_BIP70
+qt_bitcoin_qt_LDADD += $(SSL_LIBS) $(CRYPTO_LIBS)
+endif
 qt_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) \
-  $(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
+  $(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
   $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
 qt_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
 qt_bitcoin_qt_LIBTOOLFLAGS = $(AM_LIBTOOLFLAGS) --tag CXX
diff --git a/src/Makefile.qttest.include b/src/Makefile.qttest.include
index db7873e8b..d8bbb2851 100644
--- a/src/Makefile.qttest.include
+++ b/src/Makefile.qttest.include
@@ -68,9 +68,12 @@ endif
 if ENABLE_ZMQ
 qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
 endif
+if ENABLE_BIP70
+qt_test_test_bitcoin_qt_LDADD += $(SSL_LIBS) $(CRYPTO_LIBS)
+endif
 qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) \
   $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \
-  $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
+  $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \
   $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS)
 qt_test_test_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
 qt_test_test_bitcoin_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)
@MarcoFalke

This comment has been minimized.

Member

MarcoFalke commented Oct 10, 2018

I think CRYPTO_LIBS is always needed for the rng. Otherwise ACK if it compiles and links.

@Sjors

This comment has been minimized.

Member

Sjors commented Oct 10, 2018

Concept ACK, though if we can't agree on deprecation (commit 3a093dd), let's at least merge the other commits.

I'm fine with deprecation, less fine with actually removing it until there's a good alternative (e.g. w3c payment standard). If this deprecation goes into 0.18 then I assume it won't get removed earlier than 0.19. That gives us some time to see if a better standard is proposed, and/or if merchants move away from payment processors that mandate BIP70.

I don't like the current situation where there is a lot of uncertainty around BIP70, we don't use some of its features (like enforcing a fee, and submitting tx directly to merchant), where nobody is really maintaining this part of the code and it's dependencies (e.g. ancient protobuf library), and it's getting in the way of other goals like removing OpenSSL. Deprecation gives us flexibility here.

Warning currently reads:

You are using a BIP70 URL which will be unsupported in the future.

That wording works for me. It's important to make it clear that it's just the Bitcoin Core wallet deprecating support for this feature, not some universal decision to kill BIP-70. Release notes should make that distinction extra clear.

Can someone clarify in what way BitPay deviates from the BIP? I've used it multiple times with the Core wallet. Other than an error message at the end (and broken Tor support), it composes and broadcasts the transaction just fine.

Lightly tested 3a093dd on macOS.

When running ./configure --disable-wallet it should probably disable BIP70 too, like it does for --disable-gui. The deprecation warning shouldn't show when compiled without BIP70 support.

@jameshilliard

This comment has been minimized.

Contributor

jameshilliard commented Oct 10, 2018

Can someone clarify in what way BitPay deviates from the BIP?

Technically BitPay only requires BIP70 to decode the receiving address and amount for the transaction, you don't actually have to use a BIP70 compatible wallet at all if you use an external decoder, they mostly use BIP70 as a way to try and block manual address and transaction amount entry, some of their non-standard BIP70 features are problematic in other ways(I can go over details in private if you want).

@jnewbery

This comment has been minimized.

Member

jnewbery commented Oct 10, 2018

Concept ACK

The one major payment processor that doesn't support BIP21 and currently uses a customized non-standard version of BIP70 has indicated that "Unfortunately the original BIP70 is not useful for us."

Do you have a source for this?

@jameshilliard

This comment has been minimized.

Contributor

jameshilliard commented Oct 10, 2018

Do you have a source for this?

Stephen Pair(BitPay CEO) in an email exchange.

@sipa

This comment has been minimized.

Member

sipa commented Oct 11, 2018

Concept ACK

@gmaxwell

This comment has been minimized.

Member

gmaxwell commented Oct 12, 2018

Concept ACK.

@fanquake fanquake added this to the 0.18.0 milestone Oct 14, 2018

@jonasschnelli

This comment has been minimized.

Member

jonasschnelli commented Oct 16, 2018

Concept ACK

@gasteve

This comment has been minimized.

gasteve commented Oct 19, 2018

Can someone clarify in what way BitPay deviates from the BIP?

Technically BitPay only requires BIP70 to decode the receiving address and amount for the transaction, you don't actually have to use a BIP70 compatible wallet at all if you use an external decoder, they mostly use BIP70 as a way to try and block manual address and transaction amount entry, some of their non-standard BIP70 features are problematic in other ways(I can go over details in private if you want).

While we currently do allow a transaction to be sent only over p2p (and not posted back to the server), this is not something we want to support forever. We allow it for temporary backward compatibility (on the Bitcoin chain only) with a number of wallets that don't fully implement BIP70. I agree that bitcoind should remove BIP70.

Separately, I think consideration should be given to split out the wallet into a separate project and executable.

@luke-jr

This comment has been minimized.

Member

luke-jr commented Oct 19, 2018

IMO BIP70 should be made optional before a separate PR deprecates it.

@jameshilliard

This comment has been minimized.

Contributor

jameshilliard commented Oct 19, 2018

@luke-jr this just adds a warning message and makes BIP70 optional via a configure flag it doesn't remove it in default builds

@MarcoFalke

This comment has been minimized.

Member

MarcoFalke commented Oct 20, 2018

If the deprecation message is controversial, then maybe add it in a separate pull request?

@luke-jr

This comment has been minimized.

Member

luke-jr commented Oct 20, 2018

I don't think it's controversial, just a logically separate change. My comment is NOT intended to be a "NACK" or anything like it.

@wtogami

This comment has been minimized.

Contributor

wtogami commented Oct 20, 2018

I asked Luke. He clarified that he does not feel deprecation would be controversial because nobody uses BIP70. He only thinks that message should be in a different PR from the build-time option. That is a reasonable statement.

@laanwj

This comment has been minimized.

Member

laanwj commented Oct 20, 2018

yes, kill it with fire, please — concept ACK

@jameshilliard

This comment has been minimized.

Contributor

jameshilliard commented Oct 22, 2018

@MarcoFalke squashed

@Sjors

This comment has been minimized.

Member

Sjors commented Oct 23, 2018

@gasteve wrote:

While we currently do allow a transaction to be sent only over p2p

There's no way to prevent a wallet from broadcasting a transaction over p2p, so I'm not sure what you mean by "allow"?

@jameshilliard

This comment has been minimized.

Contributor

jameshilliard commented Oct 23, 2018

There's no way to prevent a wallet from broadcasting a transaction over p2p, so I'm not sure what you mean by "allow"?

That's not the case with copay....

@Sjors

This comment has been minimized.

Member

Sjors commented Oct 23, 2018

That's not the case with copay....

Individual wallets can do whatever they want, but the merchant has no way of knowing in advance that their customer is using any specific wallet, so I don't see how it's relevant to BIP 70.

@jnewbery

This comment has been minimized.

Member

jnewbery commented Oct 23, 2018

@Sjors - I think there's a miscommunication. The 'we' @gasteve is referring to is Bitpay. He's saying that they'll stop accepting payments broadcast on the Bitcoin p2p network.

In any case, the only reason #11622 was closed was to maintain compatibility with BitPay: #11622 (comment). The CEO has now confirmed that he agrees BIP70 support should be removed, so I don't think there's any remaining reason to not deprecate BIP70.

@Sjors

This comment has been minimized.

Member

Sjors commented Oct 24, 2018

@jnewbery "stop accepting" still doesn't make any sense. Does BitPay expect the customer to pay twice?

Deprecating (but not yet removing) BIP70 support is fine by me regardless. This level of confusion is one of the problems with the BIP70 standard I referred to above.

@MarcoFalke

This comment has been minimized.

Member

MarcoFalke commented Oct 24, 2018

utACK 48439b3 (Confirmed that I can build when protobuf is not installed)

@fanquake

This comment has been minimized.

Member

fanquake commented Oct 24, 2018

After merging this on top of 2e15fa1 I'm unable to build the gui without protobuf:

merge 14451
brew unlink protobuf
./autogen.sh && ./configure
...
checking for protobuf... no
configure: WARNING: libprotobuf not found; bitcoin-qt frontend will not be built
@laanwj

This comment has been minimized.

Member

laanwj commented Oct 24, 2018

utACK 48439b3

@laanwj laanwj merged commit 48439b3 into bitcoin:master Oct 24, 2018

laanwj added a commit that referenced this pull request Oct 24, 2018

Merge #14451: Add BIP70 deprecation warning and allow building GUI wi…
…thout BIP70 support

48439b3 Don't link SSL_LIBS with GUI unless BIP70 is enabled (James Hilliard)
fbb643d Add BIP70 deprecation warning (James Hilliard)
38b9850 qt: cleanup: Move BIP70 functions together in paymentserver (Wladimir J. van der Laan)
9dcf6c0 build: Add --disable-bip70 configure option (Wladimir J. van der Laan)

Pull request description:

  This is based off of #11622 and adds a deprecation warning when a BIP70 URL is used.

  Rational:

  - BIP70 increases attack surface in multiple ways and is difficult for third party wallets to implement in a secure manner
  - Very few merchants use the standard BIP70 variant supported by Bitcoin Core
  - The one major payment processor that doesn't support BIP21 and currently uses a customized non-standard version of BIP70 has indicated that "Unfortunately the original BIP70 is not useful for us."

Tree-SHA512: 1e16ee8d2cdac9499f751ee7b50d058278150f9e38a87a47ddb5105dd0353cdedabe462903f54ead6209b249b249fe5e6a10d29631531be27400f2f69c25b9b9
@MarcoFalke

This comment has been minimized.

Member

MarcoFalke commented Oct 24, 2018

@fanquake The default is to build with bip70, so you'd have to do ./configure --disable-bip70 after unlink of protobuf.

@jnewbery

This comment has been minimized.

Member

jnewbery commented Oct 24, 2018

Needs release notes for the new configure option

@DrahtBot

This comment has been minimized.

Contributor

DrahtBot commented Oct 24, 2018

Gitian builds for commit e895fdc (master):

Gitian builds for commit dd9eb3a (master and this pull):

@jameshilliard jameshilliard deleted the jameshilliard:deprecate-bip70 branch Oct 24, 2018

@MarcoFalke

This comment has been minimized.

Member

MarcoFalke commented Oct 25, 2018

Windows cross build fails with:

  OBJCXXLD qt/bitcoin-qt.exe
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x4e1): undefined reference to `SSL_accept'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x4f1): undefined reference to `SSL_clear'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x501): undefined reference to `SSL_CIPHER_description'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x511): undefined reference to `SSL_CIPHER_get_bits'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x521): undefined reference to `SSL_connect'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x531): undefined reference to `SSL_CTX_check_private_key'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x541): undefined reference to `SSL_CTX_ctrl'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x551): undefined reference to `SSL_CTX_free'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x561): undefined reference to `SSL_CTX_new'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x571): undefined reference to `SSL_CTX_set_cipher_list'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x581): undefined reference to `SSL_CTX_set_default_verify_paths'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x591): undefined reference to `SSL_CTX_set_verify'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x5a1): undefined reference to `SSL_CTX_set_verify_depth'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x5b1): undefined reference to `SSL_CTX_use_certificate'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x5c1): undefined reference to `SSL_CTX_use_certificate_file'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x5d1): undefined reference to `SSL_CTX_use_PrivateKey'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x5e1): undefined reference to `SSL_CTX_use_RSAPrivateKey'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x5f1): undefined reference to `SSL_CTX_use_PrivateKey_file'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x601): undefined reference to `SSL_CTX_get_cert_store'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x611): undefined reference to `SSL_free'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x621): undefined reference to `SSL_get_ciphers'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x631): undefined reference to `SSL_get_current_cipher'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x641): undefined reference to `SSL_version'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x651): undefined reference to `SSL_get_error'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x661): undefined reference to `SSL_get_peer_cert_chain'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x671): undefined reference to `SSL_get_peer_certificate'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x681): undefined reference to `SSL_get_verify_result'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x691): undefined reference to `SSL_library_init'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x6a1): undefined reference to `SSL_load_error_strings'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x6b1): undefined reference to `SSL_new'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x6c1): undefined reference to `SSL_ctrl'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x6d1): undefined reference to `SSL_read'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x6e1): undefined reference to `SSL_set_bio'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x6f1): undefined reference to `SSL_set_accept_state'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x701): undefined reference to `SSL_set_connect_state'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x711): undefined reference to `SSL_shutdown'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x721): undefined reference to `SSL_set_session'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x731): undefined reference to `SSL_SESSION_free'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x741): undefined reference to `SSL_get1_session'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x751): undefined reference to `SSL_get_session'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x761): undefined reference to `SSL_get_ex_new_index'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x771): undefined reference to `SSL_set_ex_data'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x781): undefined reference to `SSL_get_ex_data'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x791): undefined reference to `SSL_set_psk_client_callback'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x7a1): undefined reference to `SSL_set_psk_server_callback'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x7b1): undefined reference to `SSL_CTX_use_psk_identity_hint'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x7c1): undefined reference to `SSLv3_client_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x7d1): undefined reference to `SSLv23_client_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x7e1): undefined reference to `TLSv1_client_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x7f1): undefined reference to `TLSv1_1_client_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x801): undefined reference to `TLSv1_2_client_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x811): undefined reference to `SSLv3_server_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x821): undefined reference to `SSLv23_server_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x831): undefined reference to `TLSv1_server_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x841): undefined reference to `TLSv1_1_server_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x851): undefined reference to `TLSv1_2_server_method'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0x861): undefined reference to `SSL_write'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0xac1): undefined reference to `SSL_CTX_load_verify_locations'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0xaf1): undefined reference to `i2d_SSL_SESSION'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0xb01): undefined reference to `d2i_SSL_SESSION'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0xb11): undefined reference to `SSL_select_next_proto'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0xb21): undefined reference to `SSL_CTX_set_next_proto_select_cb'
/home/ubuntu/build/bitcoin/depends/i686-w64-mingw32/share/../lib/libQt5Network.a(qsslsocket_openssl_symbols.o):qsslsocket_openssl_symbols.cpp:(.text+0xb31): undefined reference to `SSL_get0_next_proto_negotiated'
collect2: error: ld returned 1 exit status
Makefile:3927: recipe for target 'qt/bitcoin-qt.exe' failed
make[2]: *** [qt/bitcoin-qt.exe] Error 1
make[2]: Leaving directory '/home/ubuntu/build/bitcoin/distsrc-i686-w64-mingw32/src'
Makefile:10249: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/ubuntu/build/bitcoin/distsrc-i686-w64-mingw32/src'
Makefile:774: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
@jameshilliard

This comment has been minimized.

Contributor

jameshilliard commented Oct 25, 2018

I've made a follow up PR #14564 which disables BIP70 instead of the GUI when protobuf is missing.

@MarcoFalke Is that with bip70 enabled or disabled?

@MarcoFalke

This comment has been minimized.

Member

MarcoFalke commented Oct 25, 2018

This is the gitian build, so the default option is used (enabled)

@MarcoFalke

This comment has been minimized.

@jameshilliard

This comment has been minimized.

Contributor

jameshilliard commented Oct 25, 2018

Weird, I see no obvious cause of that error, is it possible there's a bad cached version of qt?

@MarcoFalke

This comment has been minimized.

Member

MarcoFalke commented Oct 25, 2018

Indeed weird, travis should have failed because it mimics the gitian cross build with its out of tree build...

@ken2812221

This comment has been minimized.

Member

ken2812221 commented Oct 25, 2018

@MarcoFalke travis-ci does not build qt binaries for Windows. #13515 enable it, but it's a little bit complicate.

MarcoFalke added a commit that referenced this pull request Oct 26, 2018

Merge #14568: build: Fix Qt link order for Windows build
fbaccbf build: Fix Qt link order for Windows build (Chun Kuan Lee)

Pull request description:

  See #14451 (comment)

Tree-SHA512: 819e68dc750297a74d04aa1ad3dae64072b66df718d36b950bd9430c9fca1771c611af934df23954f81b83bd89f96ea76c20cbf17db1364b988a6c34c43fb631
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment