Commit Graph

13788 Commits

Author SHA1 Message Date
Wladimir J. van der Laan b997b30a91 wallet: Change CCrypter to use vectors with secure allocator
Change CCrypter to use vectors with secure allocator instead of buffers
on in the object itself which will end up on the stack. This avoids
having to call LockedPageManager to lock stack memory pages to prevent the
memory from being swapped to disk. This is wasteful.
2020-07-31 06:43:08 +01:00
Thomas Snider 20280556ba [trivial] Switched constants to sizeof() 2020-07-31 06:43:08 +01:00
Homu 2589b2fcc5 Auto merge of #4614 - str4d:ctaes, r=str4d
Replace OpenSSL AES with ctaes-based version

Backported from upstream PR https://github.com/bitcoin/bitcoin/pull/7689.

This is backported primarily to remove merge conflicts for a subsequent
backport, and also helps us towards removing OpenSSL. Its actual usage
in wallet encryption would be replaced by a more modern construction
before we make wallet encryption a supported feature, but for now this
does not affect anyone using the experimental feature.
2020-07-31 00:14:40 +00:00
Jack Grigg fb2edcc352 Debian: Add copyright entries for ctaes and secp256k1 2020-07-30 05:57:00 +01:00
Homu f39e4dbaf1 Auto merge of #4627 - LarryRuane:issue4596-flush-wallet-db, r=str4d
flush witness cache (SetBestChain()) on clean shutdown

Closes #4596, follow-on to #4573. In addition to flushing witness data on shutdown, fix the RPC test that was preventing this change from being part of #4573.
2020-07-29 13:12:04 +00:00
Homu 615efd2a52 Auto merge of #4584 - defuse:update-ignore, r=str4d
Block release when we haven't checked dependency updates for security fixes
2020-07-29 10:45:44 +00:00
Homu 24f3bcf275 Auto merge of #4623 - str4d:metrics-locking, r=str4d
metrics: Collect general stats before clearing screen

This prevents the metrics screen from flashing if locks are being held
by long-running processes, specifically cs_main during block validation.

We split up locking on cs_main and cs_vNodes to make obtaining the locks
easier, at the expense of potentially having slightly out-of-sync
statistics (which doesn't really matter, as all we are fetching from the
latter lock is the number of connected peers).
2020-07-29 09:33:07 +00:00
Homu 91cb52adc5 Auto merge of #4606 - str4d:safe-mode-alert-for-pre-heartwood-nodes, r=str4d
Send alert to put pre-Heartwood nodes into safe mode.

The alert targets nodes running protocol version <= 170010.
Heartwood-compatible nodes run protocol version >= 170011.
2020-07-29 07:59:59 +00:00
Homu b1b65121ae Auto merge of #4590 - cwsaunders:master, r=str4d
Update two dev tool files from Python 2 to Python 3
2020-07-29 06:45:45 +00:00
Homu e789632c32 Auto merge of #4640 - therealyingtong:v3.1.0-release-notes-update, r=str4d
Add Debian8 deprecation to release notes
2020-07-29 05:39:22 +00:00
ying tong f7b3a55505
Update doc/release-notes/release-notes-3.1.0.md
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2020-07-29 07:21:25 +08:00
therealyingtong b5ee15b781
Add Debian8 deprecation to release notes 2020-07-29 05:42:12 +08:00
Homu 65f0a4736a Auto merge of #4638 - therealyingtong:release-v3.1.0, r=daira
Release v3.1.0
2020-07-28 12:11:27 +00:00
therealyingtong 369c16ef44
Set APPROX_RELEASE_HEIGHT to 917000 and update release-notes-3.1.0.md 2020-07-28 07:57:58 +08:00
therealyingtong 228b17c9e0
make-release.py: Updated release notes and changelog for 3.1.0. 2020-07-28 07:02:06 +08:00
therealyingtong f25e86a460
make-release.py: Updated manpages for 3.1.0. 2020-07-28 07:02:06 +08:00
therealyingtong e4963385a4
make-release.py: Versioning changes for 3.1.0. 2020-07-28 06:54:02 +08:00
Homu d08883263f Auto merge of #4636 - daira:disable-mining-regression, r=daira
Fix "--disable-mining" build regression

closes #4634

Test by building with:
* `CONFIGURE_FLAGS="--disable-tests --disable-mining --disable-bench" zcutil/build.sh`
* `zcutil/distclean.sh`
* `CONFIGURE_FLAGS="--disable-mining" zcutil/build.sh`

After the second build, run `qa/zcash/full-test-suite.py`. Stop when it gets to the RPC tests, which will hang. The preceding parts of the test suite are all expected to pass.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-27 21:41:25 +00:00
Homu 162d5a50ee Auto merge of #4610 - ebfull:testnet-dev-fund, r=str4d
Add dev fund addresses and set activation height for testnet NU4 activation.
2020-07-27 09:05:53 +00:00
Daira Hopwood 40b9cbf0b1 Allow Equihash validation tests to be compiled with --disable-mining.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-25 16:33:02 +01:00
Daira Hopwood c99a00596f Fix --disable-mining build regression. closes #4634
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-25 15:41:39 +01:00
therealyingtong 283287ab5b
Use 51 Testnet Dev Fund addresses, and adjust the end heights.
Co-authored-by: Ying Tong Lai <yingtong@electriccoin.co>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-25 09:45:30 +08:00
therealyingtong 62c3613816
Delay testnet activation height by one week 2020-07-24 08:15:35 +08:00
Homu de52eed974 Auto merge of #4628 - therealyingtong:block-903002-bug, r=str4d
Pass HistoryNode through Rust FFI as a C array

