Commit graph

18220 commits

Author SHA1 Message Date
Glenn Willen
ff56bb9b44 Add regression test for PSBT signing bug #14473
Github-Pull: #14588
Rebased-From: e13fea975d
2018-12-03 10:37:22 -08:00
Glenn Willen
db445d4e5a Refactor PSBTInput signing to enforce invariant
Refactor the process of PSBTInput signing to enforce the invariant that
a PSBTInput always has _either_ a witness_utxo or a non_witness_utxo,
never both.

This simplifies the logic of SignPSBTInput slightly, since it no longer
has to deal with the "both" case. When calling it, we now give it, in
order of preference: (1) whichever of the utxo fields was already
present in the PSBT we received, or (2) if neither, the
non_witness_utxo field, which is just a copy of the input transaction,
which we get from the wallet.

SignPSBTInput no longer has to remove one of the two fields; instead, it
will check if we have a witness signature, and if so, it will replace
the non_witness_utxo with the witness_utxo (which is smaller, as it is
just a copy of the output being spent.)

Add PSBTInput::IsSane checks in two more places, which checks for
both utxo fields being present; we will now give an RPC error early on
if we are supplied such a malformed PSBT to fill in.

Also add a check to FillPSBT, to avoid touching any input that is
already signed. (This is now redundant, since we should no longer
potentially harm an already-signed input, but it's harmless.)

fixes #14473

Github-Pull: #14588
2018-12-03 10:37:08 -08:00
Glenn Willen
ad94165db9 Simplify arguments to SignPSBTInput
Remove redundant arguments to SignPSBTInput -- since it needs several
bits of the PartiallySignedTransaction, pass in a reference instead of
doing it piecemeal. This saves us having to pass in both a PSBTInput and
its index, as well as having to pass in the CTransaction. Also avoid
redundantly passing the sighash_type, which is contained in the
PSBTInput already.

Github-Pull: #14588
Rebased-From: 0f5bda2bd9
2018-12-03 10:36:37 -08:00
Glenn Willen
39ece4fc28 Add bool PSBTInputSigned
Refactor out a "PSBTInputSigned" function to check if a PSBT is signed,
for use in subsequent commits.

Also improve a related comment.

GitHub-Pull: #14588
Rebased-From: 53e6fffb8f
2018-12-03 10:36:08 -08:00
Glenn Willen
70ee1f8709 New PartiallySignedTransaction constructor from CTransction
New constructor that creates a PartiallySignedTransaction from a
CTransaction, automatically sizing the inputs and outputs vectors for
convenience.

Github-Pull: #14588
Rebased-From: 65166d4cf8
2018-12-03 10:35:34 -08:00
Glenn Willen
a9eab081d5 Remove redundant txConst parameter to FillPSBT
Github-Pull: #14588
Rebased-From: 4f3f5cb4b1
2018-12-03 10:34:57 -08:00
Glenn Willen
cfdd6b2f6c More concise conversion of CDataStream to string
Use .str() instead of .data() and .size() when converting CDataStream to
a string. Uses std::string, avoiding conversion to a C string.

Github-Pull: #14588
Rebased-From: fe5d22bc67
2018-12-03 10:34:20 -08:00
Andrew Chow
a3fe125490 check that a separator is found for psbt inputs, outputs, and global map
Github-Pull: #14377
Rebased-From: 4fb3388db9
2018-12-03 10:32:58 -08:00
MarcoFalke
3362a95be3
Merge #14196: [0.17][psbt] always drop the unnecessary utxo and convert non-witness utxo to witness when necessary
fcefc6851a Convert non-witness UTXOs to witness if witness sig created (Andrew Chow)
fcdea8ad2a Drop the unnecessary UTXO based on the UTXOs present, not on earlier wallet things (Andrew Chow)

Pull request description:

  When we sign an input in a psbt that has a non-witness utxo but a witness signature is produced, we will now replace the non-witness utxo with the corresponding witness utxo. Furthermore, we should make sure that the correct UTXO type is used based on what UTXOs are there, not based on earlier wallet behavior.

  Note that this is PR'd to the 0.17 branch because the code here no longer exists in master.

Tree-SHA512: 882e9e4e9b77d6ac1743c35c0d59023aad6f4f19193398f97f2c6b81f6627d74e5220b1d674a0edba1ff2fc2a7f61afbf838d3faf0a964fccd3dee97c631aa47
2018-12-01 12:31:14 -05:00
MarcoFalke
924cf794e1
Merge #14851: [backport] fix assert crash when specified change output spend size is unknown
2a5cc40dc4 CreateTransaction: Assume minimum p2sh-p2wpkh spend size for unknown change (Gregory Sanders)
53dcf2b407 Remove stale comment in CalculateMaximumSignedInputSize (Gregory Sanders)

Pull request description:

  backport of #14380

Tree-SHA512: 42e261bd797d1938f8e041ccd10073ecd1d72695e2e4ce322e5a3ce262647e32108b01dde73361b6d2ac36438522ab3c4cd58ca072194f25011132437430cd27
2018-11-30 16:09:53 -05:00
MarcoFalke
252844329f
Merge #14852: 0.17 backport: [tests] Add wallet_balance.py
67225e2fd7 [tests] Add wallet_balance.py (John Newbery)

Pull request description:

Tree-SHA512: 5a8707ddc7e11ac0b7b7dc27a73668acc7ff53f832d94a85930a28329ec5271da2b469e2b51d66746fa6ab54aa0221d49d215ec3434ea619352fcbacbb252883
2018-11-30 11:50:20 -05:00
John Newbery
67225e2fd7 [tests] Add wallet_balance.py
Adds a test specifically to test the wallet's getbalance and
getunconfirmedbalance RPCs.

Github-Pull: #14845
Rebased-From: c1825b9d39
2018-11-30 11:25:20 -05:00
Gregory Sanders
2a5cc40dc4 CreateTransaction: Assume minimum p2sh-p2wpkh spend size for unknown change 2018-11-30 11:08:41 -05:00
Gregory Sanders
53dcf2b407 Remove stale comment in CalculateMaximumSignedInputSize 2018-11-30 11:08:35 -05:00
MarcoFalke
d8bc0ce1da
Merge #14835: [0.17] Further Backports
f9db08e8ca qa: Avoid race in p2p_invalid_block by waiting for the block request (MarcoFalke)
79358817e5 Add SAFE_CHARS[SAFE_CHARS_URI]: Chars allowed in URIs (RFC 3986) (practicalswift)
9666dbaf09 rpc: Make HTTP RPC debug logging more informative (practicalswift)
b90157891a add test demonstrating addrLocal UB (Kaz Wesley)
6f04264bbb fix uninitialized read when stringifying an addrLocal (Kaz Wesley)
5782fdcd8c Throw error if CPubKey is invalid during PSBT keypath serialization (Gregory Sanders)
de5e48a461 Bugfix: RPC: Add address_type named param for createmultisig (Luke Dashjr)
df5131bd41 gui: explicitly disable "Dark Mode" appearance on macOS (fanquake)

Pull request description:

  Backports #14593, #14596, #14618, #14690 and #14728 to the 0.17 branch.

Tree-SHA512: fcda4b75fcb71bb80cc8bde2a2b98ff5c0239dfa754ac980b1a91a90409502ac7678326399a4fc03a773074339dbf8b3d11750c91fe4302741a954745acfcca1
2018-11-30 10:39:27 -05:00
MarcoFalke
f9db08e8ca
qa: Avoid race in p2p_invalid_block by waiting for the block request
Github-Pull: #14700
Rebased-From: fa21568208
2018-11-30 22:40:57 +08:00
practicalswift
79358817e5
Add SAFE_CHARS[SAFE_CHARS_URI]: Chars allowed in URIs (RFC 3986)
Github-Pull: #14618
Rebased-From: ab8c6f24d2
2018-11-29 18:34:58 +08:00
practicalswift
9666dbaf09
rpc: Make HTTP RPC debug logging more informative
Github-Pull: #14618
Rebased-From: 991248649b
2018-11-29 18:34:15 +08:00
Kaz Wesley
b90157891a
add test demonstrating addrLocal UB
Github-Pull: #14728
Rebased-From: 8ebbef0169
2018-11-29 18:32:48 +08:00
Kaz Wesley
6f04264bbb
fix uninitialized read when stringifying an addrLocal
Reachable from either place where SetIP is used when our best-guess
addrLocal for a peer is IPv4, but the peer tells us it's reaching us at
an IPv6 address.

In that case, SetIP turns an IPv4 address into an IPv6 address without
setting the scopeId, which is subsequently read in GetSockAddr during
CNetAddr::ToStringIP and passed to getnameinfo. Fix by ensuring every
constructor initializes the scopeId field with something.

Github-Pull: #14728
Rebased-From: b7b36decaf
2018-11-29 18:32:05 +08:00
Gregory Sanders
5782fdcd8c
Throw error if CPubKey is invalid during PSBT keypath serialization
Github-Pull: #14690
Rebased-From: 4e4de10f69
2018-11-29 11:51:47 +08:00
Luke Dashjr
de5e48a461
Bugfix: RPC: Add address_type named param for createmultisig
Github-Pull: #14596
Rebased-From: d8bf1071cf
2018-11-29 11:50:17 +08:00
fanquake
df5131bd41
gui: explicitly disable "Dark Mode" appearance on macOS
Github-Pull: #14593
Rebased-From: cf2f4306fe
2018-11-29 11:43:20 +08:00
MarcoFalke
9f556622c5
Merge #14328: [0.17] Backports
542651cfb4 travis: Remove deprecated sudo (MarcoFalke)
ec71f06a8d build: Add bitcoin-tx.exe into Windows installer (Chun Kuan Lee)
7edebedef1 build: Remove illegal spacing in darwin.mk (Jon Layton)
fb9ad043f8 Fix listreceivedbyaddress not taking address as a string (Eric Scrivner)
91fa15aaeb wallet: Avoid potential use of unitialized value bnb_used in CWallet::CreateTransaction(...) (practicalswift)
96f15e8bb3 Tests: Fix a comment (fridokus)
60f7a97930 qa: Add test to ensure node can generate all help texts at runtime (MarcoFalke)
2f9fd29321 disallow oversized CBlockHeaderAndShortTxIDs (Kaz Wesley)
5331ad0506 fix a deserialization overflow edge case (Kaz Wesley)
94065024c7 add a test demonstrating an overflow in a deserialization edge case (Kaz Wesley)
85aacc41ba Add autogen.sh in ARM Cross-compilation (Walter)
bb90695551 [wallet] Ensure wallet is unlocked before signing (gustavonalle)

Pull request description:

Tree-SHA512: d82813134e5fc5437fe690127a4701d7ba66bf27799d7ecb1fbc2cc4dd81b6b3f708c1f314b725e8a3a6525ffa388299e277157f784f762256e01afb24822b25
2018-11-28 15:58:18 -05:00
MarcoFalke
542651cfb4 travis: Remove deprecated sudo 2018-11-28 15:35:05 -05:00
Chun Kuan Lee
ec71f06a8d build: Add bitcoin-tx.exe into Windows installer
Github-Pull: #14698
Rebased-From: 5c5902acc5
2018-11-28 15:35:05 -05:00
Jon Layton
7edebedef1 build: Remove illegal spacing in darwin.mk
Github-Pull: #14647
Rebased-From: 63c74d2d3a
2018-11-28 15:35:05 -05:00
Eric Scrivner
fb9ad043f8 Fix listreceivedbyaddress not taking address as a string
Fixes #14173. Add the patch in #14173 and include a regression test.

Github-Pull: #14417
Rebased-From: d4d70eda33
2018-11-28 15:35:05 -05:00
practicalswift
91fa15aaeb wallet: Avoid potential use of unitialized value bnb_used in CWallet::CreateTransaction(...)
Github-Pull: #13546
Rebased-From: a23a7f60aa
2018-11-28 15:35:05 -05:00
fridokus
96f15e8bb3 Tests: Fix a comment
Github-Pull: #14632
Rebased-From: 086fc83571
2018-11-28 15:35:05 -05:00
MarcoFalke
60f7a97930 qa: Add test to ensure node can generate all help texts at runtime
Github-Pull: #14658
Rebased-From: bbbbb3f885
2018-11-28 15:35:05 -05:00
Kaz Wesley
2f9fd29321 disallow oversized CBlockHeaderAndShortTxIDs
Otherwise we'd reply with a bogus BlockTransactionsRequest trying to
request indexes with overflowed deltas.

Github-Pull: #14685
Rebased-From: b08af10fb2
2018-11-28 15:35:05 -05:00
Kaz Wesley
5331ad0506 fix a deserialization overflow edge case
A specially-constructed BlockTransactionsRequest can overflow in
deserialization in a way that is currently harmless.

Github-Pull: #14685
Rebased-From: 6bed4b374d
2018-11-28 15:35:05 -05:00
Kaz Wesley
94065024c7 add a test demonstrating an overflow in a deserialization edge case
Also add a test that the highest legal index is accepted.

Github-Pull: #14685
Rebased-From: 051faf7e9d
2018-11-28 15:35:05 -05:00
Walter
85aacc41ba Add autogen.sh in ARM Cross-compilation
autogen for the config files was missing.

Github-Pull: #14276
Rebased-From: 52beb9ed88
2018-11-28 15:35:05 -05:00
gustavonalle
bb90695551 [wallet] Ensure wallet is unlocked before signing
Github-Pull: #14310
Rebased-From: db15805668
2018-11-28 15:35:05 -05:00
Wladimir J. van der Laan
5150accdd2
Merge #14441: [wallet] Backport(0.17): Restore ability to list incoming transactions by label
89306ab0df [wallet] Restore ability to list incoming transactions by label (Russell Yanofsky)

Pull request description:

  Backport of PR #14411 to v0.17.

  This change partially reverts #13075 and #14023.

  Fixes #14382

Tree-SHA512: 1f8300e1a79e826cd706561265b8788deef505fa510be1a76ed9a62e5fca37cf6a741423ac0e5de2a36d6e8b9f25f141885455aacacbbf6474814e6eae406a27
2018-11-10 12:45:44 +01:00
Wladimir J. van der Laan
1e49fe450d
doc: Clean out release notes after 0.17.0.1
Tree-SHA512: c04192e3b93537f4b37f5ea55fd455b26dd7d902da3b5f8b59ef6fa4590cf413b72fc11bba330a8fd7fa3938b09e6c1d35171806ab5ce85d6b99681953c291a5
2018-11-06 09:43:57 +01:00
Wladimir J. van der Laan
b0e88b8914
Merge #14666: qt: Revert "Force TLS1.0+ for SSL connections" (0.17)
0242b5afa4 qt: Revert "Force TLS1.0+ for SSL connections" (Tim Ruffing)

Pull request description:

  backports #14403 which fixes a crash on FC29

Tree-SHA512: 71a34b13202c834c5ca73bcb9b70efff26c34e1aac3b954f098620b62c2be53a8e319929c4764a5b5cc5d0dd163ff70f4eb3a4f1f608363b7d23d1b16b25ddc7
2018-11-06 09:16:49 +01:00
Tim Ruffing
0242b5afa4
qt: Revert "Force TLS1.0+ for SSL connections"
This reverts commit 15e26a6a9a, whose
purpose was to tweak the Qt configuration to force TLS, i.e., to
disable SSLv3, in Qt versions >= 5.5. However, the default behavior
of Qt >= 5.4 is to disable SSLv3 anyway [1], so the configuration
tweak is redundant.

With Qt 5.11.2, the configuration tweak is not only redundant but in
fact provokes a deadlock (#14359) due to Qt 5.11.2 being incompatible
with OpenSSL 1.1.1 [2]. Since the deadlock occurs at the early startup
stage of bitcoin-qt, it renders bitcoin-qt entirely non-functional
when compiled against OpenSSL 1.1.1 and Qt 5.11.2 (and possible future
combinations of OpenSSL and Qt versions).

This commit fixes #14359 by removing the redundant code.

[1] https://code.qt.io/cgit/qt/qtbase.git/commit/?id=3fd2d9eff8c1f948306ee5fbfe364ccded1c4b84
[2] https://bugreports.qt.io/browse/QTBUG-70956

Github-Pull: #14403
Rebased-From: 7d173c4cd1
Tree-SHA512: 71a34b13202c834c5ca73bcb9b70efff26c34e1aac3b954f098620b62c2be53a8e319929c4764a5b5cc5d0dd163ff70f4eb3a4f1f608363b7d23d1b16b25ddc7
2018-11-06 09:03:28 +01:00
MarcoFalke
9e87d82e7f
Merge #14589: Docs/Release notes: 0.17.0.1 is a minor release
f046d846ae Docs/Release notes: 0.17.0.1 is a minor release (David A. Harding)

Pull request description:

  Suggested by @jnewbery in https://github.com/bitcoin-core/bitcoincore.org/pull/624#pullrequestreview-169055865

Tree-SHA512: 7e3068febaaf13cc31ef48e56ac7c36450fb1fb115e9940af603bb7cb740e93702e69be0eaaf06ff19866837bf29b4f08c1d9e3e55d98a65746a89a0dcab2b69
2018-10-28 06:48:16 -04:00
MarcoFalke
76dd5257f9
Merge #14566: 0.17: qa backports
9461f98c53 Disable wallet and address book Qt tests on macOS minimal platform (Russell Yanofsky)
703a24418c descriptors.md: Refer to descriptors as describing instead of matching (Russell Yanofsky)
5f51fd6d59 doc/descriptors.md tweaks (Russell Yanofsky)
29899ecd36 Import CInv from correct module (Chun Kuan Lee)
f7adb32e38 qa: Run all tests even if wallet is not compiled (MarcoFalke)
86fadee990 qa: Premine to deterministic address with -disablewallet (MarcoFalke)
8bc1badada Test rpc_help.py failed: Check whether ZMQ is enabled or not. (Kvaciral)
24d796a6cc test: Add tests for RPC help (João Barbosa)
168efeaca6 qa: Use named args in some tests (MarcoFalke)
73e538cf6a scripted-diff: Use named arguments in feature_block (MarcoFalke)
96dc936862 scripted-diff: Pass node into p2p_segwit acceptance tests (MarcoFalke)
7ff32a6b98 qa: Add some actual witness in rpc_rawtransaction (MarcoFalke)
b72fbabe17 [qa] Use correct python index slices in example test (Suhas Daftuar)
06544faff0 qa: Add TestNode::assert_debug_log (MarcoFalke)

Pull request description:

  Just the test and doc changes from #14328 to prevent that one from piling up.

Tree-SHA512: 51c1e66d346cbf51bc67b2f365448620dd9992ba4ef70592c5eb489cd50a047dab8179c86db2cafe161d8b2aa04498cc760fb5deb7eef49b39272911c74227a9
2018-10-28 06:44:08 -04:00
David A. Harding
f046d846ae
Docs/Release notes: 0.17.0.1 is a minor release 2018-10-27 12:20:43 -04:00
Wladimir J. van der Laan
1476554d3b
Merge #14576: Release 0.17.0.1
dc4923a71b build: Bump version for 0.17.0.1 (Wladimir J. van der Laan)
248e5ec348 doc: Update release notes for 0.17.0.1 (Wladimir J. van der Laan)

Pull request description:

  Update release notes and bump version

Tree-SHA512: b1c3f77150d89450735c2a82cb5d859b11e7463cc3370c46f847a6f7b22318114cf4d3254eb3f6b15dc7204bc43d052781f97d02ef5a76d102d5d42a762be964
2018-10-26 12:01:33 +02:00
MarcoFalke
f13041f17b
Merge #14579: [0.17] travis: Pin flake8 version to 3.5.0
f9fc08c5f8 travis: Pin flake8 version to 3.5.0 (fanquake)

Pull request description:

  Pin flake8 version to 3.5.0 to fix the linters.

Tree-SHA512: 4f06d0aacbdfbbc6d090790aeea5185f2a61259381e586f4015bc0f8c0d0c8fec6156343a9587b8605bc776b39c080bd6584e6e9b685eaba3d90a58c726ac469
2018-10-25 22:09:50 -04:00
fanquake
f9fc08c5f8
travis: Pin flake8 version to 3.5.0 2018-10-26 09:47:51 +08:00
Wladimir J. van der Laan
dc4923a71b build: Bump version for 0.17.0.1 2018-10-26 01:24:38 +02:00
Wladimir J. van der Laan
248e5ec348 doc: Update release notes for 0.17.0.1 2018-10-25 22:55:23 +02:00
Jonas Schnelli
eb2cc84a31
[macOS] Remove DS_Store WindowBounds bytes object
Github-Pull: #14416
Rebased-From: 43719e0a34
Tree-SHA512: 0b5987abf34a8c62c3f704c4ca3c9837a23fbce11954740461833099157db94418886001993f9f1a0b3252c923bd049bc1e1d0f99d04205c889270755a8cd245
2018-10-25 15:49:36 +02:00
Russell Yanofsky
9461f98c53 Disable wallet and address book Qt tests on macOS minimal platform
macOS Qt minimal platform is frequently broken, and these are currently failing
with Qt 5.11.1.

The tests do pass when run on the full cocoa platform
(with `test_bitcoin-qt -platform cocoa`).

Github-Pull: #14011
Rebased-From: a3197c5294
2018-10-24 22:03:20 -04:00