aboutsummaryrefslogtreecommitdiff
path: root/tests (follow)
AgeCommit message (Collapse)AuthorFilesLines
2018-07-19Merge pull request #3854luigi11118-0/+479
149da42 db_lmdb: enable batch transactions by default (stoffu) 34cb6b4 add --regtest and --fixed-difficulty for regression testing (vicsn) 9e1403e update get_info RPC and bump RPC version (vicsn) 207b66e first new functional tests (vicsn)
2018-07-19Merge pull request #3617luigi11112-0/+132
4c00a4d unit_tests: add device unit tests (moneromooo-monero)
2018-06-29first new functional testsvictorsintnicolaas7-0/+478
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-27Merge pull request #3998luigi11111-7/+7
8db23df wallet: on first refresh, start off with a quantized height (moneromooo-monero)
2018-06-27Merge pull request #3716luigi111111-35/+80
a2b557f 6795bd0 209ec96 ed2c81e a830db2 57ea902 31a895e ba8331c f7f1917 41be339 f025ae9 ef2cb63 dcfd299 5d3e702 2704624 2771a18 0e4c7d0 (moneromooo-monero)
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-monero10-29/+29
also use reserve where appropriate
2018-06-25Merge pull request #3962luigi11112-0/+2
55c7fb8 epee: adaptive connection timeout system (moneromooo-monero)
2018-06-20Merge pull request #3938luigi11111-0/+10
01cc978 ringct: remove an unnecessary scalarmultBase in zeroCommit (moneromooo-monero)
2018-06-20Merge pull request #3902luigi11111-0/+32
f8dd433 epee: fix detection of 172.16.0.0/172.31.255.255 local IP range (moneromooo-monero) 5db9e3c unit_tests: add tests for local IP range detection (moneromooo-monero)
2018-06-17Merge pull request #3691luigi11112-0/+102
db55263 threadpool: allow constructing an object, and misc tweaks (moneromooo-monero) ce173cb core: remove threadpool dependency from header (moneromooo-monero) 3147468 unit_tests: add threadpool unit test (moneromooo-monero)
2018-06-13wallet: on first refresh, start off with a quantized heightmoneromooo-monero1-7/+7
for privacy reasons, so an untrusted node can't easily track wallets from IP address to IP address, etc. The granularity is 1024 blocks, which is about a day and a half.
2018-06-10epee: adaptive connection timeout systemmoneromooo-monero2-0/+2
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-08Merge pull request #3604luigi11112-5/+2
54d9fff gtest: Fix compilation on MinGW with pthread /googletest#621 (stoffu)
2018-06-08Merge pull request #3450luigi11112-0/+2
3b941be core: add get_earliest_ideal_height_for_version() (stoffu)
2018-06-08Merge pull request #3444luigi11111-0/+127
a79fc21 hardfork: fix get_earliest_ideal_height_for_version() to support non-existent versions (stoffu) 7e30ead unit_tests/hardfork: add tests for check_for_height() (stoffu) 98cf62c hardfork: fix get_next_version() (stoffu) 0321d1a unit_tests/hardfork: add tests for get_voting_info() (stoffu)
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-31Merge pull request #3592luigi11112-1/+166
90a16b1 crypto: fix initialization order issue with random mutex (moneromooo-monero) 6a61f52 unit_tests: add ringdb unit tests (moneromooo-monero)
2018-05-30Merge pull request #3504luigi11111-1/+1
a0a810c performance_tests: fix subaddress expansion test not expanding (moneromooo-monero)
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-29Merge pull request #3251luigi11111-2/+4
b9389e5 db_lmdb: save pruned and prunable tx data separately (moneromooo-monero)
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-21Merge pull request #3809Riccardo Spagni2-8/+5
b88c9a00 unit_tests: set default data dir to the source tree at build time (moneromooo-monero)
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 Khawaja2-0/+2
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-04-11gtest: Fix compilation on MinGW with pthread /googletest#621stoffu2-5/+2
2018-03-27performance_tests: fix subaddress expansion test not expandingmoneromooo-monero1-1/+1
2018-03-21core: add get_earliest_ideal_height_for_version()stoffu2-0/+2
2018-03-16Merge pull request #3336Riccardo Spagni2-4/+4
57c0b1ed Fix typos in various files (Dimitris Apostolou)
2018-03-16add RPC to get a histogram of outputs of a given amountmoneromooo-monero1-1/+2
2018-03-15Fix typos in various filesDimitris Apostolou2-4/+4
2018-03-14tests/hash: correctly reference crypto HASH_SIZE for less confusionAnythingTechPro1-1/+1
2018-03-14chacha: call prehashed version explicitly as generate_chacha_key_prehashedstoffu1-2/+2
hash: add prehashed version cn_slow_hash_prehashed slow-hash: let cn_slow_hash take 4th parameter for deciding prehashed or not slow-hash: add support for prehashed version for the other 3 platforms
2018-03-14crypto: revert odd namespace changes made in #3303stoffu1-6/+6
2018-03-14keypair::generate: always require hw::device to avoid possible mistakestoffu3-4/+4
2018-03-14device: untangle cyclic depenencystoffu1-3/+0
When #3303 was merged, a cyclic dependency chain was generated: libdevice <- libcncrypto <- libringct <- libdevice This was because libdevice needs access to a set of basic crypto operations implemented in libringct such as scalarmultBase(), while libringct also needs access to abstracted crypto operations implemented in libdevice such as ecdhEncode(). To untangle this cyclic dependency chain, this patch splits libringct into libringct_basic and libringct, where the basic crypto ops previously in libringct are moved into libringct_basic. The cyclic dependency is now resolved thanks to this separation: libcncrypto <- libringct_basic <- libdevice <- libcryptonote_basic <- libringct This eliminates the need for crypto_device.cpp and rctOps_device.cpp. Also, many abstracted interfaces of hw::device such as encrypt_payment_id() and get_subaddress_secret_key() were previously implemented in libcryptonote_basic (cryptonote_format_utils.cpp) and were then called from hw::core::device_default, which is odd because libdevice is supposed to be independent of libcryptonote_basic. Therefore, those functions were moved to device_default.cpp.
2018-03-14Merge pull request #3360Riccardo Spagni1-51/+51
1ff35fda Wallet API: make nettype non-defaulted to disambiguate from deprecated versions (and make libwallet_api_tests compilable) (stoffu)
2018-03-14fuzz_tests: set small subaddress lookahead for speedmoneromooo-monero3-0/+3
2018-03-06Wallet API: make nettype non-defaulted to disambiguate from deprecated ↵stoffu1-51/+51
versions (and make libwallet_api_tests compilable)
2018-03-05tweaks to the monerov1 cryptonight algorithmLee Clagett1-5/+5
2018-03-05Monero Cryptonight variants, and add one for v7moneromooo-monero3-3/+15
This is the first variant of many, with the intent to improve Monero's resistance to ASICs and encourage mining decentralization.
2018-03-05Merge pull request #3277Riccardo Spagni11-38/+38
0e7ad2e2 Wallet API: generalize 'bool testnet' to 'NetworkType nettype' (stoffu) af773211 Stagenet (stoffu) cc9a0bee command_line: allow args to depend on more than one args (stoffu) 55f8d917 command_line::get_arg: remove 'required' for dependent args as they're always optional (stoffu) 450306a0 command line: allow has_arg to handle arg_descriptor<bool,false,true> #3318 (stoffu) 9f9e095a Use `genesis_tx` parameter in `generate_genesis_block`. #3261 (Jean Pierre Dudey)
2018-03-05Correct spelling mistakes.Edward Betts5-5/+5
2018-03-05Stagenetstoffu11-38/+38
2018-03-04Code modifications to integrate Ledger HW device into monero-wallet-cli.cslashm14-32/+48
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-20Merge pull request #3245Riccardo Spagni2-17/+28
54c256bc unit_tests.serialization: refactored with ASSERT_EQ_MAP (stoffu) e6a60938 unit_tests: added gtest utility ASSERT_EQ_MAP for easily testing key-value map (stoffu)
2018-02-16options: remove testnet-* optionswhythat1-2/+1
2018-02-16Merge pull request #3226Riccardo Spagni3-4/+5
e4646379 keccak: fix mdlen bounds sanity checking (moneromooo-monero) 2e3e90ac pass large parameters by const ref, not value (moneromooo-monero) 61defd89 blockchain: sanity check number of precomputed hash of hash blocks (moneromooo-monero) 9af6b2d1 ringct: fix infinite loop in unused h2b function (moneromooo-monero) 8cea8d0c simplewallet: double check a new multisig wallet is multisig (moneromooo-monero) 9b98a6ac threadpool: catch exceptions in dtor, to avoid terminate (moneromooo-monero) 24803ed9 blockchain_export: fix buffer overflow in exporter (moneromooo-monero) f3f7da62 perf_timer: rewrite to make it clear there is no division by zero (moneromooo-monero) c6ea3df0 performance_tests: remove add_arg call stray extra param (moneromooo-monero) fa6b4566 fuzz_tests: fix an uninitialized var in setup (moneromooo-monero) 03887f11 keccak: fix sanity check bounds test (moneromooo-monero) ad11db91 blockchain_db: initialize m_open in base class ctor (moneromooo-monero) bece67f9 miner: restore std::cout precision after modification (moneromooo-monero) 1aabd14c db_lmdb: check hard fork info drop succeeded (moneromooo-monero)
2018-02-16Merge pull request #3225Riccardo Spagni1-13/+15
71806327 dns: change default DNS to a worldwide selection (moneromooo-monero)
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-02-07Fix coverity issues in performance_tests/main.cpph9087141241-0/+2
2018-02-02pass large parameters by const ref, not valuemoneromooo-monero1-1/+1
Coverity 136394 136397 136409 136526 136529 136533 175302
2018-02-02performance_tests: remove add_arg call stray extra parammoneromooo-monero1-1/+1
Coverity 182572
2018-02-02fuzz_tests: fix an uninitialized var in setupmoneromooo-monero1-2/+3
and comment it out, it's only used to generate a starting test case Coverity 182506
2018-01-28Tests: Fix building of two fuzz tests on WindowsiDunk54001-0/+2
2018-01-27Merge pull request #3185Riccardo Spagni1-8/+8
fccd1df1 performance_tests: fix build after merging two conflicting patches (moneromooo-monero)
2018-01-27Merge pull request #3151Riccardo Spagni1-5/+5
ab2e9953 unit_tests: do not ASSERT_TRUE(decodeRct(...)) (moneromooo-monero)
2018-01-26Readd copyright starting datexmr-eric27-27/+27
2018-01-26Update 2018 copyrightxmr-eric144-144/+144
2018-01-26performance_tests: fix build after merging two conflicting patchesmoneromooo-monero1-8/+8
2018-01-25Merge pull request #3082Riccardo Spagni1-1/+1
8b50209c fix for warning (Onur Altun)
2018-01-25Merge pull request #3064Riccardo Spagni2-63/+108
62c45c0d performance_tests: add a --filter option to select what to run (moneromooo-monero)
2018-01-25Merge pull request #3057Riccardo Spagni1-1/+2
9ffa97fe Factor the monero donation address (Maxithi)
2018-01-25Merge pull request #3042Riccardo Spagni2-0/+97
ed215d34 performance_tests: add RingCT MLSAG gen/ver tests (moneromooo-monero)
2018-01-18unit_tests: do not ASSERT_TRUE(decodeRct(...))moneromooo-monero1-5/+5
decodeRct returns the amount, which may be zero
2018-01-10Merge pull request #2993Riccardo Spagni1-1/+1
776b44f1 Add misc hardening flags to the cmake machinery (moneromooo-monero)
2018-01-10Merge pull request #2990Riccardo Spagni2-2/+0
2d17feb0 factor STL container serialization (moneromooo-monero)
2018-01-10Merge pull request #2985Riccardo Spagni2-9/+15
6d8b29ef fix some link errors in debug mode for macos (stoffu) fdd4c5e5 move memwipe to epee to avoid common<->crypto circular dependencies (moneromooo-monero) 40ab12a7 epee: remove dependency on common (moneromooo-monero)
2018-01-10Merge pull request #2971Riccardo Spagni1-1/+1
ae860230 Fix exceptions not finding txpool txes when relaying (moneromooo-monero)
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>
2018-01-04performance_tests: add a --filter option to select what to runmoneromooo-monero2-63/+108
Removes a good bit of annoyance running those
2018-01-02Merge pull request #2964Riccardo Spagni1-24/+0
3ed1a74c tests: remove unused/unfinished keccak bits (moneromooo-monero)
2018-01-02Merge pull request #2963Riccardo Spagni4-43/+4
0e19a394 tests: test wallets don't need a dummy temp file anymore (moneromooo-monero)
2018-01-02Merge pull request #2956Riccardo Spagni3-0/+70
dc642631 performance_tests: add a test for subaddress expansion (moneromooo-monero)
2017-12-31performance_tests: add RingCT MLSAG gen/ver testsmoneromooo-monero2-0/+97
2017-12-31Add misc hardening flags to the cmake machinerymoneromooo-monero1-1/+1
See https://wiki.debian.org/Hardening#User_Space
2017-12-28Merge pull request #2955Riccardo Spagni1-0/+1
0bcaf86c tests: fix link error in hash tests now needing common (moneromooo-monero)
2017-12-28Merge pull request #2944Riccardo Spagni1-1/+1
223e3788 unit_tests: fix memwipe test comparison (moneromooo-monero)
2017-12-25Add a chacha20 variant to go with chacha8moneromooo-monero3-6/+6
2017-12-25Merge pull request #2920Riccardo Spagni1-3/+1
bd5cce07 network_throttle: fix ineffective locking (moneromooo-monero) e0a61299 network_throttle: remove unused xxx static member (moneromooo-monero) 24f584d9 cryptonote_core: remove unused functions with off by one bugs (moneromooo-monero) b1634aa3 blockchain: don't leave dangling pointers in this (moneromooo-monero) 8e60b81c cryptonote_core: fix db leak on error (moneromooo-monero) 213e326c abstract_tcp_server2: log init_server errors as fatal (moneromooo-monero) b51dc566 use const refs in for loops for non tiny types (moneromooo-monero) f0568ca6 net_parse_helpers: fix regex error checking (moneromooo-monero) b49ddc76 check accessing an element past the end of a container (moneromooo-monero) 2305bf26 check return value for generate_key_derivation and derive_public_key (moneromooo-monero) a4240d9f catch const exceptions (moneromooo-monero) 45a1c4c0 add empty container sanity checks when using front() and back() (moneromooo-monero) 56fa6ce1 tests: fix a buffer overread in a unit test (moneromooo-monero) b4524892 rpc: guard against json parsing a non object (moneromooo-monero) c2ed8618 easylogging++: avoid buffer underflow (moneromooo-monero) 187a6ab2 epee: trap failure to parse URI from request (moneromooo-monero) 061789b5 checkpoints: trap failure to load JSON checkpoints (moneromooo-monero) ba2fefb9 checkpoints: pass std::string by const ref, not const value (moneromooo-monero) 38c8f4e0 mlog: terminate a string at last char, just in case (moneromooo-monero) d753d716 fix a few leaks by throwing objects, not newed pointers to objects (moneromooo-monero) fe568db8 p2p: use size_t for arbitrary counters instead of uint8_t (moneromooo-monero) 46d6fa35 cryptonote_protocol: sanity check chain hashes from peer (moneromooo-monero) 25584f86 cryptonote_protocol: print peer versions when unexpected (moneromooo-monero) 490a5d41 rpc: do not try to use an invalid txid in relay_tx (moneromooo-monero)
2017-12-25Merge pull request #2905Riccardo Spagni16-32/+833
bd1f6029 http_client: rewrite header parsing manually for speed (moneromooo-monero) ec724eb6 tests: add levin fuzz test (moneromooo-monero) f1bdc9a4 tests: add http client fuzz test (moneromooo-monero) 0272df9e add parse_url fuzz test (moneromooo-monero) 261b0dd0 tests: add base58 fuzz test (moneromooo-monero) fd052087 fuzz_testing: allow automatically resuming an interrupted job (moneromooo-monero) c80bb0eb tests: don't init stuff we don't need in fuzz tests - faster (moneromooo-monero) 53b83a83 tests: better load-from-binary fuzz test data file (moneromooo-monero) 1a379ef6 fuzz_testing: build with ASAN (assumed to be available) (moneromooo-monero) 4cd4a431 fuzz_testing: create out directory if needed, and fix filename passing (moneromooo-monero) c27d9092 Makefile: build fuzz tests statically, starts faster (moneromooo-monero) 95aa0bf7 add load_from_binary/load_from_json fuzzers (moneromooo-monero)
2017-12-25Merge pull request #2890Riccardo Spagni1-0/+2
83b0f9e6 version: add -master to master version (moneromooo-monero) 493f7d09 util: allow non numeric version parts (moneromooo-monero)
2017-12-23tests: add levin fuzz testmoneromooo-monero3-0/+359
2017-12-23tests: add http client fuzz testmoneromooo-monero3-0/+120
2017-12-23add parse_url fuzz testmoneromooo-monero4-0/+89
2017-12-23tests: add base58 fuzz testmoneromooo-monero4-0/+87
2017-12-23tests: don't init stuff we don't need in fuzz tests - fastermoneromooo-monero1-32/+1
2017-12-23tests: better load-from-binary fuzz test data filemoneromooo-monero1-0/+0
Looks like there's some kind of header/signature
2017-12-23add load_from_binary/load_from_json fuzzersmoneromooo-monero5-0/+177
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-monero4-43/+4
2017-12-18performance_tests: add a test for subaddress expansionmoneromooo-monero3-0/+70
2017-12-18tests: fix a buffer overread in a unit testmoneromooo-monero1-3/+1
and remove a leftover debugging sanity check
2017-12-18tests: fix link error in hash tests now needing commonmoneromooo-monero1-0/+1
2017-12-17core_tests: multisig test now tests multiple inputsmoneromooo-monero3-136/+209
2017-12-17Match surae's recommendation to derive multisig keysmoneromooo-monero1-4/+6
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-17make multisig work with subaddressesmoneromooo-monero1-7/+11
Thanks to kenshi84 for help getting this work
2017-12-17wallet: guard against partly initialized multisig walletmoneromooo-monero1-5/+12
2017-12-17add multisig core test and factor multisig building blocksmoneromooo-monero6-0/+716
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-17Merge pull request #2857Riccardo Spagni1-0/+1
7193b89f Scrub keys from memory just before scope end. (moneromooo-monero)
2017-12-17Merge pull request #2877Riccardo Spagni4-1/+15
43f5269f Wallets now do not depend on the daemon rpc lib (moneromooo-monero) bb89ae8b move connection_basic and network_throttle from src/p2p to epee (moneromooo-monero) 4abf25f3 cryptonote_core does not depend on p2p anymore (moneromooo-monero)
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-monero4-1/+15
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-monero11-6/+13
2017-12-16Scrub keys from memory just before scope end.moneromooo-monero1-0/+1
Partially implements #74. Securely erases keys from memory after they are no longer needed. Might have a performance impact, which I haven't measured (perf measurements aren't generally reliable on laptops). Thanks to @stoffu for the suggestion to specialize the pod_to_hex/hex_to_pod functions. Using overloads + SFINAE instead generalizes it so other types can be marked as scrubbed without adding more boilerplate.
2017-12-16Merge pull request #2860Riccardo Spagni3-1/+68
3dffe71b new wipeable_string class to replace std::string passphrases (moneromooo-monero) 7a2a5741 utils: initialize easylogging++ in on_startup (moneromooo-monero) 54950829 use memwipe in a few relevant places (moneromooo-monero) 000666ff add a memwipe function (moneromooo-monero)
2017-12-08add bulletproofs from v7 on testnetmoneromooo-monero2-2/+2
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-26tests: disable libwallet_api_tests when BUILD_GUI_DEPS is not setmoneromooo-monero1-1/+3
2017-11-25Merge pull request #2824Riccardo Spagni2-1/+2
51895fd7 split wallet and wallet_api (moneromooo-monero)
2017-11-16split wallet and wallet_apimoneromooo-monero2-1/+2
This speeds up building a lot when wallet2.h (or something it includes) changes, since all the API includes wallet2.h
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-15Merge pull request #2771Riccardo Spagni1-5/+1
e3e838d0 kaccak: remove unused return value (moneromooo-monero) 4877aca2 keccak: some paranoid "can't happen" checks (moneromooo-monero)
2017-11-14Merge pull request #2812Riccardo Spagni1-2/+2
9ac52127 unit_tests: fix build after wallet2 list/vector change (moneromooo-monero)
2017-11-14Merge pull request #2736Riccardo Spagni6-6/+2
0d9c0db9 Do not build against epee_readline if it was not built (Howard Chu) 178014c9 split off readline code into epee_readline (moneromooo-monero) a9e14a19 link against readline only for monerod and wallet-wallet-{rpc,cli} (moneromooo-monero) 437421ce wallet: move some scoped_message_writer calls from the libs (moneromooo-monero) e89994e9 wallet: rejig to avoid prompting in wallet2 (moneromooo-monero) ec5135e5 move input_line from command_line to simplewallet (moneromooo-monero) 082db75f move cryptonote command line options to cryptonote_core (moneromooo-monero)
2017-11-14Merge pull request #2644Riccardo Spagni1-2/+2
a17efcb0 make this build on SunOS/Solaris (Pavel Maryanov)
2017-11-14unit_tests: fix build after wallet2 list/vector changemoneromooo-monero1-2/+2
2017-11-14move cryptonote command line options to cryptonote_coremoneromooo-monero6-6/+2
Those have no reason to be in a generic module
2017-11-14make this build on SunOS/SolarisPavel Maryanov1-2/+2
2017-11-14remove "using namespace std" from headersmoneromooo-monero4-4/+5
It's nasty, and actually breaks on Solaris, where if.h fails to build due to: struct map *if_memmap;
2017-11-14Merge pull request #2720Riccardo Spagni1-1/+1
110339f5 unit_tests: fix data dir determination (moneromooo-monero)
2017-11-14Merge pull request #2696Riccardo Spagni9-1/+14
937e7f8a Initialize openssl on startup (moneromooo-monero)
2017-11-14Merge pull request #2691Riccardo Spagni10-12/+8
f92f1606 core_tests: do not include chaingen_tests_list.h in all tests (moneromooo-monero)
2017-11-14Merge pull request #2686Riccardo Spagni2-6/+6
21b9f6f3 always use core_tests for consistency, not coretests (moneromooo-monero)
2017-11-14Merge pull request #2670Riccardo Spagni2-0/+119
4fb77946 unit tests: OOB indexes & adding subaddress (Cole Lightfighter) 4fd6a3d2 Subaddress unit tests (Cole Lightfighter)
2017-11-14Merge pull request #2617Riccardo Spagni4-9/+17
7dbf76d0 Fix an object lifetime bug in net load tests (moneromooo-monero)
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-11-06Merge pull request #2483Riccardo Spagni2-0/+145
ff7745bb Edited test readme for accuracy and depth (Cole Lightfighter) c300ae56 Added test documentation & Keccak unit test (Cole Lightfighter) f6119a8e Added test documentation & Keccak unit test (Cole Lightfighter)
2017-11-03Merge pull request #2662Riccardo Spagni8-9/+11
88ebfd64 core_tests: fix for subaddress patch (kenshi84) e373a203 performance_tests: add master spend pubkey to subaddress hashtable (kenshi84)
2017-11-02Merge pull request #2666Riccardo Spagni1-1/+1
8233a24b unit_tests: fix build on windows (moneromooo-monero)
2017-10-29fix libwallet api test after api changeJaquee1-8/+8
2017-10-24unit_tests: fix data dir determinationmoneromooo-monero1-1/+1
2017-10-21Initialize openssl on startupmoneromooo-monero9-1/+14
2017-10-20core_tests: do not include chaingen_tests_list.h in all testsmoneromooo-monero10-12/+8
This fixes all tests being annoyingly rebuilt when one changes
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-19always use core_tests for consistency, not coretestsmoneromooo-monero2-6/+6
Other tests use unit_tests, performance_tests, etc. This fixes getting it wrong half the time when typing.
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-17core_tests: fix for subaddress patchkenshi847-9/+10
2017-10-16unit_tests: fix build on windowsmoneromooo-monero1-1/+1
Reported by iDunk on IRC
2017-10-16performance_tests: add master spend pubkey to subaddress hashtablekenshi841-0/+1
2017-10-15performance_tests: fix build after subaddress patchmoneromooo-monero1-1/+4
2017-10-15Merge pull request #2610Riccardo Spagni2-7/+5
44c1d160 unit_tests: fix compiling on Windows (iDunk5400)
2017-10-15Merge pull request #2608Riccardo Spagni2-10/+23
fe484f30 unit_tests: data dir is now overridden with --data-dir (moneromooo-monero)
2017-10-15Merge pull request #2582Riccardo Spagni2-0/+46
240f769d tests: add sha256sum unit test (moneromooo-monero)
2017-10-15Merge pull request #2565Riccardo Spagni1-1/+1
452d4fae tests: fix hashchain unit tests (moneromooo-monero)
2017-10-15Merge pull request #2555Riccardo Spagni1-0/+14
a4b4651c dns_utils: allow an optional DNS server IP in DNS_PUBLIC (moneromooo-monero)
2017-10-15Merge pull request #2528Riccardo Spagni1-1/+3
551a8ea6 mnemonics: new Lojban word list (Wei Tang)
2017-10-15Merge pull request #2469Riccardo Spagni2-0/+2
7adceee6 precomputed block hashes are now in blocks of N (currently 256) (moneromooo-monero)
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-monero4-9/+17
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-07Subaddresseskenshi8419-115/+138
2017-10-06Merge pull request #2523Riccardo Spagni5-10/+33
540d6fa3 tests: pass data dir as arg (redfish)
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-10-02Merge pull request #2518Riccardo Spagni2-2/+2
6a0fb301 performance_tests: adjust some iterations down a bit (moneromooo-monero)
2017-10-01Edited test readme for accuracy and depthCole Lightfighter1-122/+61
Removed some erroneous instructions, and added information about different test suites. Signed-off-by: Cole Lightfighter <cole@onicsla.bz>
2017-09-28tests: pass data dir as argredfish5-10/+33
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
2017-09-25move checkpoints in a separate librarymoneromooo-monero7-9/+9
2017-09-25performance_tests: add a test for is_out_to_acc_precompmoneromooo-monero2-0/+23
2017-09-25Merge pull request #2457Riccardo Spagni1-1/+1
d2d8a41c Use actual batch size for resize estimates (Howard Chu)
2017-09-25Merge pull request #2424Riccardo Spagni5-7/+8
28b72b6e tx_pool: pre-init tvc.m_verifivation_failed before processing (moneromooo-monero) 50a629b2 core_tests: catch (impossible in practice) tx extra api failure (moneromooo-monero) fee15ef1 wallet2: catch failure to parse address (moneromooo-monero) 1399e26d net_peerlist: remove dead code (moneromooo-monero) 50e09698 tx_pool: guard against failure getting tx hash (moneromooo-monero) 54cc209a wallet_rpc_server: catch failure to create directory (moneromooo-monero) 3e55099c wallet_rpc_server: init m_vm to NULL in ctor (moneromooo-monero) 7d0dde5e wallet_args: remove redundant default value for --log-file (moneromooo-monero) ed4a3350 wallet2: catch failure to save keys file (moneromooo-monero) 44434c8a wallet2_api: check whether dynamic_cast returns NULL (moneromooo-monero) 92f2f687 core: check return value from parse_hexstr_to_binbuff (moneromooo-monero) 5475692e wallet2_api: remove an unused, uninitialized, field (moneromooo-monero) a7ba3de1 libwallet_api_tests: initialize newblock_triggered on reset (moneromooo-monero) b2763ace wallet2_api: init error code to "no error" in the ctor (moneromooo-monero) b5faac53 get_blockchain_top now returns void (moneromooo-monero) 2e44d8f2 wallet_rpc_server: guard against exceptions (moneromooo-monero) 4230876b simplewallet: guard against I/O exceptions (moneromooo-monero) 06c1e057 daemon: initialize decode_as_json in RPC request (moneromooo-monero) 11f71af5 http_base: init size_t in http_request_info ctor (moneromooo-monero)
2017-09-25Merge pull request #2442Riccardo Spagni4-0/+4
e29282d2 build: auto update version info without manually deleting version.h (stoffu)
2017-09-25Merge pull request #2440Riccardo Spagni2-0/+75
6137a0b9 blockchain: reject unsorted ins and outs from v7 (moneromooo-monero) 16afab90 core: sort ins and outs key key image and public key, respectively (moneromooo-monero) 0c36b9f9 common: add apply_permutation file and function (moneromooo-monero)
2017-09-25core_tests: catch (impossible in practice) tx extra api failuremoneromooo-monero1-2/+4
CID 175301
2017-09-25libwallet_api_tests: initialize newblock_triggered on resetmoneromooo-monero1-1/+1
CID 161873