`std::array<T>` is guaranteed to store `T` contiguously. However, there is
no guarantee that `sizeof(std::array<unsigned char, N>) == N`, which
prevents us from interpreting `std::array<std::array<unsigned char, N>, 32>`
as `&[[u8; N]]` on the Rust side of the FFI.

Instead, we define `HistoryNode` as a struct wrapping a C array, which
(as checked by `static_assert`) contains no padding.

This is equivalent to 82fe37d22b, which
fixed this issue when passing a slice of `HistoryEntry`s from C++ to Rust;
the bug fixed here is writing `HistoryNodes` from Rust into C++ memory.
2020-07-23 22:40:42 +00:00
Kris Nuttycombe 04b4d42767 Zero-initialize HistoryNode values. 2020-07-23 16:24:48 -06:00
therealyingtong 13aa74aa45
Pass HistoryNode struct to librustzcash FFI 2020-07-21 17:56:47 +08:00
Larry Ruane a65ecaad54 flush wallet db (SetBestChain()) on clean shutdown 2020-07-20 20:04:48 -06:00
Jack Grigg 5d15ee1f22 metrics: Collect general stats before clearing screen
This prevents the metrics screen from flashing if locks are being held
by long-running processes, specifically cs_main during block validation.

We split up locking on cs_main and cs_vNodes to make obtaining the locks
easier, at the expense of potentially having slightly out-of-sync
statistics (which doesn't really matter, as all we are fetching from the
latter lock is the number of connected peers).
2020-07-18 23:35:19 +12:00
Homu d058568e0a Auto merge of #4617 - daira:release-notes-3.0.0-formatting, r=daira
Fix the formatting of the 3.0.0 release notes

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-17 20:18:26 +00:00
Homu 6631f218d3 Auto merge of #4616 - daira:4615/hashrate-display, r=daira
Use SI prefixes for hash rates on the metrics screen

fixes #4615
2020-07-17 19:11:36 +00:00
therealyingtong ab4d2ede40
Set PROTOCOL_VERSION to 170012 2020-07-18 00:29:03 +08:00
therealyingtong 8a4c51508a
Set Canopy testnet activation height to 1020500 2020-07-18 00:28:45 +08:00
Daira Hopwood f7c7c76bee Fix the formatting of the 3.0.0 release notes.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-17 15:15:06 +01:00
Daira Hopwood d9307ddd83 Add unit tests for DisplayDuration, DisplaySize, and DisplayHashRate.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-17 13:59:27 +01:00
Daira Hopwood 460a601e9b Metrics screen: display hash rates using SI prefixes rather than as powers of 2.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-17 13:56:33 +01:00
Daira Hopwood 976dce7696 src/metrics.cpp: cosmetic whitespace changes.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-07-17 13:54:58 +01:00
Jack Grigg 29594f5a91 build: shuffle gtest Makefile so that crypto can be used by the wallet
Wallet must come before crypto, otherwise linking fails on some platforms.

Includes a tangentially-related general cleanup rather than making the Makefile
sloppier.
2020-07-17 20:14:39 +12:00
Cory Fields bdccf18b2e build: Enumerate ctaes rather than globbing 2020-07-17 19:12:53 +12:00
Cory Fields 1682a27c1d crypter: add tests for crypter
Verify that results correct (match known values), consistent (encrypt->decrypt
matches the original), and compatible with the previous openssl implementation.

Also check that failed encrypts/decrypts fail the exact same way as openssl.
2020-07-17 19:12:53 +12:00
Cory Fields 5de6a60c63 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.
2020-07-17 18:52:13 +12:00
Cory Fields 1e056efa79 crypter: hook up the new aes cbc classes 2020-07-17 18:51:46 +12:00
Cory Fields a25a252047 crypter: constify encrypt/decrypt
This makes CCrypter easier to pass aroundf for tests
2020-07-17 18:50:11 +12:00
Cory Fields 8e31c753d7 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.
2020-07-17 18:49:51 +12:00
Cory Fields d5b30b36dd crypto: add aes cbc tests 2020-07-17 18:48:55 +12:00
Cory Fields da6ed8088c 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).
2020-07-17 18:48:45 +12:00
Pieter Wuille 77b5fc23cc Add ctaes-based constant time AES implementation 2020-07-17 18:48:21 +12:00
Jack Grigg 513016bf3d Merge commit '114d98bec9990cff18613adf7ff74c1322f00a8b' as 'src/crypto/ctaes' 2020-07-17 18:46:51 +12:00
Jack Grigg 114d98bec9 Squashed 'src/crypto/ctaes/' content from commit 003a4acfc
git-subtree-dir: src/crypto/ctaes
git-subtree-split: 003a4acfc273932ab8c2e276cde3b4f3541012dd
2020-07-17 18:46:51 +12:00
ewillbefull@gmail.com c0a19854bf Add dev fund addresses for testnet NU4 activation. 2020-07-15 20:09:39 -06:00
Homu d292376176 Auto merge of #4609 - therealyingtong:release-v3.1.0-rc2, r=daira
Release v3.1.0-rc2
2020-07-15 21:25:37 +00:00