elements/src
Wladimir J. van der Laan 0bb37e437e
Merge #17270: Feed environment data into RNG initializers
d1c02775aa Report amount of data gathered from environment (Pieter Wuille)
64e1e022ce Use thread-safe atomic in perfmon seeder (Pieter Wuille)
d61f2bb076 Run background seeding periodically instead of unpredictably (Pieter Wuille)
483b94292e Add information gathered through getauxval() (Pieter Wuille)
11793ea22e Feed CPUID data into RNG (Pieter Wuille)
a81c494b4c Use sysctl for seeding on MacOS/BSD (Pieter Wuille)
2554c1b81b Gather additional entropy from the environment (Pieter Wuille)
c2a262a78c Seed randomness with process id / thread id / various clocks (Pieter Wuille)
723c796667 [MOVEONLY] Move cpuid code from random & sha256 to compat/cpuid (Pieter Wuille)
cea3902015 [MOVEONLY] Move perfmon data gathering to new randomenv module (Pieter Wuille)
b51bae1a5a doc: minor corrections in random.cpp (fanquake)

Pull request description:

  This introduces a new `randomenv` module that queries varies non-cryptographic (and non-RNG) sources of entropy available on the system; things like user IDs, system configuration, time, statistics, CPUID data.

  The idea is that these provide a fallback in scenarios where system entropy is somehow broken (note that if system entropy *fails* we will abort regardless; this is only meant to function as a last resort against undetected failure). It includes some data sources OpenSSL currently uses, and more.

  The separation between random and randomenv is a bit arbitrary, but I felt that all this "non-essential" functionality deserved to be separated from the core random module.

ACKs for top commit:
  TheBlueMatt:
    utACK d1c02775aa. Certainly no longer measuring the time elapsed between a 1ms sleep (which got removed in the latest change) is a fair tradeoff for adding about 2 million other actually-higher-entropy bits :).
  laanwj:
    ACK d1c02775aa

