Commit graph

300 commits

Author SHA1 Message Date
jeffro256
ed955bf751
build: fix build with Boost 1.85 and remove instances of viewkey logging
1. Use `std::is_standard_layout` and `std::is_trivially_copyable` instead of `std::is_pod` for KV byte-wise serialization, which fixes compile issue for Boost UUIDs
2. Use `std::has_unique_object_representations` instead of `alignof(T) == 1` for epee byte spans and epee hex functions
3. Removed reimplementation of `std::hash` for `boost::uuids::uuid
4. Removed `<<` operator overload for `crypto::secret_key`
5. Removed instances in code where private view key was dumped to the log in plaintext
2024-09-06 11:46:22 -05:00
copyCat
341771ac3e copyright: bump to 2024 2024-05-21 16:29:33 +00:00
luigi1111
9d960f056e
Merge pull request #9198
e151ff7 update blake2b test vectors (koe)
fa47c7b add blake2b to src/crypto (koe)
2024-05-20 23:13:25 -05:00
koe
e151ff711f update blake2b test vectors 2024-03-21 09:51:40 -05:00
tobtoht
cdab0d489c
cmake: require libsodium 2024-02-24 16:26:43 +01:00
koe
fa47c7b7d6 add blake2b to src/crypto 2024-02-21 19:39:11 -06:00
SChernykh
ade57b694f JH hash compiler workarounds
- Fixed uninitialized `state->x` warning
- Fixed broken code with `-O3` or `-Ofast`

The old code is known to break GCC 10.1 and GCC 11.4
2023-11-04 21:01:07 +01:00
koe
16d17f6707 add crypto/generators for direct access to canonical fixed generators 2023-06-28 09:52:27 -05:00
luigi1111
9bf06ea75d
Merge pull request #8698
5b4fea7 Copyright: Update to 2023 (mj-xmr)
2023-04-25 11:12:56 -04:00
SChernykh
d59498101c Fixed deadlock and crash when syncing with full dataset on Windows
It's not allowed to use WaitForSingleObject with _beginthread, because the thread closes its own handle before exiting.

So the wait function will either wait on an invalid handle, or on a different handle used by something else.

Or, if it starts waiting before the thread exits, the behavior is undefined according to MS: "If this handle is closed while the wait is still pending, the function's behavior is undefined."

In my test sync I observed threads getting stuck infinitely on WaitForSingleObject, and then rx_set_main_seedhash spamming new threads when RandomX seed changes again. Eventually the system ran out of resources, and monerod aborted with "Couldn't start RandomX seed thread" message.

This PR fixes it by using `_beginthreadex` instead and explicitly closing the handle when it's safe.
2023-03-29 08:43:47 +02:00
SChernykh
b247f985db Demote large pages warning to mdebug 2023-01-17 18:13:07 +01:00
mj-xmr
5b4fea72cf Copyright: Update to 2023
Co-authored-by: plowsof <plowsof@protonmail.com>
extra files
2023-01-16 13:00:18 +01:00
SChernykh
b27a17110d RandomX: print VM allocation warnings only once 2023-01-11 19:15:11 +01:00
luigi1111
451ff7bd91
Merge pull request #8677
fe8522c Bump WINVER to 0x0600 (Windows Vista) (SChernykh) dab7d01 Refactored rx-slow-hash.c (SChernykh)
2023-01-11 12:10:02 -05:00
SChernykh
dab7d01dc0 Refactored rx-slow-hash.c
- Straight-forward call interface: `void rx_slow_hash(const char *seedhash, const void *data, size_t length, char *result_hash)`
- Consensus chain seed hash is now updated by calling `rx_set_main_seedhash` whenever a block is added/removed or a reorg happens
- `rx_slow_hash` will compute correct hash no matter if `rx_set_main_seedhash` was called or not (the only difference is performance)
- New environment variable `MONERO_RANDOMX_FULL_MEM` to force use the full dataset for PoW verification (faster block verification)
- When dataset is used for PoW verification, dataset updates don't stall other threads (verification is done in light mode then)
- When mining is running, PoW checks now also use dataset for faster verification
2023-01-09 07:43:07 +01:00
koe
b1bce857c9 miscellaneous crypto updates 2023-01-03 16:50:08 -06:00
luigi1111
53a8cf7f8c
Merge pull request #8428
7a31d25 keccak: error out if passed mdlen 100 (moneromooo-monero)
2022-08-22 22:45:59 -05:00
Jeffrey Ryan
4d7f6f5cd5 GCC: fix some unused warnings
hash_extra: don't test for success in `jh_hash` and `skein_hash` since its guaranteed
device_ledger: move anonymous global variable apdu_verbose into .cpp file
Add comments to `refreshed` method variable in wallet2
2022-07-11 20:32:03 -05:00
moneromooo-monero
7a31d25b67
keccak: error out if passed mdlen 100
If we were to call it with 100, it would cause rsiz to be 0,
leading to an infinite loop.
This is really a pedantic patch, but since there's already a
range test, might as well make it better.
2022-07-11 17:43:59 +00:00
luigi1111
156151396e
Merge pull request #8262
268a039 Optimized keccak implementation (SChernykh)
2022-05-10 16:47:13 -05:00
SChernykh
268a0393e9 Optimized keccak implementation
All tests were conducted on the same PC (Ryzen 5 5600X running at fixed 4.65 GHz).

Before:
test_cn_fast_hash<32> (100000 calls) - OK: 1 us/call
test_cn_fast_hash<16384> (1000 calls) - OK: 164 us/call

After:
test_cn_fast_hash<32> (100000 calls) - OK: 0 us/call
test_cn_fast_hash<16384> (1000 calls) - OK: 31 us/call

More than 5 times speedup for cn_fast_hash.

Also noticed consistent 1-2% improvement in test_construct_tx results.
2022-04-18 10:01:13 +02:00
j-berman
ea87b30f89 Add view tags to outputs to reduce wallet scanning time
Implements view tags as proposed by @UkoeHB in MRL issue
https://github.com/monero-project/research-lab/issues/73

At tx construction, the sender adds a 1-byte view tag to each
output. The view tag is derived from the sender-receiver
shared secret. When scanning for outputs, the receiver can
check the view tag for a match, in order to reduce scanning
time. When the view tag does not match, the wallet avoids the
more expensive EC operations when deriving the output public
key using the shared secret.
2022-04-18 00:49:53 -07:00
mj-xmr
4db6aed98c CMake: Add missing headers via monero_find_all_headers macro 2022-04-06 08:12:44 +02:00
mj-xmr
da9aa1f7f8
Copyright: Update to 2022 2022-03-04 06:59:20 +01:00
luigi1111
abae63c37d
Merge pull request #8052
c36ea26 fix ge_p3_is_point_at_infinity(), which is evaluating field elements that haven't been reduced by the field order (koe)
2022-03-02 18:52:51 -05:00
luigi1111
5eaa4434e8
Merge pull request #7877
e08abaa multisig key exchange update and refactor (koe)
2022-03-02 18:51:54 -05:00
koe
e08abaa43f multisig key exchange update and refactor 2022-02-22 16:37:42 -06:00
moneromooo-monero
06e6c8bf4a
crypto: fix constant randomx exceptions in large page allocator
If allocating large pages fails, we don't try again.
This has the obvious drawback of not being able to use large pages
if they fail once.
2022-02-19 13:15:10 +00:00
koe
c36ea26e5c fix ge_p3_is_point_at_infinity(), which is evaluating field elements that haven't been reduced by the field order 2022-01-25 07:14:46 -06:00
luigi1111
2844b5b8db
Merge pull request #8031
187633c slow_hash: don't blow out Mac stack on ARM64 (Howard Chu)
2021-11-09 22:50:36 -06:00
Howard Chu
187633c0ca
slow_hash: don't blow out Mac stack on ARM64 2021-10-30 22:24:55 +01:00
selsta
548cfc8d68
crypto: fix typo in ifdef 2021-10-29 17:55:51 +02:00
Howard Chu
9973edd4c3
ARMv8: detect AES support dynamically 2021-10-10 16:52:30 +01:00
selsta
0794811b40
cmake: set xcode file type 2021-04-28 14:49:13 +02:00
luigi1111
247db4e304
Merge pull request #7373
86263b3 Honor LARGE_PAGES flag in randomx umask (Howard Chu)
2021-03-29 21:41:56 -04:00
Howard Chu
86263b386c
Honor LARGE_PAGES flag in randomx umask 2021-02-11 14:42:49 +00:00
moneromooo-monero
19b228393f
New add_aux_pow RPC to support merge mining 2021-02-09 11:58:21 +00:00
moneromooo-monero
5ed604fe5b
crypto: fix non zero scalar being 0 after reducing 2020-12-04 01:00:03 +00:00
Riccardo Spagni
aefa7740c3
Merge pull request #6111
d20ff4f64 functional_tests: add a large (many randomx epochs) p2p reorg test (moneromooo-monero)
6a0b3b1f8 functional_tests: add randomx tests (moneromooo-monero)
9d42649d5 core: fix mining from a block that's not the current top (moneromooo-monero)
2020-09-06 15:49:37 +02:00
moneromooo-monero
6a0b3b1f8a
functional_tests: add randomx tests 2020-08-27 15:13:03 +00:00
Sarang Noether
4b328c6616 CLSAG signatures 2020-08-27 12:43:29 +00:00
Alexander Blair
e2e09d00c2
Merge pull request #6337
a11ec4ac1 Support for supercop ASM in wallet, and benchmark for supercop (Lee Clagett)
2020-08-16 12:38:44 -07:00
Sarang Noether
6bfcd31015 Updates InProofV1, OutProofV1, and ReserveProofV1 to new V2 variants that include all public proof parameters in Schnorr challenges, along with hash function domain separators. Includes new randomized unit tests. 2020-08-09 18:42:15 -04:00
Alexander Blair
bb0241da6e
Merge pull request #6538
7178bb5c8 keccak: remove aligned check (moneromooo-monero)
2020-07-19 03:38:53 -07:00
moneromooo-monero
7178bb5c84
keccak: remove aligned check
Some tools report the alignment check as UB, which seems a bit
dubious, but since the performance difference between the two
versions is minimal, I'll go with the safe version
2020-05-16 12:28:27 +00:00
Lee Clagett
a11ec4ac1d Support for supercop ASM in wallet, and benchmark for supercop 2020-05-16 10:25:17 +00:00
SomaticFanatic
5ef0607da6 Update copyright year to 2020
Update copyright year to 2020
2020-05-06 22:36:54 -04:00
luigi1111
b4023dcfc5
Merge pull request #6441
613071f use memwipe on secret k/alpha values (moneromooo-monero)
2020-05-05 23:39:32 -05:00
moneromooo-monero
613071f4fa
use memwipe on secret k/alpha values
Reported by UkoeHB_ and sarang
2020-04-15 01:16:31 +00:00
luigi1111
0253f86fde
Merge pull request #6298
fe92fa1 [randomx] Add missing randomx_vm_set_cache() (cohcho)
2020-03-31 13:36:21 -05:00