aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-03-10qa: Add getdescriptorinfo functional testJoão Barbosa
2020-03-09Merge #18176: tests: Add fuzzing harness for CScript and CScriptNum operationsMarcoFalke
e37f53648e3acc6aea75adafec4de2bdbd8cb293 Make lifetime correctness easier to see (avoid reference lifetime extension) (practicalswift) e7ddbd98937412b2e8b7a3dfacdcacfcbb1d9148 tests: Add fuzzing harness for CScriptNum operations (practicalswift) 65a52a002475056183ea8ee1a42b78aec7d68583 tests: Add fuzzing harness for CScript operations (practicalswift) eb7c50ca1f4eafed4bb9a20d3012776545a6a433 tests: Add common Consume* fuzzing functions (practicalswift) Pull request description: Add fuzzing harness for `CScript` and `CScriptNum` operations. Test this PR using: ``` $ make distclean $ ./autogen.sh $ CC=clang CXX=clang++ ./configure --enable-fuzz \ --with-sanitizers=address,fuzzer,undefined $ make $ src/test/fuzz/script_ops … $ src/test/fuzz/scriptnum_ops … ``` ACKs for top commit: MarcoFalke: ACK e37f53648e3acc6aea75adafec4de2bdbd8cb293 🦂 Tree-SHA512: 5165d918ffe3f1e3e85ab0e61d8b05934f682d324cf63ce188da5890899df2b5727aba9ed10c0437260ecff8055250e60c79d81d764bc740a7652d543a7c5fa3
2020-03-09Make lifetime correctness easier to see (avoid reference lifetime extension)practicalswift
2020-03-09tests: Add fuzzing harness for CScriptNum operationspracticalswift
2020-03-09Merge #18306: test: add logging to wallet_listsinceblock.pyMarcoFalke
d484279a46fe2cd5e133b6c18a1e00f802084772 test: add logging to wallet_listsinceblock.py (Jon Atack) Pull request description: This is the first commit from #17535. Top commit has no ACKs. Tree-SHA512: bb4f527a41bca3ffbf69e910311ce7f85dcc7a2be41350b3c653a27f4044f392b7e528f330e9691f497212469f6b16ce263230bb7a919548dd4e3e21cc72142f
2020-03-09test: add logging to wallet_listsinceblock.pyJon Atack
2020-03-10Merge #18115: wallet: Pass in transactions and messages for signing instead ↵Samuel Dobson
of exporting the private keys d2774c09cfcc6c5c967d40bb094eabc8c0bdb6bf Clear any input_errors for an input after it is signed (Andrew Chow) dc174881ad8498a6905ba282a48077bc5c8037a7 Replace GetSigningProvider with GetSolvingProvider (Andrew Chow) 6a9c429084b40356aa36aa67992da35f61c2f6a2 Move direct calls to MessageSign into new SignMessage functions in CWallet and ScriptPubKeyMan (Andrew Chow) 82a30fade70a2a95c2bbeac4aa06dafda600479d Move key and script filling and signing from CWallet::FillPSBT to ScriptPubKeyMan::FillPSBT (Andrew Chow) 3d70dd99f9f74eef70b19ff6f6f850adc0d5ef8f Move FillPSBT to be a member of CWallet (Andrew Chow) a4af324d15c1ee43c2abd11a304ae18c7ee82eb0 Use CWallet::SignTransaction in CreateTransaction and signrawtransactionwithwallet (Andrew Chow) f37de927442d3f024926a66c436d59e391c8696a Implement CWallet::SignTransaction using ScriptPubKeyMan::SignTransaction (Andrew Chow) d999dd588cab0ff479bc7bee8c9fc33880265ec6 Add SignTransaction function to ScriptPubKeyMan and LegacyScriptPubKeyMan (Andrew Chow) 2c52b59d0a44a86d94fee4e437978d822862c542 Refactor rawtransaction's SignTransaction into generic SignTransaction function (Andrew Chow) Pull request description: Following #17261, the way to sign transactions, PSBTs, and messages was to use `GetSigningProvider()` and get a `SigningProvider` containing the private keys. However this may not be feasible for future `ScriptPubKeyMan`s, such as for hardware wallets. Instead of exporting a `SigningProvider` containing private keys, we need to pass these things into the `ScriptPubKeyMan` (via `CWallet`) so that they can do whatever is needed internally to sign them. This is largely a refactor as the logic of processing transactions, PSBTs, and messages for is moved into `LegacyScriptPubKeyMan` and `CWallet` instead of being handled by the caller (e.g. `signrawtransaction`). To help with this, I've refactored the 3(!) implementations of a `SignTransaction()` function into one generic one. This function will be called by `signrawtransactionwithkey` and `LegacyScriptPubKeyMan::SignTransaction()`. `CWallet::CreateTransaction()` is changed to call `CWallet::SignTransaction()` which in turn, calls `LegacyScriptPubKeyMan::SignTransaction()`. Other `ScriptPubKeyMan`s may implement `SignTransaction()` differently. `FillPSBT()` is moved to be a member function of `CWallet` and the `psbtwallet.cpp/h` files removed. It is further split so that `CWallet` handles filling the UTXOs while the `ScriptPubKeyMan` handles adding keys, derivation paths, scripts, and signatures. In the end `LegacyScriptPubKeyMan::FillPSBT` still calls `SignPSBTInput`, but the `SigningProvider` is internal to `LegacyScriptPubKeyMan`. Other `ScriptPubKeyMan`s may do something different. A new `SignMessage()` function is added to both `CWallet` and `ScriptPubKeyMan`. Instead of having the caller (i.e. `signmessage` or the sign message dialog) get the private key, hash the message, and sign, `ScriptPubKeyMan` will now handle that (`CWallet` passes through to the `ScriptPubKeyMan`s as it does for many functions). This signing code is thus consolidated into `LegacyScriptPubKeyMan::SignMessage()`, though other `ScriptPubKeyMan`s may implement it differently. Additionally, a `SigningError` enum is introduced for the different errors that we expect to see from `SignMessage()`. Lastly, `GetSigningProvider()` is renamed to `GetPublicSigningProvider()`. It will now only provide pubkeys, key origins, and scripts. `LegacySigningProvider` has it's `GetKey` and `HaveKey` functions changed to only return false. Future implementations should return `HidingSigningProvider`s where private keys are hidden. Other things like `dumpprivkey` and `dumpwallet` are not changed because they directly need and access the `LegacyScriptPubKeyMan` so are not relevant to future changes. ACKs for top commit: instagibbs: reACK https://github.com/bitcoin/bitcoin/pull/18115/commits/d2774c09cfcc6c5c967d40bb094eabc8c0bdb6bf Sjors: re-utACK d2774c09cfcc6c5c967d40bb094eabc8c0bdb6bf meshcollider: re-utACK d2774c09cfcc6c5c967d40bb094eabc8c0bdb6bf Tree-SHA512: 89c83e7e7e9315e283fae145a2264648a9d7f7ace8f3281cb3f44f0b013c988d67ba4fa9726e50c643c0ed921bdd269adaec984840d11acf4a681f3e8a582cc1
2020-03-09Merge #18303: doc: Add historical release notes for 0.19.1Wladimir J. van der Laan
46a1ee7732550956a5db35f9a5cb87530b6cff43 doc: Add historical release notes for 0.19.1 (Wladimir J. van der Laan) Pull request description: Top commit has no ACKs. Tree-SHA512: 9ff578fbaec5694d63256d65cbe7e9d0ba99ac50803c8192f9b5e90a614dc89778bdb17b03f5f7725397f820e085e7d704deb1d6a58b18cd4e4fc91ea413b6ae
2020-03-09tests: Add fuzzing harness for CScript operationspracticalswift
2020-03-09tests: Add common Consume* fuzzing functionspracticalswift
2020-03-09Merge #18047: tests: Add basic fuzzing harness for CNetAddr/CService/CSubNet ↵MarcoFalke
related functions (netaddress.h) 6590395f6047cbfbe29f491d816c25c9a28d23a2 tests: Remove FUZZERS_MISSING_CORPORA (practicalswift) 815c7a679316e34b2072a45949ad4ecb1ae1c7fb tests: Add basic fuzzing harness for CNetAddr/CService/CSubNet related functions (netaddress.h) (practicalswift) Pull request description: Add basic fuzzing harness for `CNetAddr`/`CService`/`CSubNet` related functions (`netaddress.h`). To test this PR: ``` $ make distclean $ ./autogen.sh $ CC=clang CXX=clang++ ./configure --enable-fuzz \ --with-sanitizers=address,fuzzer,undefined $ make $ src/test/fuzz/netaddress … ``` Top commit has no ACKs. Tree-SHA512: 69dc0e391d56d5e9cdb818ac0ac4b69445d0195f714442a06cf662998e38b6e0bbaa635dce78df37ba797feed633e94abba4764b946c1716d392756e7809112d
2020-03-10doc: Warn about wallet.dat re-use and backupsAlbert
See discussion in #18205 and https://github.com/bitcoin/bitcoin/pull/18219#issuecomment-594871230.
2020-03-09doc: Add historical release notes for 0.19.1Wladimir J. van der Laan
2020-03-09tests: Remove FUZZERS_MISSING_CORPORApracticalswift
2020-03-09Merge #18292: fuzz: Add assert(script == decompressed_script)MarcoFalke
fab0e5ba7f2777b86f1487234ed7cc4be9f72ea8 fuzz: Add assert(script == decompressed_script) (MarcoFalke) Pull request description: Presumably an oversight in https://github.com/bitcoin/bitcoin/pull/17926#discussion_r389262151 ACKs for top commit: practicalswift: Tested ACK fab0e5ba7f2777b86f1487234ed7cc4be9f72ea8 Tree-SHA512: 6dcec06169df497a540fd6ebbcd89f5db22257241b2bbe756de868742f9bc324b80d38dbababfa07e5f3a830aaae9fc6d168dcc2ca5d75da437bdf4dc4e0f370
2020-03-09tests: Add basic fuzzing harness for CNetAddr/CService/CSubNet related ↵practicalswift
functions (netaddress.h)
2020-03-09Clear any input_errors for an input after it is signedAndrew Chow
Make sure that there are no errors set for an input after it is signed. This is useful for when there are multiple ScriptPubKeyMans. Some may fail to sign, but one may be able to sign, and after it does, we don't want there to be any more errors there.
2020-03-09Replace GetSigningProvider with GetSolvingProviderAndrew Chow
Not all ScriptPubKeyMans will be able to provide private keys, but pubkeys and scripts should be. So only provide public-only SigningProviders, i.e. ones that can help with Solving.
2020-03-09Move direct calls to MessageSign into new SignMessage functions in CWallet ↵Andrew Chow
and ScriptPubKeyMan Instead of getting a SigningProvider and then going to MessageSign, have ScriptPubKeyMan handle the message signing internally.
2020-03-09Move key and script filling and signing from CWallet::FillPSBT to ↵Andrew Chow
ScriptPubKeyMan::FillPSBT Instead of fetching a SigningProvider from ScriptPubKeyMan in order to fill and sign the keys and scripts for a PSBT, just pass that PSBT to a new FillPSBT function that does all that for us.
2020-03-09Move FillPSBT to be a member of CWalletAndrew Chow
2020-03-09fuzz: Add option to merge input dir to test runnerMarcoFalke
2020-03-09doc: Remove --disable-ccache from docsMarcoFalke
2020-03-09Merge #18299: tests: Update FUZZERS_MISSING_CORPORA to enable regression ↵MarcoFalke
fuzzing for all harnesses in master bf0664181965787829935d5f9704640cff5cfc66 tests: Reset FUZZERS_MISSING_CORPORA to enable regression fuzzing for more harnesses (practicalswift) Pull request description: Update `FUZZERS_MISSING_CORPORA` to enable regression fuzzing for all harnesses in `master`. Note that this PR is expected to fail in Travis until https://github.com/bitcoin-core/qa-assets/pull/4 is merged :) Top commit has no ACKs. Tree-SHA512: 6b4d23726ca99c7ab9454087f0354e35d307e7e16b90741cdf7838265a07a631cf54d9533b4f1bf9a0fd900c5ed909756a35cab738284bf39b09ab1c2ed54368
2020-03-09tests: Reset FUZZERS_MISSING_CORPORA to enable regression fuzzing for more ↵practicalswift
harnesses
2020-03-09Merge #18274: rpc/wallet: initialize nFeeRequired to avoid using garbage ↵fanquake
value on failure a652ba6293ef8d144935dc882b5f0003c987fa22 rpc/wallet: initialize nFeeRequired to avoid using garbage value on failure (Karl-Johan Alm) Pull request description: Initialize the `nFeeRequired` variable to avoid using an uninitialized value for errors happening before it is set to 0. Note: this originally fixed `nFeeRet` in `wallet.cpp`. ACKs for top commit: promag: ACK a652ba6293ef8d144935dc882b5f0003c987fa22. Sjors: utACK a652ba6293ef8d144935dc882b5f0003c987fa22 practicalswift: ACK a652ba6293ef8d144935dc882b5f0003c987fa22 -- patch looks correct meshcollider: utACK a652ba6293ef8d144935dc882b5f0003c987fa22 Tree-SHA512: 0d12f1ffd0851ed5ce6d109d2c87f55e8b1d57da297e684feeabb57229200c4078f029c55ca5aa5712bd18e26dda3ce538443dfe68a7a6d504428068f81fded0
2020-03-09rpc/wallet: initialize nFeeRequired to avoid using garbage value on failureKarl-Johan Alm
2020-03-08Use CWallet::SignTransaction in CreateTransaction and ↵Andrew Chow
signrawtransactionwithwallet Instead of duplicating signing code, just use the function we already have.
2020-03-08Implement CWallet::SignTransaction using ScriptPubKeyMan::SignTransactionAndrew Chow
2020-03-08Add SignTransaction function to ScriptPubKeyMan and LegacyScriptPubKeyManAndrew Chow
2020-03-08Refactor rawtransaction's SignTransaction into generic SignTransaction functionAndrew Chow
2020-03-07fuzz: Add assert(script == decompressed_script)MarcoFalke
2020-03-07Merge #17926: tests: Add key_io fuzzing harness. Fuzz additional functions ↵MarcoFalke
in existing fuzzing harnesses. 52fed696d251dc38211eb2fa7f144b6a989dd479 tests: Fuzz additional functions in the script fuzzing harness (practicalswift) 5fc10f3cb5991684f10c589fa5ccf2d694ffa32a tests: Fuzz additional functions in the transaction fuzzing harness (practicalswift) 1d324ce92229f3557f6bb38a63873dea1677240e tests: Fuzz additional functions in the integer fuzzing harness (practicalswift) 4fe4de6364b05d2abde196b486b6e3f254d18026 tests: Fuzz additional functions in the hex fuzzing harness (practicalswift) c7ea12d098ee292b78274671b698202c6551b075 tests: Add key_io fuzzing harness (practicalswift) Pull request description: Add `key_io` fuzzing harness. Fuzz additional functions in the `hex` fuzzing harness. Fuzz additional functions in the `integer` fuzzing harness. Fuzz additional functions in the `script` fuzzing harness. Fuzz additional functions in the `transaction` fuzzing harness. **How to test this PR** ``` $ make distclean $ ./autogen.sh $ CC=clang CXX=clang++ ./configure --enable-fuzz \ --with-sanitizers=address,fuzzer,undefined $ make $ src/test/fuzz/key_io … ``` ACKs for top commit: MarcoFalke: ACK 52fed696d251dc38211eb2fa7f144b6a989dd479 🛫 Tree-SHA512: a57ab66c18d260c2e39d987cab9fa576f7a5520dc1ea7fd607d64d8e005e16558312ddb4c9f4d4f3147dc6194d8ae0b0fb86ed5e58ba6aef5383ea726463df97
2020-03-07build: Set minimum Automake version to 1.13Hennadii Stepanov
2020-03-07Cache parent xpub inside of BIP32PubkeyProviderAndrew Chow
Optimize Expand by having BIP32PubkeyProvider also cache the parent (or only) xpub within itself. Since Expand does not provide a read cache, it is useful to internally cache this xpub to avoid re-deriving the same xpub.
2020-03-07Only cache xpubs that have a hardened last stepAndrew Chow
Also adds tests for this: For ranged descriptors with unhardened derivation, we expect to find parent keys in the cache but no child keys. For descriptors containing an xpub but do not have unhardened derivation (i.e. hardened derivation or single xpub with or without derivation), we expect to find all of the keys in the cache, and the same number of keys in the cache as in the SigningProvider. For everything else (no xpub), nothing should be cached at all.
2020-03-07Cache the immediate derivation parent xpubAndrew Chow
If unhardened derivation is used, cache the immediate derivation parent xpub and use it for unhardened derivation
2020-03-07Add DescriptorCache* read_cache and DescriptorCache* write_cache to Expand ↵Andrew Chow
and GetPubKey Have Expand, ExpandFromCache, and ExpandHelper take additional DescriptorCache parameters. These are then passed into PubkeyProvider::GetPubKey which also takes them as arguments. Reading and writing to the cache is pushed down into GetPubKey. The old cache where pubkeys are serialized to a vector is completely removed and instead xpubs are being cached in DescriptorCache.
2020-03-07Rename BIP32PubkeyProvider.m_extkey to m_root_extkeyAndrew Chow
Renaming clarifies that m_extkey is actually the root extkey that keys are derived from.
2020-03-07Track the index of the key expression in PubkeyProviderAndrew Chow
2020-03-07Introduce DescriptorCache struct which caches xpubsAndrew Chow
2020-03-07tests: Fuzz additional functions in the script fuzzing harnesspracticalswift
2020-03-07tests: Fuzz additional functions in the transaction fuzzing harnesspracticalswift
2020-03-07scheduler: Use C++11 member initialization, add shutdown assertMarcoFalke
"Initializing the members in the declaration makes it easy to spot uninitialized ones". https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#c-data-structures
2020-03-07tests: Fuzz additional functions in the integer fuzzing harnesspracticalswift
2020-03-07tests: Fuzz additional functions in the hex fuzzing harnesspracticalswift
2020-03-07tests: Add key_io fuzzing harnesspracticalswift
2020-03-07doc: remove Boost Chrono from install docsfanquake
2020-03-07test: remove Boost Chrono installation from CIfanquake
2020-03-07build: remove Boost Chrono detection from build systemfanquake