Tree-SHA512: d290a8db6538a164348118ee02079e4f4c8551749ea78fa44b2aad57f5df2ccbc2a12dc7d80d8f3e916d68cdd8e204faf9e1bcbec15f9054eba6b22f17c66ae3
2019-11-18 13:33:43 +01:00
..
bench scripted-diff: test: Move setup_common to test library 2019-11-06 11:56:41 -05:00
compat [MOVEONLY] Move cpuid code from random & sha256 to compat/cpuid 2019-11-12 14:50:44 -08:00
config
consensus [validation] Remove fMissingInputs from AcceptToMemoryPool() 2019-10-29 15:46:45 -04:00
crypto Report amount of data gathered from environment 2019-11-12 15:35:26 -08:00
index Remove unused includes 2019-10-15 22:56:43 +00:00
interfaces Merge #17354: wallet: Tidy CWallet::SetUsedDestinationState 2019-11-08 08:44:49 -05:00
leveldb Pull leveldb subtree 2019-01-26 12:45:48 -05:00
logging logs: add BCLog::Timer and related macros 2019-11-04 14:13:52 -05:00
node Merge #17382: rpc: Remove unused boost::this_thread::interruption_point 2019-11-06 00:04:38 +01:00
policy refactor: Remove redundant c_str() calls in formatting 2019-10-28 13:31:33 +01:00
primitives Remove unused includes 2019-10-15 22:56:43 +00:00
qt refactor: Remove unused signal 2019-11-17 05:45:07 +02:00
rpc Merge #17382: rpc: Remove unused boost::this_thread::interruption_point 2019-11-06 00:04:38 +01:00
script doc: Fix some misspellings 2019-11-04 04:22:53 -05:00
secp256k1 Update the secp256k1 subtree to the latest upstream version 2019-03-31 11:41:05 -07:00
support Improve documentation of memory_cleanse() 2019-07-01 12:59:44 +02:00
test test: add unit test for non-standard txs with too large scriptSig 2019-11-14 19:51:50 +01:00
univalue Update univalue subtree 2019-10-30 16:24:02 -04:00
util util: Add missing headers to util/fees.cpp 2019-11-12 09:30:52 +02:00
wallet rpc: Expose block height of wallet transactions 2019-11-11 22:32:44 +00:00
zmq Pass block height in Chain::BlockConnected/Chain::BlockDisconnected 2019-11-05 12:59:16 -05:00
.clang-format util: Add AllowShortCaseLabelsOnASingleLine option 2019-10-14 13:24:54 +03:00
addrdb.cpp addrdb: Remove temporary files created in SerializeFileDB. Fixes non-determinism in unit tests. 2019-06-14 08:30:43 +02:00
addrdb.h refactor: Remove addrdb.h dependency from node.h 2019-10-29 11:30:12 +02:00
addrman.cpp Make reasoning about dependencies easier by not including unused dependencies 2019-06-02 17:15:23 +02:00
addrman.h [addrman] Ensure collisions eventually get resolved 2019-02-27 16:53:44 -05:00
amount.h Update copyright headers to 2018 2018-12-29 10:15:01 +01:00
arith_uint256.cpp Remove unused includes 2019-10-15 22:56:43 +00:00
arith_uint256.h Remove unused includes 2019-10-15 22:56:43 +00:00
attributes.h Add NODISCARD to all {Decode,Parse}[...](...) functions returning bool. Sort includes. 2018-11-05 17:03:11 +01:00
banman.cpp scripted-diff: Make translation bilingual 2019-07-24 16:33:20 +03:00
banman.h Merge #17297: refactor: Remove addrdb.h dependency from node.h 2019-11-04 13:18:27 +01:00
base58.cpp scripted-diff: Move util files to separate directory. 2018-11-04 22:46:07 -08:00
base58.h Add NODISCARD to all {Decode,Parse}[...](...) functions returning bool. Sort includes. 2018-11-05 17:03:11 +01:00
bech32.cpp Add some general std::vector utility functions 2019-10-16 08:56:57 -07:00
bech32.h Assert that the HRP is lowercase in Bech32::Encode 2019-09-05 13:25:11 +12:00
bitcoin-cli-res.rc
bitcoin-cli.cpp cli: fix -getinfo output when compiled with no wallet 2019-11-04 14:39:34 -05:00
bitcoin-tx-res.rc
bitcoin-tx.cpp refactor: Remove redundant c_str() calls in formatting 2019-10-28 13:31:33 +01:00
bitcoin-wallet-res.rc [tools] Add wallet inspection and modification tool 2019-01-30 16:26:52 -05:00
bitcoin-wallet.cpp refactor: Remove redundant c_str() calls in formatting 2019-10-28 13:31:33 +01:00
bitcoind-res.rc
bitcoind.cpp Merge #16839: Replace Connman and BanMan globals with NodeContext local 2019-10-30 12:35:41 +01:00
blockencodings.cpp [validation] Add CValidationState subclasses 2019-10-29 15:46:45 -04:00
blockencodings.h Remove unused includes 2019-10-15 22:56:43 +00:00
blockfilter.cpp init: Add CLI option to enable block filter index. 2019-04-06 12:10:55 -07:00
blockfilter.h init: Add CLI option to enable block filter index. 2019-04-06 12:10:55 -07:00
bloom.cpp refactor: Improve CRollingBloomFilter::reset by using std::fill 2019-05-22 15:55:50 +01:00
bloom.h p2p: Avoid allocating memory for addrKnown where we don't need it 2019-10-16 17:06:20 -04:00
chain.cpp refactor: combine Chain::findFirstBlockWithTime/findFirstBlockWithTimeAndHeight 2019-03-27 18:29:48 -04:00
chain.h chain: Set all CBlockIndex members to null, remove SetNull helper 2019-10-16 13:06:50 -04:00
chainparams.cpp fix uninitialized variable nMinerConfirmationWindow 2019-11-12 17:59:52 -06:00
chainparams.h doc: Remove explicit network name references 2019-11-01 12:06:35 +01:00
chainparamsbase.cpp Testchains: Generic selection with -chain=<str> in addition of -testnet and -regtest 2019-09-06 22:05:33 +02:00
chainparamsbase.h doc: Remove explicit network name references 2019-11-01 12:06:35 +01:00
chainparamsseeds.h contrib: Remove invalid nodes from seeds list 2019-10-02 08:51:12 +02:00
checkqueue.h
clientversion.cpp
clientversion.h
coins.cpp move-onlyish: move CCoinsViewErrorCatcher out of init.cpp 2019-07-21 21:00:31 -04:00
coins.h make SaltedOutpointHasher noexcept 2019-09-25 20:56:38 +02:00
compat.h windows: Set _WIN32_WINNT to 0x0601 (Windows 7) 2019-01-23 16:28:27 +08:00
compressor.cpp Remove unused includes 2019-10-15 22:56:43 +00:00
compressor.h
core_io.h Move PSBT decoding functions from core_io to psbt.cpp 2019-03-26 17:38:00 -07:00
core_memusage.h
core_read.cpp Include core_io.h from core_read.cpp 2019-06-06 08:00:33 +02:00
core_write.cpp Don't show addresses or P2PK in decoderawtransaction 2019-08-30 11:29:21 +09:00
cuckoocache.h doc: Doxygen-friendly CuckooCache comments 2019-10-10 15:47:39 -04:00
dbwrapper.cpp Replace deprecated Boost Filesystem function 2019-04-30 10:05:54 +03:00
dbwrapper.h Remove unused includes 2019-10-15 22:56:43 +00:00
dummywallet.cpp scripted-diff: Rename InitInterfaces to NodeContext 2019-10-28 10:30:51 -04:00
flatfile.cpp Style cleanup. 2019-02-22 17:38:45 -08:00
flatfile.h Style cleanup. 2019-02-22 17:38:45 -08:00
fs.cpp Fix occurences of c_str() used with size() to data() 2019-10-28 13:41:45 +01:00
fs.h Replace deprecated Boost Filesystem function 2019-04-30 10:05:54 +03:00
hash.cpp Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
hash.h Squashed 'src/secp256k1/' changes from 0b70241850..b19c000063 2019-03-31 11:41:05 -07:00
httprpc.cpp Fix occurences of c_str() used with size() to data() 2019-10-28 13:41:45 +01:00
httprpc.h Remove unused includes 2019-10-15 22:56:43 +00:00
httpserver.cpp http: add missing header bootlegged by boost < 1.72 2019-10-25 13:11:09 +00:00
httpserver.h Remove unused includes 2019-10-15 22:56:43 +00:00
indirectmap.h
init.cpp Run background seeding periodically instead of unpredictably 2019-11-12 15:35:26 -08:00
init.h Pass NodeContext, ConnMan, BanMan references more places 2019-10-28 10:30:51 -04:00
key.cpp Make reasoning about dependencies easier by not including unused dependencies 2019-06-02 17:15:23 +02:00
key.h refactor: Remove unused CExt{Pub,}Key (de)serialization methods 2019-10-22 00:07:31 +02:00
key_io.cpp Remove unused includes 2019-10-15 22:56:43 +00:00
key_io.h
limitedmap.h
logging.cpp scripted-diff: Change BCLog::DB to BCLog::WALLETDB 2019-11-08 18:45:38 +01:00
logging.h scripted-diff: Change BCLog::DB to BCLog::WALLETDB 2019-11-08 18:45:38 +01:00
Makefile.am Merge #17270: Feed environment data into RNG initializers 2019-11-18 13:33:43 +01:00
Makefile.bench.include scripted-diff: test: Move setup_common to test library 2019-11-06 11:56:41 -05:00
Makefile.leveldb.include build: Remove WINVER pre define in Makefile.leveldb.inlcude 2019-01-26 09:28:48 +08:00
Makefile.qt.include Remove BIP70 Support 2019-10-24 16:01:43 -04:00
Makefile.qt_locale.include qt: Periodic translations update 2019-09-30 09:41:11 +02:00
Makefile.qttest.include scripted-diff: test: Move setup_common to test library 2019-11-06 11:56:41 -05:00
Makefile.test.include Add settings_tests 2019-11-07 23:08:22 -04:00
memusage.h
merkleblock.cpp Make reasoning about dependencies easier by not including unused dependencies 2019-06-02 17:15:23 +02:00
merkleblock.h
miner.cpp [validation] Add CValidationState subclasses 2019-10-29 15:46:45 -04:00
miner.h [rpc] mining: Omit uninitialized currentblockweight, currentblocktx 2019-02-12 11:34:57 -05:00
net.cpp Merge #17164: p2p: Avoid allocating memory for addrKnown where we don't need it 2019-11-04 11:17:20 -05:00
net.h Merge #17243: p2p: add PoissonNextSend method that returns mockable time 2019-11-05 12:38:28 -05:00
net_permissions.cpp util: Move ResolveErrMsg to util/error 2019-08-15 10:05:32 -04:00
net_permissions.h Make whitebind/whitelist permissions more flexible 2019-08-11 11:33:27 +09:00
net_processing.cpp Merge #17243: p2p: add PoissonNextSend method that returns mockable time 2019-11-05 12:38:28 -05:00
net_processing.h [validation] Add CValidationState subclasses 2019-10-29 15:46:45 -04:00
net_types.h refactor: Remove addrdb.h dependency from node.h 2019-10-29 11:30:12 +02:00
netaddress.cpp Fix spelling errors identified by codespell 1.15.0 2019-06-11 17:18:16 +02:00
netaddress.h Remove unused includes 2019-10-15 22:56:43 +00:00
netbase.cpp doc: Fix some misspellings 2019-11-04 04:22:53 -05:00
netbase.h util: refactor upper/lowercase functions 2019-08-08 11:35:14 +09:00
netmessagemaker.h
noui.cpp test: Add ASSERT_DEBUG_LOG to unit test framework 2019-11-04 10:42:33 -05:00
noui.h test: Add ASSERT_DEBUG_LOG to unit test framework 2019-11-04 10:42:33 -05:00
optional.h Remove 'boost::optional'-related gcc warnings 2019-01-30 22:44:28 +02:00
outputtype.cpp Add some general std::vector utility functions 2019-10-16 08:56:57 -07:00
outputtype.h Move various SigningProviders to signingprovider.{cpp,h} 2019-07-09 16:20:18 -04:00
pow.cpp
pow.h
prevector.h Remove unused includes 2019-10-15 22:56:43 +00:00
protocol.cpp p2p: Remove BIP61 reject messages 2019-10-02 10:39:14 -04:00
protocol.h Remove unused includes 2019-10-15 22:56:43 +00:00
psbt.cpp Remove unused includes 2019-10-15 22:56:43 +00:00
psbt.h refactor: Remove redundant PSBT copy constructor 2019-11-01 18:12:57 -04:00
pubkey.cpp
pubkey.h refactor: Remove unused CExt{Pub,}Key (de)serialization methods 2019-10-22 00:07:31 +02:00
random.cpp Report amount of data gathered from environment 2019-11-12 15:35:26 -08:00
random.h Run background seeding periodically instead of unpredictably 2019-11-12 15:35:26 -08:00
randomenv.cpp Use thread-safe atomic in perfmon seeder 2019-11-12 15:35:26 -08:00
randomenv.h [MOVEONLY] Move perfmon data gathering to new randomenv module 2019-11-12 14:50:44 -08:00
rest.cpp Remove unused includes 2019-10-15 22:56:43 +00:00
reverse_iterator.h
reverselock.h
scheduler.cpp Run background seeding periodically instead of unpredictably 2019-11-12 15:35:26 -08:00
scheduler.h trivial: correct parameter name in comments 2019-02-10 17:17:32 -05:00
serialize.h Remove unused includes 2019-10-15 22:56:43 +00:00
shutdown.cpp
shutdown.h
span.h
streams.h Remove unused includes 2019-10-15 22:56:43 +00:00
sync.cpp refactor: Remove redundant c_str() calls in formatting 2019-10-28 13:31:33 +01:00
sync.h refactor: consolidate PASTE macros 2019-09-25 10:56:00 -04:00
threadinterrupt.cpp Merge #11640: Make LOCK, LOCK2, TRY_LOCK work with CWaitableCriticalSection 2018-08-31 16:00:38 +02:00
threadinterrupt.h Remove unused includes 2019-10-15 22:56:43 +00:00
threadsafety.h Move LockAnnotation from threadsafety.h (imported code) to sync.h (our code) 2019-05-17 13:29:04 +02:00
timedata.cpp scripted-diff: Make translation bilingual 2019-07-24 16:33:20 +03:00
timedata.h
tinyformat.h tinyformat: Add doc to Bitcoin Core specific strprintf 2019-06-13 09:30:40 -04:00
torcontrol.cpp fix: tor: Call event_base_loopbreak from the event's callback 2019-07-17 15:32:38 +01:00
torcontrol.h Remove unused includes 2019-10-15 22:56:43 +00:00
txdb.cpp Add some general std::vector utility functions 2019-10-16 08:56:57 -07:00
txdb.h Remove unused includes 2019-10-15 22:56:43 +00:00
txmempool.cpp Merge #17316: refactor: Replace all uses of boost::optional with our own Optional type 2019-10-30 14:20:17 -04:00
txmempool.h Remove unnecessary forward declaration 2019-11-09 22:08:29 -08:00
ui_interface.cpp Merge #16092: Don't use global (external) symbols for symbols that are used in only one translation unit 2019-06-18 15:59:53 -04:00
ui_interface.h Remove unused includes 2019-10-15 22:56:43 +00:00
uint256.cpp Remove unused includes 2019-10-15 22:56:43 +00:00
uint256.h Remove unused includes 2019-10-15 22:56:43 +00:00
undo.h Extract CSipHasher to it's own file in crypto/ directory. 2018-11-05 09:25:15 -08:00
validation.cpp Merge #15931: Remove GetDepthInMainChain dependency on locked chain interface 2019-11-08 23:23:14 +13:00
validation.h Merge #17342: refactor: Clean up nScriptCheckThreads 2019-11-07 10:07:11 -05:00
validationinterface.cpp Pass block height in Chain::BlockConnected/Chain::BlockDisconnected 2019-11-05 12:59:16 -05:00
validationinterface.h Pass block height in Chain::BlockConnected/Chain::BlockDisconnected 2019-11-05 12:59:16 -05:00
version.h
versionbits.cpp doc: Improve versionbits.h documentation 2019-08-15 11:02:55 -04:00
versionbits.h doc: Improve versionbits.h documentation 2019-08-15 11:02:55 -04:00
versionbitsinfo.cpp [Consensus] Bury segwit deployment 2019-08-14 15:52:52 -04:00
versionbitsinfo.h MOVEONLY: Move versionbits info out of versionbits.o 2018-09-23 22:55:11 +02:00
walletinitinterface.h scripted-diff: Rename InitInterfaces to NodeContext 2019-10-28 10:30:51 -04:00
warnings.cpp scripted-diff: Make translation bilingual 2019-07-24 16:33:20 +03:00
warnings.h Remove unused includes 2019-10-15 22:56:43 +00:00