Matt Corallo [Fri, 8 Jul 2011 13:47:35 +0000]
Add wallet privkey encryption.
This commit adds support for ckeys, or enCrypted private keys, to the wallet.
All keys are stored in memory in their encrypted form and thus the passphrase
is required from the user to spend coins, or to create new addresses.
Keys are encrypted with AES-256-CBC using OpenSSL's EVP library. The key is
calculated via EVP_BytesToKey using SHA512 with (by default) 25000 rounds and
a random salt.
By default, the user's wallet remains unencrypted until they call the RPC
command encryptwallet <passphrase> or, from the GUI menu, Options->
Encrypt Wallet.
When the user is attempting to call RPC functions which require the password
to unlock the wallet, an error will be returned unless they call
walletpassphrase <passphrase> <time to keep key in memory> first.
A keypoolrefill command has been added which tops up the users keypool
(requiring the passphrase via walletpassphrase first).
keypoolsize has been added to the output of getinfo to show the user the
number of keys left before they need to specify their passphrase (and call
keypoolrefill).
Note that walletpassphrase will automatically fill keypool in a separate
thread which it spawns when the passphrase is set. This could cause some
delays in other threads waiting for locks on the wallet passphrase, including
one which could cause the passphrase to be stored longer than expected,
however it will not allow the passphrase to be used longer than expected as
ThreadCleanWalletPassphrase will attempt to get a lock on the key as soon
as the specified lock time has arrived.
When the keypool runs out (and wallet is locked) GetOrReuseKeyFromPool
returns vchDefaultKey, meaning miners may start to generate many blocks to
vchDefaultKey instead of a new key each time.
A walletpassphrasechange <oldpassphrase> <newpassphrase> has been added to
allow the user to change their password via RPC.
Whenever keying material (unencrypted private keys, the user's passphrase,
the wallet's AES key) is stored unencrypted in memory, any reasonable attempt
is made to mlock/VirtualLock that memory before storing the keying material.
This is not true in several (commented) cases where mlock/VirtualLocking the
memory is not possible.
Although encryption of private keys in memory can be very useful on desktop
systems (as some small amount of protection against stupid viruses), on an
RPC server, the password is entered fairly insecurely. Thus, the only main
advantage encryption has for RPC servers is for RPC servers that do not spend
coins, except in rare cases, eg. a webserver of a merchant which only receives
payment except for cases of manual intervention.
Thanks to jgarzik for the original patch and sipa, gmaxwell and many others
for all their input.
Conflicts:
src/wallet.cpp
Jay Weisskopf [Tue, 12 Jul 2011 06:18:57 +0000]
Remove NSIS branding from bottom divider.
Jay Weisskopf [Mon, 11 Jul 2011 07:11:15 +0000]
Set default compression for NSIS installer to LZMA.
Use of LZMA (versus the current zlib) shaves a few MB off the installer.
Wladimir J. van der Laan [Mon, 11 Jul 2011 19:01:53 +0000]
also show balloon on sent transaction, to notify when coins sent
Wladimir J. van der Laan [Mon, 11 Jul 2011 18:42:10 +0000]
Show unconfirmed balance on overview page
Wladimir J. van der Laan [Mon, 11 Jul 2011 17:35:08 +0000]
Make tooltip on refresh more clear
Jay Weisskopf [Mon, 11 Jul 2011 07:09:07 +0000]
Add logos/branding currently found on bitcoin.org into NSIS installer.
Doug Huff [Thu, 30 Jun 2011 00:04:44 +0000]
Make mlock() and munlock() portable to systems that require the address to be on a page boundary.
Jeff Garzik [Sat, 9 Jul 2011 17:09:13 +0000]
Merge pull request #392 from laanwj/antimagic
Remove another magic number: change threshold for nLockTime to constant
Wladimir J. van der Laan [Sat, 9 Jul 2011 13:58:05 +0000]
wxp/mingw build fixes
Wladimir J. van der Laan [Sat, 9 Jul 2011 13:26:57 +0000]
add better windows7/vista look by nico_w
Wladimir J. van der Laan [Sat, 9 Jul 2011 12:00:00 +0000]
remove placeholder text from ui form, code generator screws up on older qt
Wladimir J. van der Laan [Sat, 9 Jul 2011 09:54:25 +0000]
Add -fstack-protector to gcc CXX flags
Wladimir J. van der Laan [Sat, 9 Jul 2011 08:55:46 +0000]
README update
Wladimir J. van der Laan [Sat, 9 Jul 2011 08:53:55 +0000]
add export functionality for address book / receiving addresses
Wladimir J. van der Laan [Sat, 9 Jul 2011 08:26:46 +0000]
remove magic number: change threshold for nLockTime to constant
Wladimir J. van der Laan [Sat, 9 Jul 2011 08:06:49 +0000]
remove magic number: change threshold for nLockTime to constant
Wladimir J. van der Laan [Sat, 9 Jul 2011 08:06:49 +0000]
remove magic number: change threshold for nLockTime to constant
Wladimir J. van der Laan [Fri, 8 Jul 2011 20:45:15 +0000]
Readme update
Wladimir J. van der Laan [Fri, 8 Jul 2011 20:27:36 +0000]
Add context menu on transaction list: copy label, copy address, edit label, show details
Wladimir J. van der Laan [Fri, 8 Jul 2011 17:56:28 +0000]
Transaction list: less terse tooltip
Wladimir J. van der Laan [Fri, 8 Jul 2011 17:51:24 +0000]
send coins dialog: make sure send button remain default button (triggered with enter)
Jeff Garzik [Fri, 8 Jul 2011 17:38:24 +0000]
Compile 'sv' translation
Jeff Garzik [Fri, 8 Jul 2011 17:36:49 +0000]
Merge pull request #376 from codler/translate
Minor translation changes for latest build (Swedish)
Wladimir J. van der Laan [Fri, 8 Jul 2011 17:25:35 +0000]
forgot synced icons
Wladimir J. van der Laan [Fri, 8 Jul 2011 17:00:08 +0000]
Reorganize "send coins" tab
Wladimir J. van der Laan [Fri, 8 Jul 2011 16:05:10 +0000]
Display a "freshness" indicator instead of nr of blocks
Dylan Noblesmith [Fri, 24 Jun 2011 03:03:17 +0000]
mlock() all private keys in memory
Inline comment and idea come from the encprivkeys branch
by Matt Corallo <matt@bluematt.me>.
Pieter Wuille [Sat, 25 Jun 2011 12:57:32 +0000]
Prepare codebase for Encrypted Keys.
Wladimir J. van der Laan [Thu, 7 Jul 2011 19:26:46 +0000]
update README
Wladimir J. van der Laan [Thu, 7 Jul 2011 19:25:17 +0000]
"Status" doesn't fit into narrow first column in transaction history, make the header empty
Wladimir J. van der Laan [Thu, 7 Jul 2011 19:19:25 +0000]
Add German translation by nico_w
Wladimir J. van der Laan [Thu, 7 Jul 2011 16:38:37 +0000]
add [testnet] to whatever the current window title is
Wladimir J. van der Laan [Thu, 7 Jul 2011 16:32:47 +0000]
clarify todo/dones in readme
Wladimir J. van der Laan [Thu, 7 Jul 2011 16:25:27 +0000]
Selection/tab navigation fixes
Wladimir J. van der Laan [Thu, 7 Jul 2011 15:33:15 +0000]
convert to full tab-based ui
Wladimir J. van der Laan [Thu, 7 Jul 2011 14:57:19 +0000]
Qt handles the "..." for too long table rows. Remove this functionality from TransactionTableModel...
Wladimir J. van der Laan [Thu, 7 Jul 2011 13:22:54 +0000]
Sync to bitcoin git
e94010b2395694d56dd6
Wladimir J. van der Laan [Sat, 18 Jun 2011 16:42:13 +0000]
temp patch for qtui
Wladimir J. van der Laan [Thu, 7 Jul 2011 13:16:26 +0000]
CKeyStore::AddKey must return a boolean
Wladimir J. van der Laan [Thu, 7 Jul 2011 12:27:16 +0000]
Export functionality for transaction list
Wladimir J. van der Laan [Thu, 7 Jul 2011 08:59:00 +0000]
Rename "History" tab to more logical "Transactions", move "Number of transactions" from status bar to overview page
Wladimir J. van der Laan [Thu, 7 Jul 2011 08:43:04 +0000]
minor language/text updates
Wladimir J. van der Laan [Thu, 7 Jul 2011 08:29:07 +0000]
Improve view of generated transactions (show clock icon when still maturing)
Wladimir J. van der Laan [Wed, 6 Jul 2011 19:52:23 +0000]
Address book: Disable "copy to clipboard" and "Delete" buttons when nothing selected
Wladimir J. van der Laan [Wed, 6 Jul 2011 18:52:31 +0000]
Remove code for no longer existing edit button in address book dialog
Wladimir J. van der Laan [Wed, 6 Jul 2011 18:41:13 +0000]
Add "BTC" to all amount widgets, to make clear what the unit is
Wladimir J. van der Laan [Tue, 5 Jul 2011 20:09:39 +0000]
tab reorg phase 1: split main gui into "overview" and "history"
Jeff Garzik [Tue, 5 Jul 2011 18:52:13 +0000]
Merge pull request #383 from sipa/syncdefault
Fix synchronization of default key
Wladimir J. van der Laan [Tue, 5 Jul 2011 18:21:33 +0000]
make balance selectable / copyable
Jeff Garzik [Tue, 5 Jul 2011 17:10:26 +0000]
Merge pull request #384 from TheBlueMatt/upnp
Fix UPnP building, entirely my fault.
Matt Corallo [Tue, 5 Jul 2011 01:06:19 +0000]
Add minversion to wallet.
Matt Corallo [Tue, 5 Jul 2011 16:21:35 +0000]
Enable UPnP by default on bitcoin, but not on bitcoind (on gitian)
Also fix a minor type in gitian.yml
Matt Corallo [Tue, 5 Jul 2011 16:19:34 +0000]
Revert "Make UPnP default on Bitcoin but not on Bitcoind."
This reverts commit
ee1f884229736da6f5443157ccba97f4e8f50f82.
Stupid, stupid me...there is exactly 0 way to convince make to
execute a conditional based on a target-specific variable.
Pieter Wuille [Tue, 5 Jul 2011 15:42:44 +0000]
Fix synchronization of default key
Gavin Andresen [Tue, 5 Jul 2011 02:26:10 +0000]
Merge pull request #379 from gavinandresen/nocommas
Do not use comma as thousands separator
Jeff Garzik [Mon, 4 Jul 2011 23:34:18 +0000]
Merge pull request #380 from TheBlueMatt/buildupdates
Added a couple minor things to match newer build process.
Matt Corallo [Sun, 3 Jul 2011 12:41:09 +0000]
Added a couple minor things to match newer build process.
This adds the relevent patches which are applied to wx,
and updates for cross compiling.
Wladimir J. van der Laan [Mon, 4 Jul 2011 18:12:58 +0000]
as there is no "default receiving address" in this GUI, don't autogenerate new addresses on receiving
Gavin Andresen [Mon, 4 Jul 2011 13:41:58 +0000]
Do not use comma as thousands separator
Using the comma as thousands separator causes problems for parts of the world
where comma == decimal point. Germans sending 0,001 bitcoins are unpleasantly
surprised when that results in 1 BTC getting sent.
Wladimir J. van der Laan [Mon, 4 Jul 2011 05:45:28 +0000]
add windows build instructions
Wladimir J. van der Laan [Sun, 3 Jul 2011 18:59:56 +0000]
Eliminate useless padding
Wladimir J. van der Laan [Sun, 3 Jul 2011 18:53:56 +0000]
windows build fixes
Gavin Andresen [Sun, 3 Jul 2011 15:20:39 +0000]
Block-chain lock-in at 134444
Han Lin Yap [Sun, 3 Jul 2011 13:24:47 +0000]
Minor translation changes for latest build
Wladimir J. van der Laan [Sun, 3 Jul 2011 06:24:07 +0000]
move another setPlaceHolderText to 4.7+ only code
Wladimir J. van der Laan [Sun, 3 Jul 2011 05:51:20 +0000]
remove libboostall-dev is not needed dependency
Jeff Garzik [Sat, 2 Jul 2011 20:57:45 +0000]
Bump OSX version to 0.3.24 (missed in previous commit)
Jeff Garzik [Sat, 2 Jul 2011 20:55:11 +0000]
Bump version to 0.3.24.
Jeff Garzik [Sat, 2 Jul 2011 20:46:07 +0000]
Merge branch 'tmp2' into tmp3
Jeff Garzik [Sat, 2 Jul 2011 19:04:09 +0000]
Merge pull request #374 from TheBlueMatt/neterror
Give more detailed error messages for connection failure.
Wladimir J. van der Laan [Sat, 2 Jul 2011 16:30:41 +0000]
remove "edit" button, document double-click behaviour to edit
Wladimir J. van der Laan [Sat, 2 Jul 2011 15:31:27 +0000]
ui improvements: allow inline editing of labels/addresses in address book table, better tab order in send dialog, set focus on sending address table when coming from send coins dialog
Wladimir J. van der Laan [Sat, 2 Jul 2011 13:42:12 +0000]
make tooltip equal to placeholder
Wladimir J. van der Laan [Sat, 2 Jul 2011 13:09:53 +0000]
Check addresses in address book for validity
Wladimir J. van der Laan [Sat, 2 Jul 2011 11:45:59 +0000]
Send: dialog redesign (automatically look up label for entered address)
Matt Corallo [Sat, 2 Jul 2011 01:59:37 +0000]
Give more detailed error messages for connection failure.
Wladimir J. van der Laan [Sat, 2 Jul 2011 08:33:36 +0000]
update build instructions (thanks tschaboo)
Wladimir J. van der Laan [Sat, 2 Jul 2011 08:13:29 +0000]
"Receive coins" instead of "Receiving addresses"
Wladimir J. van der Laan [Sat, 2 Jul 2011 07:21:16 +0000]
Placeholder text can only be used for Qt 4.7+
Jeff Garzik [Sat, 2 Jul 2011 02:39:05 +0000]
Merge pull request #372 from TheBlueMatt/upnp
Make UPnP default on Bitcoin but not on Bitcoind.
Jeff Garzik [Sat, 2 Jul 2011 00:38:24 +0000]
Merge pull request #373 from EricJ2190/master
Another Visual C++ Makefile Update
Eric Hosmer [Sat, 2 Jul 2011 00:17:10 +0000]
Add keystore.h to makefile.vs's header list.
Eric Hosmer [Sat, 2 Jul 2011 00:14:02 +0000]
Further updated Visual C++ makefile.
Matt Corallo [Fri, 1 Jul 2011 23:03:07 +0000]
Make UPnP default on Bitcoin but not on Bitcoind.
This is a bit of an ugly hack, but its the only way to do it.
Jeff Garzik [Fri, 1 Jul 2011 23:34:49 +0000]
Merge pull request #343 from muggenhor/proper-http-server-rejection
rpc server: send '403 Forbidden' to rejected clients
Jeff Garzik [Fri, 1 Jul 2011 23:33:28 +0000]
Merge pull request #368 from TheBlueMatt/dnsseed
Only use dnsseeds when not on testnet.
Jeff Garzik [Fri, 1 Jul 2011 23:31:33 +0000]
Merge pull request #371 from EricJ2190/master
Updated Visual C++ Makefile
Jeff Garzik [Fri, 1 Jul 2011 21:58:03 +0000]
Enable DNS seeding by default.
Jeff Garzik [Fri, 1 Jul 2011 21:51:48 +0000]
Merge pull request #369 from sipa/limitblocksend
Limit size of response to getblocks
Wladimir J. van der Laan [Fri, 1 Jul 2011 19:41:14 +0000]
Remove "default address" from main GUI screen, it only confuses people
Wladimir J. van der Laan [Fri, 1 Jul 2011 18:28:11 +0000]
Add "last month" filter
Eric Hosmer [Fri, 1 Jul 2011 16:58:48 +0000]
Updated Visual C++ makefile.
Wladimir J. van der Laan [Fri, 1 Jul 2011 16:55:13 +0000]
make amount column wider, so that more decimals fit in
Wladimir J. van der Laan [Fri, 1 Jul 2011 16:31:10 +0000]
cleanup unused constants
Matt Corallo [Fri, 1 Jul 2011 00:09:51 +0000]
Only use dnsseeds and static seeds when not on testnet.
Wladimir J. van der Laan [Fri, 1 Jul 2011 15:26:57 +0000]
reverse address and label (suggestion by Danube)
Wladimir J. van der Laan [Fri, 1 Jul 2011 15:06:36 +0000]
General cleanups
Pieter Wuille [Thu, 30 Jun 2011 21:29:44 +0000]
Limit response to getblocks to half of output buffer size
Introduce SendBufferSize() and ReceiveBufferSize(), and limit
the blocks sent as response to the "getblocks" message to
half of the active send buffer size.
Jeff Garzik [Thu, 30 Jun 2011 21:51:55 +0000]
Merge pull request #367 from TheBlueMatt/dnsseed
Add new DNSSeed dnsseed.bluematt.me.