Pieter Wuille
046cbb0091
Use randbits instead of ad-hoc emulation in prevector tests
...
Cherry-picked from: 2ada67852174a76753080d65a7adbe27241a9caa
2024-06-13 11:42:49 -07:00
Pieter Wuille
9fa9876e4c
Replace rand() & ((1 << N) - 1) with randbits(N)
...
Cherry-picked from: 5f0b04eedc5bbdb9319c9f1f1a6c599337f5bbe3
2024-06-13 11:42:48 -07:00
Pieter Wuille
a36981dec6
Replace more rand() % NUM by randranges
...
Cherry-picked from: 3ecabae36364e905e7821fba3e60aa7f8418de6c
2024-06-13 11:42:48 -07:00
Pieter Wuille
fe5b701634
scripted-diff: use insecure_rand256/randrange more
...
-BEGIN VERIFY SCRIPT-
sed -i "s/\<GetRandHash(/insecure_rand256(/" src/test/*_tests.cpp
sed -i "s/\<GetRand(/insecure_randrange(/" src/test/*_tests.cpp src/test/test_bitcoin.cpp
sed -i 's/\<insecure_rand() % \([0-9]\+\)/insecure_randrange(\1)/g' src/test/*_tests.cpp
-END VERIFY SCRIPT-
Cherry-picked from: efee1db21a652019e0ab18fffc233d91bb7f1816
2024-06-13 11:42:48 -07:00
Pieter Wuille
2ee602e3ce
Add various insecure_rand wrappers for tests
...
Cherry-picked from: 1119927df03c94f9306e4d92f55d147b900522fb
2024-06-13 11:42:47 -07:00
Pieter Wuille
9feb51fe9d
Merge test_random.h into test_bitcoin.h
...
Cherry-picked from: 124d13a58cdcd9f66eeffc7e6281e3eb129e3398
2024-06-13 11:42:47 -07:00
Pieter Wuille
a8cad7ed4c
Add FastRandomContext::rand256() and ::randbytes()
...
FastRandomContext now provides all functionality that the real Rand* functions
provide.
Cherry-picked from: 37e864eb9fee4b592bd61c5ec3555b00a2de2cf7
2024-06-13 11:42:47 -07:00
Pieter Wuille
3f511675be
Add a FastRandomContext::randrange and use it
...
Cherry-picked from: 4fd2d2fc97e21efceab849576e544160fd5e3e3d
2024-06-13 11:42:46 -07:00
Pieter Wuille
b2dc5e349b
Switch FastRandomContext to ChaCha20
...
Cherry-picked from: 16329224e70d0525208f6b0ba00c5e1531a4f5ea
2024-06-13 11:42:46 -07:00
Wladimir J. van der Laan
74888ca567
random: Add fallback if getrandom syscall not available
...
If the code was compiled with newer (>=3.17) kernel headers but executed
on a system without the system call, every use of random would crash the
program. Add a fallback for that case.
Cherry-picked from: 7e6dcd9995b99e894b8017f09016c405b066ca36
2024-06-13 11:42:46 -07:00
Wladimir J. van der Laan
18a8fd4506
sanity: Move OS random to sanity check function
...
Move the OS random test to a sanity check function that is called every
time bitcoind is initialized.
Keep `src/test/random_tests.cpp` for the case that later random tests
are added, and keep a rudimentary test that just calls the sanity check.
Cherry-picked from: 7cad84929907c4294f07377453aa77887911b486
2024-06-13 11:42:45 -07:00
Wladimir J. van der Laan
f75d5ea728
util: Specific GetOSRandom for Linux/FreeBSD/OpenBSD
...
These are available in sandboxes without access to files or
devices. Also [they are safer and more straightforward](https://en.wikipedia.org/wiki/Entropy-supplying_system_calls )
to use than `/dev/urandom` as reading from a file has quite a few edge
cases:
- Linux: `getrandom(buf, buflen, 0)`. [getrandom(2)](http://man7.org/linux/man-pages/man2/getrandom.2.html )
was introduced in version 3.17 of the Linux kernel.
- OpenBSD: `getentropy(buf, buflen)`. The [getentropy(2)](http://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/getentropy.2 )
function appeared in OpenBSD 5.6.
- FreeBSD and NetBSD: `sysctl(KERN_ARND)`. Not sure when this was added
but it has existed for quite a while.
Alternatives:
- Linux has sysctl `CTL_KERN` / `KERN_RANDOM` / `RANDOM_UUID`
which gives 16 bytes of randomness. This may be available
on older kernels, however [sysctl is deprecated on Linux](https://lwn.net/Articles/605392/ )
and even removed in some distros so we shouldn't use it.
Add tests for `GetOSRand()`:
- Test that no error happens (otherwise `RandFailure()` which aborts)
- Test that all 32 bytes are overwritten (initialize with zeros, try multiple times)
Discussion:
- When to use these? Currently they are always used when available.
Another option would be to use them only when `/dev/urandom` is not
available. But this would mean these code paths receive less testing,
and I'm not sure there is any reason to prefer `/dev/urandom`.
Closes : #9676
Cherry-picked from: 224e6eb089a0f4977d22f3803fc27e44b5e7eea5
Contains squashed commit of aa09ccbb74ea9febd83ce3362238ac5339069909 squashme: comment that NUM_OS_RANDOM_BYTES should not be changed lightly
2024-06-13 11:42:45 -07:00
Pieter Wuille
e25cad0012
Add ChaCha20
...
Cherry-picked from: e04326fe6652543dc26d90eba4a48fbdc935fd0c
2024-06-13 11:42:45 -07:00
Pieter Wuille
6ec0fe4acb
FastRandom benchmark
...
Cherry-picked from: 663fbae7776b0c238f6f27d73811b4bc627d0b6b
2024-06-13 11:42:44 -07:00
Pieter Wuille
cab3eb10ab
Introduce FastRandomContext::randbool()
...
Cherry-picked from: c21cbe61c6249bcfca098705df6f9b4baab9f296
2024-06-13 11:42:44 -07:00
Old Dip Tracker
0879cb86e7
Merge pull request #3529 from mazyaryousefinia/master
...
fix: update Persian readme
2024-06-12 13:38:28 +02:00
chromatic
9d6b484134
Merge pull request #3494 from patricklodder/1.15.0-ax_cxx_compile_stdcxx
...
build: update AX_CXX_COMPILE_STDCXX to serial 18
2024-05-30 20:33:08 -07:00
mazyaryousefinia
c32958a0fe
Update Persian readme
2024-04-27 14:47:40 +03:30
chromatic
27b08e8fd1
Merge pull request #3517 from patricklodder/ci/codeql-v3-dev
...
ci: update codeql to v3
2024-04-13 22:42:55 -07:00
Patrick Lodder
73d977b4d5
ci: update codeql to v3
2024-04-11 16:54:16 -04:00
Old Dip Tracker
497c6026fc
Merge pull request #3506 from danielw86dev/1.15.0-dev-fix-rebrand-koinu
...
fix: missing koinu string
2024-04-07 16:11:04 +02:00
chromatic
672018c33c
Merge pull request #3499 from danielw86dev/1.15.0-dev-add-rpc-uptime
...
rpc: add uptime (backport)
2024-04-03 17:49:28 -07:00
danielw86dev
45dd454e25
fix: mising koinu rebrand
2024-04-02 19:32:55 +02:00
Ricardo Velhote
69a7fc7cd6
[RPC] Add an uptime command that displays the amount of time that bitcoind has been running
...
Cherry-picked from: c07475294a
Resolved conflict:
- change path to qa\rpc-tests\uptime.py and qa\pull-tester\rpc-tests.py
- src\util.cpp
Manually executed:
- qa\rpc-tests\uptime.py: overridden setup_network(), skip connecting nodes
- doc\rpc-maturity.md: add uptime rpc
Co-Authored-By: danielw86dev <67072678+danielw86dev@users.noreply.github.com>
2024-04-02 13:37:27 +02:00
chromatic
6c0095bed1
Merge pull request #3488 from patricklodder/1.15-fs-wrapper
...
backport: fs wrapper
2024-03-27 16:03:22 -07:00
Patrick Lodder
6c3a24b252
build: update AX_CXX_COMPILE_STDCXX to serial 18
...
Downloaded the latest version available from
https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
at the time of writing. This allows configuring for up to c++20.
2024-03-27 16:18:01 -04:00
chromatic
3738a5311a
Merge pull request #3490 from patricklodder/1.15.0-const-comparator-operator
...
net: make IteratorComparator's operator const
2024-03-27 12:32:08 -07:00
chromatic
aefb848ef4
Merge pull request #3492 from patricklodder/1.15-ci-cxx14-experimental
...
ci: run experimental CIs with c++14
2024-03-27 11:58:40 -07:00
Old Dip Tracker
e249afc03e
Merge pull request #3362 from edtubbs/1.14.7-dev-freetype
...
depends: updated to freetype 2.11.0
2024-03-27 01:55:02 +01:00
Patrick Lodder
9134d9e090
ci: run experimental CIs with c++14
2024-03-25 21:16:00 -04:00
Ed Tubbs
97c64ffdba
depends: updated to freetype 2.11.0
2024-03-25 22:49:29 +00:00
Patrick Lodder
bcdcf24f35
net: make IteratorComparator's operator const
...
Although this is okay to be sloppy on c++11, it is not okay when
using c++17. See: https://cplusplus.github.io/LWG/issue2542
2024-03-24 22:24:06 -04:00
Wladimir J. van der Laan
b16ff7152c
torcontrol: Use fs::path instead of std::string for private key path
...
Cherry-picked from: 75594bd7f
2024-03-24 16:38:08 -04:00
Wladimir J. van der Laan
d1dba0ac38
Use fsbridge for fopen and freopen
...
Abstracts away how a path is opened to a `FILE*`.
Reduces the number of places where path is converted to a string
for anything else but printing.
Cherry-picked from: 2a5f5747
Conflicts:
- additional instances in bitcoin-tx.cpp and test/script_tests.cpp
2024-03-24 16:38:08 -04:00
Patrick Lodder
a2caaf1f99
rewire calls to boost::filesystem to use the fs wrapper
...
* replaces boost/filesystem includes with fs.h
* replaces boost::filesystem:: with fs::
* removes file-local fs namespace aliases
* removes unused includes from:
* net.h
* src/wallet/walletdb.cpp
* adds missing includes in:
* rpc/protocol.cpp
* test/dbwrapper_tests.cpp
* wallet/rpcutil.cpp
2024-03-24 16:38:08 -04:00
Wladimir J. van der Laan
e044c640b3
Add fs.cpp/h
...
Cherry-picked from: 19e36bbef
2024-03-24 16:38:04 -04:00
Old Dip Tracker
5eaff1e096
Merge pull request #3480 from spencerlepine/1.15.0-dev-typos
...
fix: minor typo corrections
2024-03-15 01:07:17 +01:00
Old Dip Tracker
fbc0c28b8b
Merge pull request #3479 from TailsFanLOL/patch-1
...
Fix a minor formatting mistake in build-unix.md
2024-03-14 15:31:42 +01:00
Spencer Lepine
346a51ca0a
fix: minor typo corrections
2024-03-13 15:07:17 -07:00
ApertureUA
1282bdbe66
Fix a minor formatting mistake in build-unix.md
...
[Minor Spelling Mistake, I Win](https://github-production-user-asset-6210df.s3.amazonaws.com/96183936/284324285-d9adcb91-4aa2-4fa1-bccc-c1a9235d4109.webm )
2024-03-13 15:49:34 +02:00
chromatic
ba6480d3c6
Merge pull request #3456 from patricklodder/1.15.0-iwyu-bench-1
...
bench: iwyu cleanup on non-test sources
2024-03-10 18:25:06 -07:00
Old Dip Tracker
ff8f573941
Merge pull request #3446 from slightlyskepticalpotat/1.14.7-dev
...
check numerus format in check-translations.py
2024-03-10 22:26:45 +01:00
Anthony Chen
b4d92e1062
add numerus format check to check-translations.py (translation linter)
...
[squash] check for child elements/lack thereof under translation elements
[squash] add context for changes
2024-03-08 20:11:50 -05:00
Old Dip Tracker
5a23f008fa
Merge pull request #3462 from chromatic/1.15.0-dev-remove-qt4-ifdefs
...
Remove Qt 4 ifdefs
2024-03-09 01:01:28 +01:00
chromatic
0b67cfb0dd
Merge pull request #3465 from patricklodder/1.15.0-remove-qt4-m4
...
build: remove qt4 from macros
2024-03-08 14:39:56 -08:00
Old Dip Tracker
30990b082e
Merge pull request #3473 from cuinix/master
...
fix some typos in comments
2024-03-08 21:24:36 +01:00
chromatic
3e18b4c002
Remove Qt 4 ifdefs
...
Everything that remains should assume at least Qt 5.0 now.
2024-03-07 14:31:45 -08:00
cuinix
aab8209f14
fix some typos in comments
...
Signed-off-by: cuinix <915115094@qq.com>
2024-03-07 13:54:32 +08:00
chromatic
36b8b7a618
Merge pull request #3467 from patricklodder/1.15.0-update-ci-internals
...
ci: update actions to v4
2024-03-04 23:10:20 -08:00
chromatic
bab1bfc398
Merge pull request #3458 from patricklodder/1.15.0-choose-std
...
build: allow c++14 standard to be used for compilation
2024-03-03 18:56:41 -08:00