aboutsummaryrefslogtreecommitdiff
path: root/tests/unit_tests (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2019-07-04keccak: guard against misaligned memory accesses on ARMmoneromooo-monero1-0/+17
The code generated is exactly the same as the direct access one on x86_64
2019-05-22unit_tests: make the density test a bit less stringentmoneromooo-monero1-1/+1
It's an inherently random test
2019-05-02blockchain: keep a rolling long term block weight medianmoneromooo-monero2-0/+203
2019-05-01fix wide difficulty conversion with some versions of boostmoneromooo-monero1-4/+4
2019-05-01wallet2: reject standalone short payment IDs in monero: URI APImoneromooo-monero1-3/+1
2019-04-25unit_tests: fix crash in debug in output_distribution testmoneromooo-monero1-0/+7
updating the block size limit needs recent block sizes, so we feed it dummy ones
2019-04-25rpc: improve get_output_distributionmoneromooo-monero1-11/+18
It can now handle small reorgs without having to rescan the whole blockchain. Also add a test for it.
2019-04-23unit_tests: don't delete log file on windows, it will failmoneromooo-monero1-0/+3
2019-04-19Fix socks tests in windows and handle errors betterLee Clagett1-7/+13
2019-04-18wallet2: "output lineup" fake out selectionmoneromooo-monero1-0/+117
Based on python code by sarang: https://github.com/SarangNoether/skunkworks/blob/outputs/outputs/simulate.py
2019-04-17testdb: add override keyword where missingstoffu1-6/+6
and delete obsolete BlockchainBDB::get_tx_output_indices along the way
2019-04-16unit_tests: undo is_blocked implementation factoringmoneromooo-monero1-1/+12
The is_host_blocked method is not on master yet
2019-04-14blockchain_db: fix db txn ending too earlymoneromooo-monero1-0/+4
The db txn in add_block ending caused the entire overarching batch txn to stop. Also add a new guard class so a db txn can be stopped in the face of exceptions. Also use a read only db txn in init when the db itself is read only, and do not save the max tx size in that case.
2019-04-11p2p: fix integer overflow in host bansmoneromooo-monero1-12/+17
2019-04-11ringct: prevent use of full ringct signatures for more than one inputmoneromooo-monero2-142/+57
2019-04-09unit_tests/long_term_block_weight: some tweaks that seem to make more sensestoffu1-8/+9
2019-04-03unit_tests: fix long term block weight test after cache changemoneromooo-monero1-0/+5
2019-03-25Added socks proxy (tor/i2pd/kovri) support to walletLee Clagett2-1/+91
2019-03-24Make difficulty 128 bit instead of 64 bitmoneromooo-monero3-0/+92
Based on Boolberry work by: jahrsg <jahr@jahr.me> cr.zoidberg <crypto.zoidberg@gmail.com>
2019-03-24test: hmac_keccak - fix number of chunks countingDusan Klinec1-6/+7
2019-03-20crypto: hmac_keccak addedDusan Klinec2-0/+153
2019-03-19Adding classes, functions, and utilities for common LMDB operations.Lee Clagett2-0/+406
2019-03-12tests: disable wallet SSL init for tests involving wallet2moneromooo-monero1-1/+1
2019-03-08blockchain: speed up getting N blocks weights/long term weightsmoneromooo-monero1-0/+12
2019-03-05Update 2019 copyrightbinaryFate46-46/+46
2019-03-05epee: add SSL supportMartijn Otto1-0/+19
RPC connections now have optional tranparent SSL. An optional private key and certificate file can be passed, using the --{rpc,daemon}-ssl-private-key and --{rpc,daemon}-ssl-certificate options. Those have as argument a path to a PEM format private private key and certificate, respectively. If not given, a temporary self signed certificate will be used. SSL can be enabled or disabled using --{rpc}-ssl, which accepts autodetect (default), disabled or enabled. Access can be restricted to particular certificates using the --rpc-ssl-allowed-certificates, which takes a list of paths to PEM encoded certificates. This can allow a wallet to connect to only the daemon they think they're connected to, by forcing SSL and listing the paths to the known good certificates. To generate long term certificates: openssl genrsa -out /tmp/KEY 4096 openssl req -new -key /tmp/KEY -out /tmp/REQ openssl x509 -req -days 999999 -sha256 -in /tmp/REQ -signkey /tmp/KEY -out /tmp/CERT /tmp/KEY is the private key, and /tmp/CERT is the certificate, both in PEM format. /tmp/REQ can be removed. Adjust the last command to set expiration date, etc, as needed. It doesn't make a whole lot of sense for monero anyway, since most servers will run with one time temporary self signed certificates anyway. SSL support is transparent, so all communication is done on the existing ports, with SSL autodetection. This means you can start using an SSL daemon now, but you should not enforce SSL yet or nothing will talk to you.
2019-03-05cryptonote: avoid double parsing blocks when syncingmoneromooo-monero1-2/+2
2019-03-05save some database calls when getting top block hash and heightmoneromooo-monero1-1/+3
2019-03-05Avoid repeated (de)serialization when syncingmoneromooo-monero2-29/+29
2019-03-04ArticMine's new block weight algorithmmoneromooo-monero6-175/+414
This curbs runaway growth while still allowing substantial spikes in block weight Original specification from ArticMine: here is the scaling proposal Define: LongTermBlockWeight Before fork: LongTermBlockWeight = BlockWeight At or after fork: LongTermBlockWeight = min(BlockWeight, 1.4*LongTermEffectiveMedianBlockWeight) Note: To avoid possible consensus issues over rounding the LongTermBlockWeight for a given block should be calculated to the nearest byte, and stored as a integer in the block itself. The stored LongTermBlockWeight is then used for future calculations of the LongTermEffectiveMedianBlockWeight and not recalculated each time. Define: LongTermEffectiveMedianBlockWeight LongTermEffectiveMedianBlockWeight = max(300000, MedianOverPrevious100000Blocks(LongTermBlockWeight)) Change Definition of EffectiveMedianBlockWeight From (current definition) EffectiveMedianBlockWeight = max(300000, MedianOverPrevious100Blocks(BlockWeight)) To (proposed definition) EffectiveMedianBlockWeight = min(max(300000, MedianOverPrevious100Blocks(BlockWeight)), 50*LongTermEffectiveMedianBlockWeight) Notes: 1) There are no other changes to the existing penalty formula, median calculation, fees etc. 2) There is the requirement to store the LongTermBlockWeight of a block unencrypted in the block itself. This is to avoid possible consensus issues over rounding and also to prevent the calculations from becoming unwieldy as we move away from the fork. 3) When the EffectiveMedianBlockWeight cap is reached it is still possible to mine blocks up to 2x the EffectiveMedianBlockWeight by paying the corresponding penalty. Note: the long term block weight is stored in the database, but not in the actual block itself, since it requires recalculating anyway for verification.
2019-02-01unit_tests: remove leftover debug printmoneromooo-monero1-1/+0
2019-01-28Adding initial support for broadcasting transactions over TorLee Clagett4-8/+936
- Support for ".onion" in --add-exclusive-node and --add-peer - Add --anonymizing-proxy for outbound Tor connections - Add --anonymous-inbounds for inbound Tor connections - Support for sharing ".onion" addresses over Tor connections - Support for broadcasting transactions received over RPC exclusively over Tor (else broadcast over public IP when Tor not enabled).
2019-01-28notify: handle arbitrary tagsmoneromooo-monero1-1/+1
2019-01-22ringct: remove unused senderPk from ecdhTuplemoneromooo-monero2-4/+0
This was an early ringct field, which was never used in production
2019-01-22ringct: the commitment mask is now deterministicmoneromooo-monero2-36/+0
saves space in the tx and is safe Found by knaccc
2019-01-22ringct: encode 8 byte amount, saving 24 bytes per outputmoneromooo-monero2-5/+21
Found by knaccc
2019-01-22add a bulletproof version, new bulletproof type, and rct configmoneromooo-monero4-10/+19
This makes it easier to modify the bulletproof format
2019-01-22Pruningmoneromooo-monero3-0/+243
The blockchain prunes seven eighths of prunable tx data. This saves about two thirds of the blockchain size, while keeping the node useful as a sync source for an eighth of the blockchain. No other data is currently pruned. There are three ways to prune a blockchain: - run monerod with --prune-blockchain - run "prune_blockchain" in the monerod console - run the monero-blockchain-prune utility The first two will prune in place. Due to how LMDB works, this will not reduce the blockchain size on disk. Instead, it will mark parts of the file as free, so that future data will use that free space, causing the file to not grow until free space grows scarce. The third way will create a second database, a pruned copy of the original one. Since this is a new file, this one will be smaller than the original one. Once the database is pruned, it will stay pruned as it syncs. That is, there is no need to use --prune-blockchain again, etc.
2019-01-16blockchain_db: allow getting output keys without commitmentmoneromooo-monero1-1/+1
Since the commitment has to be calculated for non rct outputs, it slows down a lot unnecessarily if we don't need it
2019-01-16epee: speedup word/number matchingmoneromooo-monero1-0/+84
Number matching semantics are slightly changed: since this is used as a filter to check whether a number is signed and/or floating point, we can speed this up further. strto* functions are called afterwards and will error out where necessary. We now also accept numbers like .4 which were not accepted before. The strto* calls on a boost::string_ref will not access unallocated memory since the parsers always stop at the first bad character, and the original string is zero terminated. in arbitrary time measurement units for some arbitrary test case: match_number2: 235 -> 70 match_word2: 330 -> 108
2019-01-11added two tests for partial word and case tolerance in mnemonicsPaul Shapiro1-1/+36
2019-01-07Make get_output_key method constmoneroexamples1-2/+2
get_output_key method is commonly used when working with txs and their key images. Because the method is not const, passing blockchain object though const& or pointers to const is not possible in this context. This is especially problematic in external projects (e.g., projects in moneroexamples) that use monero C++ api to operate on the blockchain and txs. Thus, having get_output_key method will simplify moving blockchain object around through const references and pointers to const objects.
2018-12-23epee: better network buffer data structuremoneromooo-monero2-4/+73
avoids pointless allocs and memcpy
2018-12-18blockchain_db: speedup tx output gatheringmoneromooo-monero1-1/+1
We know all the data we'll want for getblocks.bin is contiguous
2018-12-07p2p: use vector instead of list for peer listsmoneromooo-monero1-3/+3
2018-12-05unit_tests: strengthen notify test against OS schedulingmoneromooo-monero1-5/+16
2018-12-04move int-util.h to epeemoneromooo-monero1-1/+1
2018-11-27Outputs where all amounts are known spent can now be prunedmoneromooo-monero1-0/+1
Only for pre rct for obvious reasons. Note: DO NOT use a known spent list which includes outputs which are not known spent. If the list includes any output that's just strongly thought to be spent, but not provably so, you risk finding yourself unable to sync past the point where that output is spent. I estimate only 200 MB saved on current mainnet though, unless the new blackballing rule unearths a good amount of large-amount-set extra spent outs.
2018-11-26rpc: speedup get_outs.binmoneromooo-monero1-1/+1
2018-11-23unit_tests: fix malloc/delete mismatchmoneromooo-monero1-1/+1
2018-11-23unit_tests: do not rethrow a copy of an exceptionmoneromooo-monero1-1/+1
Found by codacy.com
2018-11-23remove some unused codemoneromooo-monero3-4/+1
Found by codacy.com
2018-11-23tests: slow_memmem now returns size_tmoneromooo-monero1-4/+4
Makes more sense than uint64_t for an offset, and agrees with the %zu used to print results. Found by codacy.com
2018-11-16unit_tests: don't take the address of an unwrapped secret keymoneromooo-monero1-1/+4
2018-11-16tests: add unit tests for get_output_distributionmoneromooo-monero4-87/+325
2018-11-15unit_tests: add some hex parsing test for non hex inputxiphon1-0/+16
2018-11-15unit_tests: add a test for parse_hexstr_to_binbuffmoneromooo-monero1-0/+13
2018-11-15Removed a lot of unnecessary includesMartijn Otto1-1/+1
2018-11-09unit_tests: add logging unit testmoneromooo-monero2-0/+178
2018-11-06protocol: option to pad transaction relay to the next kBmoneromooo-monero1-0/+1
To help protect one's privacy from traffic volume analysis for people using Tor or I2P. This will really fly once we relay txes on a timer rather than on demand, though. Off by default for now since it's wasteful and doesn't bring anything until I2P's in.
2018-11-05unit_tests: fix leak when the test check failsmoneromooo-monero1-2/+2
Coverity 189527
2018-11-04simplewallet: print the number of show/all transfersmoneromooo-monero1-1/+0
2018-11-04wallet2: only export necessary outputs and key imagesmoneromooo-monero1-1/+13
and disable annoying test that requires ridiculous amounts of skullduggery every time some format changes
2018-11-04rct: add a zeroCommit cache for common pre-rct casemoneromooo-monero1-0/+19
This is called for every pre-rct output at blockchain sync time, and a lot of them wil hit the cache, saving a scalarmult each.
2018-11-01core: avoid unnecessary tx/blob conversionsmoneromooo-monero1-1/+1
2018-11-01unit_tests: notify test special case for the usual weirdomoneromooo-monero1-1/+5
2018-10-29tests: fix MSYS2 gcc 7.3.0 warning -Wtype-limitsxiphon1-1/+1
2018-10-27unit_tests: fix notify unit test when /tmp does not existmoneromooo-monero1-1/+9
2018-10-24unit_tests: notify test special case for the usual weirdomoneromooo-monero1-1/+5
2018-10-18Rename "blackball" for claritymoneromooo-monero1-5/+5
Apparently some people seem to think it's a censorship list...
2018-10-17unit_tests: fix notify test when run from make *testmoneromooo-monero1-1/+1
2018-10-16unit_tests: call umask before mkstempmoneromooo-monero1-0/+10
Coverity 188788
2018-10-08unit_tests: add unit test for alloc alignment being a power of 2moneromooo-monero1-0/+21
2018-10-07cryptonote: sort tx_extra fieldsmoneromooo-monero1-0/+84
This removes some small amount of fingerprinting entropy. There is no consensus rule to require this since this field is technically free form, and a transaction is free to have custom data in it.
2018-10-01Arbitrary M/N multisig schemes:naughtyfox1-104/+75
* support in wallet2 * support in monero-wallet-cli * support in monero-wallet-rpc * support in wallet api * support in monero-gen-trusted-multisig * unit tests for multisig wallets creation
2018-10-01unit_tests: add a notifier testmoneromooo-monero3-1/+117
2018-09-29Merge pull request #4459Riccardo Spagni2-34/+39
bcf3f6af fuzz_tests: catch unhandled exceptions (moneromooo-monero) 3ebd05d4 miner: restore stream flags after changing them (moneromooo-monero) a093092e levin_protocol_handler_async: do not propagate exception through dtor (moneromooo-monero) 1eebb82b net_helper: do not propagate exceptions through dtor (moneromooo-monero) fb6a3630 miner: do not propagate exceptions through dtor (moneromooo-monero) 2e2139ff epee: do not propagate exception through dtor (moneromooo-monero) 0749a8bd db_lmdb: do not propagate exceptions in dtor (moneromooo-monero) 1b0afeeb wallet_rpc_server: exit cleanly on unhandled exceptions (moneromooo-monero) 418a9936 unit_tests: catch unhandled exceptions (moneromooo-monero) ea7f9543 threadpool: do not propagate exceptions through the dtor (moneromooo-monero) 6e855422 gen_multisig: nice exit on unhandled exception (moneromooo-monero) 53df2deb db_lmdb: catch error in mdb_stat calls during migration (moneromooo-monero) e67016dd blockchain_blackball: catch failure to commit db transaction (moneromooo-monero) 661439f4 mlog: don't remove old logs if we failed to rename the current file (moneromooo-monero) 5fdcda50 easylogging++: test for NULL before dereference (moneromooo-monero) 7ece1550 performance_test: fix bad last argument calling add_arg (moneromooo-monero) a085da32 unit_tests: add check for page size > 0 before dividing (moneromooo-monero) d8b1ec8b unit_tests: use std::shared_ptr to shut coverity up about leaks (moneromooo-monero) 02563bf4 simplewallet: top level exception catcher to print nicer messages (moneromooo-monero) c57a65b2 blockchain_blackball: fix shift range for 32 bit archs (moneromooo-monero)
2018-09-29Merge pull request #4424Riccardo Spagni2-6/+6
92d1da28 unit_tests: fix build with GCC 5.4.0 on ubuntu (moneromooo-monero)
2018-09-29Merge pull request #4407Riccardo Spagni1-0/+24
43a06350 ringdb: use cursors to be a bit faster (moneromooo-monero)
2018-09-28unit_tests: fix longstanding DNS related unit testmoneromooo-monero1-1/+1
2018-09-23unit_tests: fix build with GCC 5.4.0 on ubuntumoneromooo-monero2-6/+6
2018-09-20ringdb: use cursors to be a bit fastermoneromooo-monero1-0/+24
2018-09-17api/wallet: properly disable key encryptionstoffu1-1/+1
2018-09-15unit_tests: sanity check on transaction weightmoneromooo-monero1-0/+32
2018-09-12Adding expect<T> - a value-or-error implementationLee Clagett2-0/+916
2018-09-12wipeable_string: add hex_to_pod functionmoneromooo-monero1-0/+7
2018-09-11bulletproofs: speed up the latest changes a bitmoneromooo-monero1-0/+7
2018-09-11unit_tests: add a few more multiexp unit testsmoneromooo-monero1-2/+52
2018-09-11v8: per byte fee, pad bulletproofs, fixed 11 ring sizemoneromooo-monero5-73/+73
2018-09-11bulletproofs: a few fixes from the Kudelski reviewmoneromooo-monero1-10/+0
- fix integer overflow in n_bulletproof_amounts - check input scalars are in range - remove use of environment variable to tweak straus performance - do not use implementation defined signed shift for signum
2018-09-11bulletproofs: reject points not in the main subgroupmoneromooo-monero1-0/+61
2018-09-11add pippenger unit testsmoneromooo-monero1-0/+55
2018-09-11precalc the ge_p3 representation of Hmoneromooo-monero1-0/+7
2018-09-11unit_tests: a couple more bulletproof unit tests for gammamoneromooo-monero1-0/+19
2018-09-11Bulletproof aggregated verification and testsmoneromooo-monero1-12/+16
Also constrains bulletproofs to simple rct, for simplicity
2018-09-11aligned: aligned memory alloc/realloc/freemoneromooo-monero2-1/+88
2018-09-11bulletproofs: add aggregated verificationmoneromooo-monero2-0/+36
Ported from sarang's java code
2018-09-11make straus cached mode thread safe, and add tests for itmoneromooo-monero2-0/+150
2018-09-11bulletproofs: add multi output bulletproofs to rctmoneromooo-monero2-1/+64
2018-09-11bulletproofs: multi-output bulletproofsmoneromooo-monero1-0/+19
2018-09-10record blackballs as amount/offset, and add export abilitymoneromooo-monero1-4/+4
2018-08-25is_hdd updatep8p2-1/+19
2018-08-23unit_tests: disable mlocker tests on windows (no implementation)moneromooo-monero1-0/+8
2018-08-23add and use constant time 32 byte equality functionmoneromooo-monero1-0/+15
2018-08-20unit_tests: add tests for incremental keccakmoneromooo-monero2-0/+151
2018-08-16common: add a class to safely wrap mlock/munlockmoneromooo-monero2-0/+187
This class will allow mlocking small objects, of which there may be several per page. It adds refcounting so pages are only munlocked when the last object on that page munlocks.
2018-08-16store secret keys encrypted where possiblemoneromooo-monero4-2/+87
The secret spend key is kept encrypted in memory, and decrypted on the fly when needed. Both spend and view secret keys are kept encrypted in a JSON field in the keys file. This avoids leaving the keys in memory due to being manipulated by the JSON I/O API.
2018-08-16wallet: wipe seed from memory where appropriatemoneromooo-monero3-6/+231
2018-08-16wallet2: make --restricted-rpc available for wallet RPC onlystoffu1-2/+1
2018-08-15unit_tests: remove std::move in return statementmoneromooo-monero1-1/+1
This actually prevents copy elision
2018-08-08wallet: allow adjusting number of rounds for the key derivation functionstoffu1-1/+1
2018-08-03Added features to epee::span<T> :Lee Clagett1-1/+56
- Support for classes - Added `remove_prefix` function - Added `to_mut_span` and `as_mut_byte_span`
2018-08-02Fixed ZMQ-RPC for transactions and GET_BLOCKS_FASTLee Clagett2-0/+219
2018-07-30blockchain_db: remove unused get_output_key variantmoneromooo-monero1-1/+0
It was actually incorrect, as it would not return commitment
2018-07-28unit_tests: use valid key images, pub keys, etcmoneromooo-monero1-5/+9
2018-07-22tests: ringdb: use system's temporary dir pathredfish1-4/+4
Fixes failing test during Arch package build (due to attempt to write to ~/.bitmonero/...). Prefix temp dir path with "monero-" because we are not putting it on the system, so good to identify ourselves in case the dir gets left over due to crash, etc.
2018-07-20crypto: do not use boost::value_initialized to init null skey/pkeymoneromooo-monero1-0/+8
2018-07-13db: store cumulative rct output distribution in the db for speedmoneromooo-monero1-18/+20
This gets rid of the temporary precalc cache. Also make the RPC able to send data back in binary or JSON, since there can be a lot of data This bumps the LMDB database format to v3, with migration.
2018-07-05crypto: remove slight bias in key generation due to modulomoneromooo-monero2-0/+48
2018-06-29add --regtest and --fixed-difficulty for regression testingvictorsintnicolaas1-0/+1
on_generateblocks RPC call combines functionality from the on_getblocktemplate and on_submitblock RPC calls to allow rapid block creation. Difficulty is set permanently to 1 for regtest. Makes use of FAKECHAIN network type, but takes hard fork heights from mainchain Default reserve_size in generate_blocks RPC call is now 1. If it is 0, the following error occurs 'Failed to calculate offset for'. Queries hard fork heights info of other network types
2018-06-28remove epee from link lines where it's redundantmoneromooo-monero1-1/+0
For some reason, this confuses and kills ASAN on startup as it thinks const uint8_t ipv4_network_address::ID is defined multiple times.
2018-06-27unit_tests: do not recreate the same base rct sig all the timemoneromooo-monero1-4/+18
Helps a bit when running with valgrind
2018-06-26threadpool: allow leaf functions to run concurrentlymoneromooo-monero1-6/+51
Decrease the number of worker threads by one to account for the fact the calling thread acts as a worker thread now
2018-06-26replace std::list with std::vector on some hot pathsmoneromooo-monero1-5/+5
also use reserve where appropriate
2018-06-20rpc: add blockchain disk size to getinfomoneromooo-monero1-0/+1
This should help new nodes predict how much disk space will be needed for a full sync
2018-06-10epee: adaptive connection timeout systemmoneromooo-monero1-0/+1
a connection's timeout is halved for every extra connection from the same host. Also keep track of when we don't need to use a connection anymore, so we can close it and free the resource for another connection. Also use the longer timeout for non routable local addresses.
2018-06-06ringct: remove an unnecessary scalarmultBase in zeroCommitmoneromooo-monero1-0/+10
2018-06-01unit_tests: add tests for local IP range detectionmoneromooo-monero1-0/+32
2018-05-30unit_tests/hardfork: add tests for get_voting_info()stoffu1-0/+49
2018-05-30hardfork: fix get_next_version()stoffu1-0/+29
2018-05-30unit_tests/hardfork: add tests for check_for_height()stoffu1-0/+24
2018-05-30hardfork: fix get_earliest_ideal_height_for_version() to support ↵stoffu1-0/+25
non-existent versions
2018-05-23db_lmdb: save pruned and prunable tx data separatelymoneromooo-monero1-2/+4
This bumps DB version to 2, migration code will run for v1 DBs
2018-05-21unit_tests: fix build after get_output_didstribution signature changemoneromooo-monero1-1/+1
2018-05-21speed up get_output_distribution (and precalc common case)moneromooo-monero1-0/+1
2018-05-21Revert "Merge pull request #3775"Riccardo Spagni1-1/+1
This reverts commit 20ef37bbcac7715d5299dd77d401583420e07ced, reversing changes made to 40070a661fd2ff503e07f4ed48dfe9fe67cfa297.
2018-05-20unit_tests: add threadpool unit testmoneromooo-monero2-0/+102
2018-05-15unit_tests: set default data dir to the source tree at build timemoneromooo-monero2-8/+5
2018-04-28unit_tests: fix build after get_output_didstribution signature changemoneromooo-monero1-1/+1
2018-04-22Only log an error if fork version is higher AND is not known.Thaer Khawaja1-0/+1
2018-04-12unit_tests: add device unit testsmoneromooo-monero2-0/+132
Annoyingly, its locking semantics are borked since it does not do any locking
2018-04-11unit_tests: add ringdb unit testsmoneromooo-monero2-1/+166
2018-03-21core: add get_earliest_ideal_height_for_version()stoffu1-0/+1
2018-03-16add RPC to get a histogram of outputs of a given amountmoneromooo-monero1-1/+2
2018-03-05Correct spelling mistakes.Edward Betts1-1/+1
2018-03-05Stagenetstoffu5-28/+28
2018-03-04Code modifications to integrate Ledger HW device into monero-wallet-cli.cslashm2-15/+17
The basic approach it to delegate all sensitive data (master key, secret ephemeral key, key derivation, ....) and related operations to the device. As device has low memory, it does not keep itself the values (except for view/spend keys) but once computed there are encrypted (with AES are equivalent) and return back to monero-wallet-cli. When they need to be manipulated by the device, they are decrypted on receive. Moreover, using the client for storing the value in encrypted form limits the modification in the client code. Those values are transfered from one C-structure to another one as previously. The code modification has been done with the wishes to be open to any other hardware wallet. To achieve that a C++ class hw::Device has been introduced. Two initial implementations are provided: the "default", which remaps all calls to initial Monero code, and the "Ledger", which delegates all calls to Ledger device.
2018-02-12unit_tests.serialization: refactored with ASSERT_EQ_MAPstoffu1-17/+21
2018-02-12unit_tests: added gtest utility ASSERT_EQ_MAP for easily testing key-value mapstoffu1-0/+7
2018-02-08dns: change default DNS to a worldwide selectionmoneromooo-monero1-13/+15
DNSSEC aware servers picked from https://wiki.ipfire.org/dns/public-servers
2018-01-26Readd copyright starting datexmr-eric10-10/+10
2018-01-26Update 2018 copyrightxmr-eric44-44/+44
2018-01-18unit_tests: do not ASSERT_TRUE(decodeRct(...))moneromooo-monero1-5/+5
decodeRct returns the amount, which may be zero
2018-01-10move memwipe to epee to avoid common<->crypto circular dependenciesmoneromooo-monero1-1/+1
2018-01-10epee: remove dependency on commonmoneromooo-monero1-8/+14
2018-01-08fix for warningOnur Altun1-1/+1
monero/tests/unit_tests/memwipe.cpp:50:8: Warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else] if (wipe) ASSERT_TRUE(memcmp(quux, "bar", 3));
2018-01-05Factor the monero donation addressMaxithi1-1/+2
Signed-off-by: Maxithi <34792056+Maxithi@users.noreply.github.com>
2017-12-25Add a chacha20 variant to go with chacha8moneromooo-monero3-6/+6
2017-12-22factor STL container serializationmoneromooo-monero2-2/+0
2017-12-20Fix exceptions not finding txpool txes when relayingmoneromooo-monero1-1/+1
2017-12-19tests: remove unused/unfinished keccak bitsmoneromooo-monero1-24/+0
The author doesn't seem to be finishing/fixing this, and it doesn't do anything.
2017-12-19tests: test wallets don't need a dummy temp file anymoremoneromooo-monero1-16/+1
2017-12-18tests: fix a buffer overread in a unit testmoneromooo-monero1-3/+1
and remove a leftover debugging sanity check
2017-12-17wallet2: fix slow multisig unit tests with subaddress patchmoneromooo-monero1-0/+1
While there, move the wallet2 ctor to the cpp file as it's a huge amount of init list now, and remove an unused one.
2017-12-17wallet: guard against partly initialized multisig walletmoneromooo-monero1-5/+12
2017-12-17N-1/N multisigmoneromooo-monero1-7/+19
2017-12-17gen_multisig: generates multisig wallets if participants trust each othermoneromooo-monero1-8/+8
2017-12-17wallet2: allow empty wallet filename to avoid saving datamoneromooo-monero1-11/+1
Useful to speed tests up and avoid unnecessary leftover files
2017-12-17tests: add multisig unit testsmoneromooo-monero2-0/+179
2017-12-17Add N/N multisig tx generation and signingmoneromooo-monero2-10/+10
Scheme by luigi1111: Multisig for RingCT on Monero 2 of 2 User A (coordinator): Spendkey b,B Viewkey a,A (shared) User B: Spendkey c,C Viewkey a,A (shared) Public Address: C+B, A Both have their own watch only wallet via C+B, a A will coordinate spending process (though B could easily as well, coordinator is more needed for more participants) A and B watch for incoming outputs B creates "half" key images for discovered output D: I2_D = (Hs(aR)+c) * Hp(D) B also creates 1.5 random keypairs (one scalar and 2 pubkeys; one on base G and one on base Hp(D)) for each output, storing the scalar(k) (linked to D), and sending the pubkeys with I2_D. A also creates "half" key images: I1_D = (Hs(aR)+b) * Hp(D) Then I_D = I1_D + I2_D Having I_D allows A to check spent status of course, but more importantly allows A to actually build a transaction prefix (and thus transaction). A builds the transaction until most of the way through MLSAG_Gen, adding the 2 pubkeys (per input) provided with I2_D to his own generated ones where they are needed (secret row L, R). At this point, A has a mostly completed transaction (but with an invalid/incomplete signature). A sends over the tx and includes r, which allows B (with the recipient's address) to verify the destination and amount (by reconstructing the stealth address and decoding ecdhInfo). B then finishes the signature by computing ss[secret_index][0] = ss[secret_index][0] + k - cc[secret_index]*c (secret indices need to be passed as well). B can then broadcast the tx, or send it back to A for broadcasting. Once B has completed the signing (and verified the tx to be valid), he can add the full I_D to his cache, allowing him to verify spent status as well. NOTE: A and B *must* present key A and B to each other with a valid signature proving they know a and b respectively. Otherwise, trickery like the following becomes possible: A creates viewkey a,A, spendkey b,B, and sends a,A,B to B. B creates a fake key C = zG - B. B sends C back to A. The combined spendkey C+B then equals zG, allowing B to spend funds at any time! The signature fixes this, because B does not know a c corresponding to C (and thus can't produce a signature). 2 of 3 User A (coordinator) Shared viewkey a,A "spendkey" j,J User B "spendkey" k,K User C "spendkey" m,M A collects K and M from B and C B collects J and M from A and C C collects J and K from A and B A computes N = nG, n = Hs(jK) A computes O = oG, o = Hs(jM) B anc C compute P = pG, p = Hs(kM) || Hs(mK) B and C can also compute N and O respectively if they wish to be able to coordinate Address: N+O+P, A The rest follows as above. The coordinator possesses 2 of 3 needed keys; he can get the other needed part of the signature/key images from either of the other two. Alternatively, if secure communication exists between parties: A gives j to B B gives k to C C gives m to A Address: J+K+M, A 3 of 3 Identical to 2 of 2, except the coordinator must collect the key images from both of the others. The transaction must also be passed an additional hop: A -> B -> C (or A -> C -> B), who can then broadcast it or send it back to A. N-1 of N Generally the same as 2 of 3, except participants need to be arranged in a ring to pass their keys around (using either the secure or insecure method). For example (ignoring viewkey so letters line up): [4 of 5] User: spendkey A: a B: b C: c D: d E: e a -> B, b -> C, c -> D, d -> E, e -> A Order of signing does not matter, it just must reach n-1 users. A "remaining keys" list must be passed around with the transaction so the signers know if they should use 1 or both keys. Collecting key image parts becomes a little messy, but basically every wallet sends over both of their parts with a tag for each. Thia way the coordinating wallet can keep track of which images have been added and which wallet they come from. Reasoning: 1. The key images must be added only once (coordinator will get key images for key a from both A and B, he must add only one to get the proper key actual key image) 2. The coordinator must keep track of which helper pubkeys came from which wallet (discussed in 2 of 2 section). The coordinator must choose only one set to use, then include his choice in the "remaining keys" list so the other wallets know which of their keys to use. You can generalize it further to N-2 of N or even M of N, but I'm not sure there's legitimate demand to justify the complexity. It might also be straightforward enough to support with minimal changes from N-1 format. You basically just give each user additional keys for each additional "-1" you desire. N-2 would be 3 keys per user, N-3 4 keys, etc. The process is somewhat cumbersome: To create a N/N multisig wallet: - each participant creates a normal wallet - each participant runs "prepare_multisig", and sends the resulting string to every other participant - each participant runs "make_multisig N A B C D...", with N being the threshold and A B C D... being the strings received from other participants (the threshold must currently equal N) As txes are received, participants' wallets will need to synchronize so that those new outputs may be spent: - each participant runs "export_multisig FILENAME", and sends the FILENAME file to every other participant - each participant runs "import_multisig A B C D...", with A B C D... being the filenames received from other participants Then, a transaction may be initiated: - one of the participants runs "transfer ADDRESS AMOUNT" - this partly signed transaction will be written to the "multisig_monero_tx" file - the initiator sends this file to another participant - that other participant runs "sign_multisig multisig_monero_tx" - the resulting transaction is written to the "multisig_monero_tx" file again - if the threshold was not reached, the file must be sent to another participant, until enough have signed - the last participant to sign runs "submit_multisig multisig_monero_tx" to relay the transaction to the Monero network
2017-12-17unit_tests: fix memwipe test comparisonmoneromooo-monero1-1/+1
free might overwrite the memory, so we can't expect to see the NULs we overwrote with, but at least we shouldn't see the original data.
2017-12-16cryptonote_core does not depend on p2p anymoremoneromooo-monero2-0/+12
As a followon side effect, this makes a lot of inline code included only in particular cpp files (and instanciated when necessary.
2017-12-16move includes around to lessen overall loadmoneromooo-monero3-1/+5
2017-12-08integrate bulletproofs into moneromoneromooo-monero1-0/+1
2017-12-08add bulletproofs to the build, with basic unit testsmoneromooo-monero2-0/+71
Based on Java code from Sarang Noether
2017-12-07util: allow non numeric version partsmoneromooo-monero1-0/+2
2017-11-27new wipeable_string class to replace std::string passphrasesmoneromooo-monero1-1/+1
2017-11-27add a memwipe functionmoneromooo-monero2-0/+67
It's meant to avoid being optimized out memory_cleanse lifted from bitcoin
2017-11-15unit_tests: fix running without --data-dirmoneromooo-monero1-2/+2
While there, also use the new is_arg_defaulted API instead of going to poke the internal API directly.
2017-11-14unit_tests: fix build after wallet2 list/vector changemoneromooo-monero1-2/+2
2017-11-14move cryptonote command line options to cryptonote_coremoneromooo-monero1-1/+1
Those have no reason to be in a generic module
2017-11-14remove "using namespace std" from headersmoneromooo-monero2-0/+2
It's nasty, and actually breaks on Solaris, where if.h fails to build due to: struct map *if_memmap;
2017-11-11kaccak: remove unused return valuemoneromooo-monero1-5/+1
2017-11-08Protect node privacy by proper filtering in restricted-mode RPC answersbinaryFate1-2/+2
This patch allows to filter out sensitive information for queries that rely on the pool state, when running in restricted mode. This filtering is only applied to data sent back to RPC queries. Results of inline commands typed locally in the daemon are not affected. In practice, when running with `--restricted-rpc`: * get_transaction_pool will list relayed transactions with the fields "last relayed time" and "received time" set to zero. * get_transaction_pool will not list transaction that have do_not_relay set to true, and will not list key images that are used only for such transactions * get_transaction_pool_hashes.bin will not list such transaction * get_transaction_pool_stats will not count such transactions in any of the aggregated values that are computed The implementation does not make filtering the default, so developers should be mindful of this if they add new RPC functionality. Fixes #2590.
2017-10-24unit_tests: fix data dir determinationmoneromooo-monero1-1/+1
2017-10-21Initialize openssl on startupmoneromooo-monero1-0/+2
2017-10-19unit tests: OOB indexes & adding subaddressCole Lightfighter1-15/+41
Tests for checking proper error throwing for out-of-bounds subaddress indexes, and proper addition of subaddresses. Signed-off-by: Cole Lightfighter <cole@onicsla.bz>
2017-10-17Subaddress unit testsCole Lightfighter2-0/+93
Basic unit test fixture, and initialization of a subaddress account. Signed-off-by: Cole Lightfighter <cole@onicsla.bz>
2017-10-16unit_tests: fix build on windowsmoneromooo-monero1-1/+1
Reported by iDunk on IRC
2017-10-10dns_utils: allow an optional DNS server IP in DNS_PUBLICmoneromooo-monero1-0/+14
tcp://a.b.c.d
2017-10-09Fix an object lifetime bug in net load testsmoneromooo-monero1-3/+5
The commands handler must not be destroyed before the config object, or we'll be accessing freed memory. An earlier attempt at using boost::shared_ptr to control object lifetime turned out to be very invasive, though would be a better solution in theory.
2017-10-08unit_tests: fix compiling on WindowsiDunk54002-7/+5
2017-10-08unit_tests: data dir is now overridden with --data-dirmoneromooo-monero2-10/+23
rather than a raw string without option
2017-10-07Subaddresseskenshi842-26/+26
2017-10-05tests: add sha256sum unit testmoneromooo-monero2-0/+46
2017-10-05Upgrades to epee::net_utils::network_addressLee Clagett3-2/+233
- internal nullptr checks - prevent modifications to network_address (shallow copy issues) - automagically works with any type containing interface functions - removed fnv1a hashing - ipv4_network_address now flattened with no base class
2017-10-03tests: fix hashchain unit testsmoneromooo-monero1-1/+1
and relax the not-empty safety check to stay more intuitiuve
2017-09-28tests: pass data dir as argredfish4-10/+32
This fixes test failure on builds that happen to be built in 'build/' instead of 'build/release'. Use boost filesystem path type.
2017-09-26mnemonics: new Lojban word listWei Tang1-1/+3
Word list authored by: sorpaas Sources: lo gimste jo'u lo ma'oste (http://guskant.github.io/lojbo/gismu-cmavo.html) N-grams of Lojban corpus (https://mw.lojban.org/papri/N-grams_of_Lojban_corpus)
2017-09-25wallet2: do not keep block hashes below last checkpointmoneromooo-monero2-0/+130
This saves a lot of space and load/save time for wallet caches