Commit Graph

10280 Commits

Author SHA1 Message Date
Cory Fields
a5cb913081 c++11: add scoped enum fallbacks to CPPFLAGS rather than defining them locally
Due to include ordering, defining in one place was not enough to ensure correct
usage. Use global defines so that we don't have to worry abou this ordering.

Also add a comment in configure about the test.
2018-01-09 23:41:56 +03:00
Cory Fields
e013f50397 c++11: CAccountingEntry must be defined before use in a list 2018-01-09 23:36:00 +03:00
Cory Fields
2579687f83 c++11: don't throw from the reverselock destructor
noexcept is default for destructors as of c++11. By throwing in reverselock's
destructor if it's lock has been tampered with, the likely result is
std::terminate being called. Indeed that happened before this change.

Once reverselock has taken another lock (its ctor didn't throw), it makes no
sense to try to grab or lock the parent lock. That is be broken/undefined
behavior depending on the parent lock's implementation, but it shouldn't cause
the reverselock to fail to re-lock when destroyed.

To avoid those problems, simply swap the parent lock's contents with a dummy
for the duration of the lock. That will ensure that any undefined behavior is
caught at the call-site rather than the reverse lock's destruction.

Barring a failed mutex unlock which would be indicative of a larger problem,
the destructor should now never throw.
2018-01-09 23:32:07 +03:00
Cory Fields
6229258723 c++11: detect and correct for boost builds with an incompatible abi
This is ugly, but temporary. boost::filesystem will likely be dropped soon
after c++11 is enabled. Otherwise, we could simply roll our own copy_file. I've
fixed this at the buildsystem level for now in order to avoid mixing in
functional changes.

Explanation:
If boost (prior to 1.57) was built without c++11, it emulated scoped enums
using c++98 constructs. Unfortunately, this implementation detail leaked into
the abi. This was fixed in 1.57.

When building against that installed version using c++11, the headers pick up
on the native c++11 scoped enum support and enable it, however it will fail to
link. This can be worked around by disabling c++11 scoped enums if linking will
fail.

Add an autoconf test to determine incompatibility. At build-time, if native
enums are being used (a c++11 build), and force-disabling them causes a
successful link, we can be sure that there's an incompatibility and enable the
work-around.
2018-01-09 23:31:56 +03:00
janko33bd
228b3a9d89 Merge pull request #17 from lateminer/wallet-updates-0.13
Wallet updates from Bitcoin Core 0.13.x
2018-01-08 21:18:52 +01:00
lateminer
765380cf35 Revert "Make RelayWalletTransaction attempt to AcceptToMemoryPool."
This reverts commit c1a0128033.
2018-01-08 22:35:33 +03:00
lateminer
e8ad469c2c Remove unnecessary code 2018-01-08 22:25:00 +03:00
Cory Fields
b06d926965 build: Enumerate ctaes rather than globbing 2018-01-08 22:04:30 +03:00
Cory Fields
aa0181e44e crypter: shuffle Makefile so that crypto can be used by the wallet 2018-01-08 22:04:21 +03:00
Cory Fields
d4b0ab2149 crypter: constify encrypt/decrypt
This makes CCrypter easier to pass aroundf for tests
2018-01-08 21:59:36 +03:00
Cory Fields
b1913e4dd2 crypter: add tests for crypter 2018-01-08 21:59:28 +03:00
Cory Fields
df2b01b7cd crypter: add a BytesToKey clone to replace the use of openssl
BytesToKeySHA512AES should be functionally identical to EVP_BytesToKey, but
drops the dependency on openssl.
2018-01-08 21:57:20 +03:00
Cory Fields
f48a300f74 crypter: hook up the new aes cbc classes 2018-01-08 21:57:12 +03:00
Cory Fields
07f4b56b4c crypter: fix the stored initialization vector size
AES IV's are 16bytes, not 32. This was harmless but confusing.

Add WALLET_CRYPTO_IV_SIZE to make its usage explicit.
2018-01-08 21:57:02 +03:00
Cory Fields
cb9ed6bc39 crypto: add aes cbc tests 2018-01-08 21:56:54 +03:00
Cory Fields
200954d962 crypto: add AES 128/256 CBC classes
The output should always match openssl's, even for failed operations. Even for
a decrypt with broken padding, the output is always deterministic (and attemtps
to be constant-time).
2018-01-08 21:56:46 +03:00
Pieter Wuille
46910cb2d5 Add ctaes-based constant time AES implementation 2018-01-08 21:56:36 +03:00
lateminer
5f9e181833 Added ctaes 2018-01-08 21:55:56 +03:00
Pieter Wuille
77d8ddc6fb Stop treating importaddress'ed scripts as change
Before this, if someone imported a scriptPubKey directly (in hex form) using
importaddress, outputs sending to it would be treated as change, as the
corresponding CTxDestination was not added to the address book.

Fix this by trying to detect scriptPubKeys that are in fact convertible to a
CTxDestination and add them anyway. Add a warning to the RPC help to warn
against importing raw non-standard scripts.
2018-01-08 21:48:12 +03:00
Pedro Branco
8e2f81bb7f Prevent multiple calls to ExtractDestination 2018-01-08 21:47:33 +03:00
Jonas Schnelli
22bebdaacd [Wallet] remove "unused" ThreadFlushWalletDB from removeprunedfunds 2018-01-08 21:46:56 +03:00
MarcoFalke
2b9c31046b [wallet] rpc: Drop misleading option in importprunedfunds 2018-01-08 21:45:39 +03:00
instagibbs
8bca020397 Added companion removeprunedfunds call. 2018-01-08 21:36:30 +03:00
instagibbs
c37ac7db87 Add importprunedfunds rpc call 2018-01-08 21:36:08 +03:00
Patrick Strateman
db3b5d964a Move BackupWallet to CWallet::BackupWallet 2018-01-08 21:31:59 +03:00
lateminer
261efcf69a Merge remote-tracking branch 'janko33bd/Blackcoin-Lore' into wallet-updates-0.13 2018-01-08 19:45:45 +03:00
janko33bd
26cbe6bc72 Merge pull request #16 from lateminer/wallet-mod
[Wallet] refactor wallet/init interaction
2018-01-07 21:02:54 +01:00
janko33bd
518e327e7c Merge pull request #14 from lateminer/rpc-updates-0.13
RPC updates from Bitcoin Core 0.13.x
2018-01-07 21:02:38 +01:00
lateminer
af7f906c74 Remove unused constants 2018-01-07 15:52:28 +03:00
lateminer
b808896d4c [Wallet] refactor wallet/init interaction
25340b7cd5
2018-01-07 15:29:36 +03:00
Jonas Schnelli
aefae306e5 [Wallet] Bugfix: FRT: don't terminate when keypool is empty 2018-01-07 13:45:21 +03:00
Gregory Maxwell
c1a0128033 Make RelayWalletTransaction attempt to AcceptToMemoryPool. 2018-01-07 13:44:47 +03:00
crowning-
40ebee8dec CDB: fix debug output
It doesn't really help to clear a variable before printing it to the debug log.
2018-01-07 13:38:33 +03:00
Jonas Schnelli
ea219cd59d [Wallet] Trivial cleanup of HD wallet changes 2018-01-07 13:37:11 +03:00
Wladimir J. van der Laan
77ea5eb519 wallet: Revert input selection post-pruning
This reverts PR #4906, "Coinselection prunes extraneous inputs from
ApproximateBestSubset".

Apparently the previous behavior of slightly over-estimating the set of
inputs was useful in cleaning up UTXOs.

See also #7664, #7657, as well as 2016-07-01 discussion on #bitcoin-core-dev IRC.
2018-01-07 13:36:04 +03:00
Patrick Strateman
e94e583f48 Improve CWallet API with new GetAccountPubkey function.
Remove one more caller that is passing CWalletDB.
2018-01-07 13:33:46 +03:00
Patrick Strateman
acf8c3d9ce Improve CWallet API with new AccountMove function. 2018-01-07 13:33:24 +03:00
Pieter Wuille
4db9e14749 Don't use assert for catching randomness failures 2018-01-07 13:28:01 +03:00
Pieter Wuille
f9d2d353ff Always require OS randomness when generating secret keys 2018-01-07 13:27:51 +03:00
Patrick Strateman
ee0b4321ff Move GetAccountBalance from rpcwallet.cpp into CWallet::GetAccountBalance 2018-01-07 13:22:45 +03:00
João Barbosa
26f8d58b92 Fix lockunspents help message 2018-01-07 13:16:18 +03:00
João Barbosa
395af2c291 Prevent multiple calls to CWallet::AvailableCoins 2018-01-07 13:15:46 +03:00
Alex Morcos
db8b7554fd Don't resend wallet txs that aren't in our own mempool 2018-01-07 13:11:12 +03:00
Wladimir J. van der Laan
289e2f80b4 wallet: Warn on unexpected EOF while salvaging wallet
Check for EOF before every getline, and warn when reading gets to EOF
before the end of the data.

Stricter error checking could shed more light on issues such as #7463
and #7379.
2018-01-07 12:57:13 +03:00
Chris Moore
412c8b9946 Reduce inefficiency of GetAccountAddress()
Don't scan the wallet to see if the current key has been used if we're going to make a new key anyway.
Stop scanning the wallet as soon as we see that the current key has been used.
Don't call isValid() twice on the current key.
2018-01-07 12:56:47 +03:00
janko33bd
de1a0db4cf Merge pull request #15 from lateminer/show-password
[ui] Add toggle for unblinding password fields
2018-01-07 00:00:07 +01:00
Thomas Snider
3b0604b58d [ui] Add toggle for unblinding password fields 2018-01-07 01:18:20 +03:00
lateminer
b4b34ff770 Get rid of remaining auto_ptr mentions 2018-01-06 16:44:09 +03:00
lateminer
99238ff2c8 Merge remote-tracking branch 'janko33bd/Blackcoin-Lore' into rpc-updates-0.13 2018-01-06 16:41:28 +03:00
Jonas Schnelli
5deab0d5fa [Wallet] Bugfix: FRT: don't terminate when keypool is empty
Github-Pull: #9295
Rebased-From: c24a4f5981d47d55aa9e4eb40294832a4d38fb80
2018-01-06 15:33:50 +03:00