cc3b5289ef gui: remove OpenSSL PRNG seeding (Windows, Qt only) (fanquake)
Pull request description:
This removes the code introduced in [#4399](https://github.com/bitcoin/bitcoin/pull/4399) that attempts to add additional entroy to the OpenSSL PRNG using `RAND_event()`. This is specific to bitcoin-qt running on Windows.
```
RAND_event() collects the entropy from Windows events such as mouse movements and other user interaction.
It should be called with the iMsg, wParam and lParam arguments of all messages sent to the window procedure.
It will estimate the entropy contained in the event message (if any), and add it to the PRNG.
The program can then process the messages as usual.
```
Besides BIP70, this is the last place we are directly using OpenSSL in the GUI code. All other OpenSSL usage is in [random.cpp](https://github.com/bitcoin/bitcoin/blob/master/src/random.cpp).
Note that we are still also still doing other Windows specific gathering using [RandAddSeedPerfmon](https://github.com/bitcoin/bitcoin/blob/master/src/random.cpp#L268) and [RAND_screen()](https://github.com/bitcoin/bitcoin/blob/master/src/random.cpp#L600) on top of the other generation we do.
Also note that if RAND_event returns `0` here (PRNG has **NOT** been seeded with enough data), we're just logging a single message and continuing, which also seems less than ideal.
ACKs for top commit:
laanwj:
ACK cc3b5289ef
MarcoFalke:
unsigned ACK cc3b5289ef
theuni:
ACK cc3b5289ef.
Tree-SHA512: 0bb18779cf37f6670e3e5ac6a6a38e5f95199491b2684f9e56391c76f030fe1621d6df064239c2a398f228129fdf3f2220fc8cd15b2b92ecf2ea6d98a79b2175
Contains Designer UI files. They are created with Qt Creator, but can be edited using any text editor.
locale
Contains translations. They are periodically updated. The process is described here.
res
Resources such as the icon.
test
Tests.
bitcoingui.(h/cpp)
Represents the main window of the Bitcoin UI.
*model.(h/cpp)
The model. When it has a corresponding controller, it generally inherits from QAbstractTableModel. Models that are used by controllers as helpers inherit from other Qt classes like QValidator.
ClientModel is used by the main application bitcoingui and several models like peertablemodel.
*page.(h/cpp)
A controller. :NAMEpage.cpp generally includes :NAMEmodel.h and forms/:NAME.page.ui with a similar :NAME.
*dialog.(h/cpp)
Various dialogs, e.g. to open a URL. Inherit from QDialog.
paymentserver.(h/cpp)
Used to process BIP21 and BIP70 (see https://github.com/bitcoin/bitcoin/pull/11622) payment URI / requests. Also handles URI based application switching (e.g. when following a bitcoin:... link from a browser).
walletview.(h/cpp)
Represents the view to a single wallet.
Other .h/cpp files
UI elements like BitcoinAmountField, which inherit from QWidget.
bitcoinstrings.cpp: automatically generated
bitcoinunits.(h/cpp): BTC / mBTC / etc handling
callback.h
guiconstants.h: UI colors, app name, etc
guiutil.h: several helper functions
macdockiconhandler.(h/mm): macOS dock icon handler
macnotificationhandler.(h/mm): display notifications in macOS
Contribute
See CONTRIBUTING.md for general guidelines. Specifically for Qt:
don't change local/bitcoin_en.ts; this happens automatically
Using Qt Creator as IDE
You can use Qt Creator as an IDE. This is especially useful if you want to change
the UI layout.
Download and install the community edition of Qt Creator.
Uncheck everything except Qt Creator during the installation process.