aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/include (follow)
AgeCommit message (Collapse)AuthorFilesLines
2019-10-25Merge pull request #5357luigi11114-7/+50
b3a9a4d add a quick early out to get_blocks.bin when up to date (moneromooo-monero) 2899379 daemon, wallet: new pay for RPC use system (moneromooo-monero) ffa4602 simplewallet: add public_nodes command (moneromooo-monero)
2019-10-25daemon, wallet: new pay for RPC use systemmoneromooo-monero4-7/+50
Daemons intended for public use can be set up to require payment in the form of hashes in exchange for RPC service. This enables public daemons to receive payment for their work over a large number of calls. This system behaves similarly to a pool, so payment takes the form of valid blocks every so often, yielding a large one off payment, rather than constant micropayments. This system can also be used by third parties as a "paywall" layer, where users of a service can pay for use by mining Monero to the service provider's address. An example of this for web site access is Primo, a Monero mining based website "paywall": https://github.com/selene-kovri/primo This has some advantages: - incentive to run a node providing RPC services, thereby promoting the availability of third party nodes for those who can't run their own - incentive to run your own node instead of using a third party's, thereby promoting decentralization - decentralized: payment is done between a client and server, with no third party needed - private: since the system is "pay as you go", you don't need to identify yourself to claim a long lived balance - no payment occurs on the blockchain, so there is no extra transactional load - one may mine with a beefy server, and use those credits from a phone, by reusing the client ID (at the cost of some privacy) - no barrier to entry: anyone may run a RPC node, and your expected revenue depends on how much work you do - Sybil resistant: if you run 1000 idle RPC nodes, you don't magically get more revenue - no large credit balance maintained on servers, so they have no incentive to exit scam - you can use any/many node(s), since there's little cost in switching servers - market based prices: competition between servers to lower costs - incentive for a distributed third party node system: if some public nodes are overused/slow, traffic can move to others - increases network security - helps counteract mining pools' share of the network hash rate - zero incentive for a payer to "double spend" since a reorg does not give any money back to the miner And some disadvantages: - low power clients will have difficulty mining (but one can optionally mine in advance and/or with a faster machine) - payment is "random", so a server might go a long time without a block before getting one - a public node's overall expected payment may be small Public nodes are expected to compete to find a suitable level for cost of service. The daemon can be set up this way to require payment for RPC services: monerod --rpc-payment-address 4xxxxxx \ --rpc-payment-credits 250 --rpc-payment-difficulty 1000 These values are an example only. The --rpc-payment-difficulty switch selects how hard each "share" should be, similar to a mining pool. The higher the difficulty, the fewer shares a client will find. The --rpc-payment-credits switch selects how many credits are awarded for each share a client finds. Considering both options, clients will be awarded credits/difficulty credits for every hash they calculate. For example, in the command line above, 0.25 credits per hash. A client mining at 100 H/s will therefore get an average of 25 credits per second. For reference, in the current implementation, a credit is enough to sync 20 blocks, so a 100 H/s client that's just starting to use Monero and uses this daemon will be able to sync 500 blocks per second. The wallet can be set to automatically mine if connected to a daemon which requires payment for RPC usage. It will try to keep a balance of 50000 credits, stopping mining when it's at this level, and starting again as credits are spent. With the example above, a new client will mine this much credits in about half an hour, and this target is enough to sync 500000 blocks (currently about a third of the monero blockchain). There are three new settings in the wallet: - credits-target: this is the amount of credits a wallet will try to reach before stopping mining. The default of 0 means 50000 credits. - auto-mine-for-rpc-payment-threshold: this controls the minimum credit rate which the wallet considers worth mining for. If the daemon credits less than this ratio, the wallet will consider mining to be not worth it. In the example above, the rate is 0.25 - persistent-rpc-client-id: if set, this allows the wallet to reuse a client id across runs. This means a public node can tell a wallet that's connecting is the same as one that connected previously, but allows a wallet to keep their credit balance from one run to the other. Since the wallet only mines to keep a small credit balance, this is not normally worth doing. However, someone may want to mine on a fast server, and use that credit balance on a low power device such as a phone. If left unset, a new client ID is generated at each wallet start, for privacy reasons. To mine and use a credit balance on two different devices, you can use the --rpc-client-secret-key switch. A wallet's client secret key can be found using the new rpc_payments command in the wallet. Note: anyone knowing your RPC client secret key is able to use your credit balance. The wallet has a few new commands too: - start_mining_for_rpc: start mining to acquire more credits, regardless of the auto mining settings - stop_mining_for_rpc: stop mining to acquire more credits - rpc_payments: display information about current credits with the currently selected daemon The node has an extra command: - rpc_payments: display information about clients and their balances The node will forget about any balance for clients which have been inactive for 6 months. Balances carry over on node restart.
2019-10-24Merge pull request #6006luigi11111-2/+6
9f3be3b epee: use SO_REUSEADDR on non-Windows targets (xiphon)
2019-10-22epee: use SO_REUSEADDR on non-Windows targetsxiphon1-2/+6
2019-10-22Merge pull request #5996luigi11111-0/+1
23ba69e epee: fix SSL server handshake, run_one() can block, use poll_one() (xiphon)
2019-10-22Merge pull request #5986luigi11111-1/+1
1080136 abstract_tcp_server2: move 'Trying to connect' from error to debug (moneromooo-monero)
2019-10-22Merge pull request #5966luigi11111-0/+3
be82c40 Support median block size > 4 GB (moneromooo-monero)
2019-10-21Support median block size > 4 GBmoneromooo-monero1-0/+3
add a 128/64 division routine so we can use a > 32 bit median block size in calculations
2019-10-18epee: fix SSL server handshake, run_one() can block, use poll_one()xiphon1-0/+1
2019-10-16Merge pull request #5911luigi11111-0/+5
e48dcb7 levin: armour against some 'should not happen' case (moneromooo-monero)
2019-10-15levin: armour against some "should not happen" casemoneromooo-monero1-0/+5
If adding a response handler after the protocol is released, they could never be cancelled again, and would end up keeping a ref that never goes away
2019-10-14Merge pull request #5947luigi11111-4/+2
c9cfbf7 epee: tcp server - set SO_LINGER instead of SO_REUSEADDR option (xiphon)
2019-10-14Merge pull request #5937luigi11111-1/+1
4b654f6 abstract_tcp_server2: log pointer, not contents, where appropriate (moneromooo-monero)
2019-10-14abstract_tcp_server2: move "Trying to connect" from error to debugmoneromooo-monero1-1/+1
and fix the message grammar
2019-10-08Merge pull request #5918luigi11112-2/+6
4371791 epee: implement handshake timeout for SSL connections (xiphon)
2019-10-08Merge pull request #5917luigi11111-1/+2
7d81850 epee: fix network timeouts in blocked_mode_client (xiphon)
2019-10-02epee: tcp server - set SO_LINGER instead of SO_REUSEADDR optionxiphon1-4/+2
2019-09-30Merge pull request #5910luigi11111-0/+5
1b91beb abstract_tcp_server2: fix lingering connections (moneromooo-monero)
2019-09-30Merge pull request #5893luigi11111-1/+13
Coverity fixes [3a81639, 1bd962d, 2825f07, d099658, d46f701, cd57a10] (anonimal)
2019-09-27abstract_tcp_server2: log pointer, not contents, where appropriatemoneromooo-monero1-1/+1
2019-09-24epee: misc_log_ex.h can now be used in C codemoneromooo-monero1-0/+26
use mfatal/merror/mwarning/minfo/mdebug/mtrace
2019-09-17epee: implement handshake timeout for SSL connectionsxiphon2-2/+6
2019-09-16epee: fix network timeouts in blocked_mode_clientxiphon1-1/+2
2019-09-16Properly format multiline logsmoneromooo-monero1-21/+21
As a side effect, colouring on Windows should now work regardless of version
2019-09-14Merge pull request #5898luigi11111-1/+1
73f22c4 depends: fix MacOS build with Clang 3.7.1 (vtnerd)
2019-09-12abstract_tcp_server2: fix lingering connectionsmoneromooo-monero1-0/+5
Resetting the timer after shutdown was initiated would keep a reference to the object inside ASIO, which would keep the connection alive until the timer timed out
2019-09-08depends: fix MacOS build with Clang 3.7.1Lee Clagett1-1/+1
2019-09-08epee: abstract_tcp_server2: resolve CID 203919 (DC.WEAK_CRYPTO)anonimal1-1/+13
The problem actually exists in two parts: 1. When sending chunks over a connection, if the queue size is greater than N, the seed is predictable across every monero node. >"If rand() is used before any calls to srand(), rand() behaves as if it was seeded with srand(1). Each time rand() is seeded with the same seed, it must produce the same sequence of values." 2. The CID speaks for itself: "'rand' should not be used for security-related applications, because linear congruential algorithms are too easy to break." *But* this is an area of contention. One could argue that a CSPRNG is warranted in order to fully mitigate any potential timing attacks based on crafting chunk responses. Others could argue that the existing LCG, or even an MTG, would suffice (if properly seeded). As a compromise, I've used an MTG with a full bit space. This should give a healthy balance of security and speed without relying on the existing crypto library (which I'm told might break on some systems since epee is not (shouldn't be) dependent upon the existing crypto library).
2019-09-04Fix IP address serialization on big endianmoneromooo-monero1-1/+15
IP addresses are stored in network byte order even on little endian hosts
2019-09-04storages: fix "portable" storage on big endianmoneromooo-monero4-3/+99
2019-09-04storages: fix writing varints on big endianmoneromooo-monero1-1/+1
2019-09-04epee: fix local/loopback checks on big endianmoneromooo-monero1-0/+7
IPv4 addresses are kept in network byte order in memory
2019-09-04Merge pull request #5824luigi11111-1/+1
2a41dc0 epee: fix connections not being properly closed in some instances (moneromooo-monero)
2019-09-04Merge pull request #5814luigi11111-91/+0
bdcdb0e Remove unused code under WINDWOS_PLATFORM guard (tomsmeding) a84aa04 syncobj.h no longer defines shared_guard, so remove those define's (tomsmeding)
2019-09-04Merge pull request #5536luigi11112-13/+78
1a367d6 simplewallet: lock console on inactivity (moneromooo-monero)
2019-08-28simplewallet: lock console on inactivitymoneromooo-monero2-13/+78
2019-08-23syncobj.h no longer defines shared_guard, so remove those define'sTom Smeding1-3/+0
The removed preprocessor macro's refer to types that are not defined in the file anymore; the only other place where shared_guard is defined is in winobj.h, which also defines the same macro's. Therefore, this change is safe. (Side note is that these macro's weren't used at all anyway, but that is orthogonal to the issue.)
2019-08-20fix feature not introduced until boost 1.66Jethro Grassie1-1/+1
2019-08-19epee: fix connections not being properly closed in some instancesmoneromooo-monero1-1/+1
Fixed by Fixed by crCr62U0
2019-08-16epee: support unicode in parsed stringsmoneromooo-monero2-22/+61
2019-08-15Merge pull request #5674luigi11111-0/+24
fcbf7b3 p2p: propagate out peers limit to payload handler (moneromooo-monero) 098aadf p2p: close the right number of connections on setting max in/out peers (moneromooo-monero)
2019-08-15Merge pull request #5649luigi11112-2/+6
a182df2 Bans for RPC connections (hyc)
2019-08-15Remove unused code under WINDWOS_PLATFORM guardTom Smeding1-88/+0
This code has been present, unchanged, ever since the original move to github in 2014 with commit 296ae46ed.
2019-07-31Add IPv6 supportThomas Winget6-64/+416
new cli options (RPC ones also apply to wallet): --p2p-bind-ipv6-address (default = "::") --p2p-bind-port-ipv6 (default same as ipv4 port for given nettype) --rpc-bind-ipv6-address (default = "::1") --p2p-use-ipv6 (default false) --rpc-use-ipv6 (default false) --p2p-require-ipv4 (default true, if ipv4 bind fails and this is true, will not continue even if ipv6 bind successful) --rpc-require-ipv4 (default true, description as above) ipv6 addresses are to be specified as "[xx:xx:xx::xx:xx]:port" except in the cases of the cli args for bind address. For those the square braces can be omitted.
2019-07-24Merge pull request #5531luigi11111-4/+8
9a6006b abstract_tcp_server2: move some things out of a lock (moneromooo-monero)
2019-07-24Merge pull request #5530luigi11111-2/+0
6abaaaa remove obsolete save_graph skeleton code (moneromooo-monero)
2019-07-24Merge pull request #5528luigi11111-1/+1
f61a315 net_utils: fix m_ssl type from time_t to bool (moneromooo-monero)
2019-07-17Added support for "noise" over I1P/Tor to mask Tx transmission.Lee Clagett7-61/+158
2019-07-16Add ref-counted buffer byte_slice. Currently used for sending TCP data.Lee Clagett8-147/+234
2019-07-16allow blocking whole subnetsmoneromooo-monero2-2/+49
2019-06-19p2p: close the right number of connections on setting max in/out peersmoneromooo-monero1-0/+24
2019-06-16Bans for RPC connectionsHoward Chu2-2/+6
Make bans control RPC sessions too. And auto-ban some bad requests. Drops HTTP connections whenever response code is 500.
2019-06-14abstract_tcp_server2: improve DoS resistancemoneromooo-monero1-4/+5
2019-06-14epee: basic sanity check on allocation size from untrusted sourcemoneromooo-monero1-0/+1
Reported by guidov
2019-06-11Merge pull request #5618luigi11111-6/+4
b0a04f7 epee: fix SSL autodetect on reconnection (xiphon)
2019-06-10epee: fix SSL autodetect on reconnectionxiphon1-6/+4
2019-06-09Fix GCC 9.1 build warningsmoneromooo-monero1-0/+5
GCC wants operator= aand copy ctor to be both defined, or neither
2019-05-22Add ssl_options support to monerod's rpc mode.Lee Clagett1-0/+38
2019-05-10abstract_tcp_server2: move some things out of a lockmoneromooo-monero1-4/+8
The lock is meant for the network throttle object only, and this should help coverity get unconfused
2019-05-10remove obsolete save_graph skeleton codemoneromooo-monero1-2/+0
2019-05-10net_utils: fix m_ssl type from time_t to boolmoneromooo-monero1-1/+1
2019-05-07Merge pull request #5509Riccardo Spagni1-0/+3
a62e0725 net_ssl: SSL config tweaks for compatibility and security (moneromooo-monero)
2019-05-07Merge pull request #5499Riccardo Spagni1-0/+236
a4c4a2d8 blockchain: keep a rolling long term block weight median (moneromooo-monero)
2019-05-07net_ssl: SSL config tweaks for compatibility and securitymoneromooo-monero1-0/+3
add two RSA based ciphers for Windows/depends compatibility also enforce server cipher ordering also set ECDH to auto because vtnerd says it is good :) When built with the depends system, openssl does not include any cipher on the current whitelist, so add this one, which fixes the problem, and does seem sensible.
2019-05-02blockchain: keep a rolling long term block weight medianmoneromooo-monero1-0/+236
2019-04-26change SSL certificate fingerprint whitelisting from SHA1 to SHA-256moneromooo-monero1-0/+2
SHA1 is too close to bruteforceable
2019-04-24Merge pull request #5482Riccardo Spagni1-0/+1
9956500d net_helper: clear recv buffer on eof (moneromooo-monero)
2019-04-24Merge pull request #5479Riccardo Spagni1-1/+1
edbae2d0 levin_protocol_handler_async: tune down preallocation a fair bit (moneromooo-monero)
2019-04-23net_helper: clear recv buffer on eofmoneromooo-monero1-0/+1
2019-04-22levin_protocol_handler_async: tune down preallocation a fair bitmoneromooo-monero1-1/+1
It can allocate a lot when getting a lot of connections (in particular, the stress test on windows apparently pushes that memory to actual use, rather than just allocated)
2019-04-21serialization: set default log categorymoneromooo-monero2-0/+6
2019-04-18epee: use boost/timer/timer.hpp, boost/timer.hpp is deprecatedmoneromooo-monero1-1/+1
2019-04-16Merge pull request #5445Riccardo Spagni1-0/+12
b18f0b10 wallet: new --offline option (moneromooo-monero)
2019-04-16Merge pull request #5436Riccardo Spagni1-3/+4
61d63900 net_helper: avoid unnecessary memcpy (moneromooo-monero)
2019-04-15wallet: new --offline optionmoneromooo-monero1-0/+12
It will avoid connecting to a daemon (so useful for cold signing using a RPC wallet), and not perform DNS queries.
2019-04-13net_helper: avoid unnecessary memcpymoneromooo-monero1-3/+4
2019-04-12abstract_tcp_server2: fix timeout on exitmoneromooo-monero2-2/+9
When closing connections due to exiting, the IO service is already gone, so the data exchange needed for a gracious SSL shutdown cannot happen. We just close the socket in that case.
2019-04-11epee: init a new ssl related variable in ctormoneromooo-monero1-0/+1
2019-04-11simplewallet: new net_stats commandmoneromooo-monero2-2/+30
displays total sent and received bytes
2019-04-07Enabling daemon-rpc SSL now requires non-system CA verificationLee Clagett1-0/+3
If `--daemon-ssl enabled` is set in the wallet, then a user certificate, fingerprint, or onion/i2p address must be provided.
2019-04-07Require manual override for user chain certificates.Lee Clagett1-1/+2
An override for the wallet to daemon connection is provided, but not for other SSL contexts. The intent is to prevent users from supplying a system CA as the "user" whitelisted certificate, which is less secure since the key is controlled by a third party.
2019-04-07Perform RFC 2818 hostname verification in client SSL handshakesLee Clagett2-2/+14
If the verification mode is `system_ca`, clients will now do hostname verification. Thus, only certificates from expected hostnames are allowed when SSL is enabled. This can be overridden by forcible setting the SSL mode to autodetect. Clients will also send the hostname even when `system_ca` is not being performed. This leaks possible metadata, but allows servers providing multiple hostnames to respond with the correct certificate. One example is cloudflare, which getmonero.org is currently using.
2019-04-07Require server verification when SSL is enabled.Lee Clagett1-0/+6
If SSL is "enabled" via command line without specifying a fingerprint or certificate, the system CA list is checked for server verification and _now_ fails the handshake if that check fails. This change was made to remain consistent with standard SSL/TLS client behavior. This can still be overridden by using the allow any certificate flag. If the SSL behavior is autodetect, the system CA list is still checked but a warning is logged if this fails. The stream is not rejected because a re-connect will be attempted - its better to have an unverified encrypted stream than an unverified + unencrypted stream.
2019-04-07Pass SSL arguments via one class and use shared_ptr instead of referenceLee Clagett7-111/+152
2019-04-06Change SSL certificate file list to OpenSSL builtin load_verify_locationLee Clagett6-23/+20
Specifying SSL certificates for peer verification does an exact match, making it a not-so-obvious alias for the fingerprints option. This changes the checks to OpenSSL which loads concatenated certificate(s) from a single file and does a certificate-authority (chain of trust) check instead. There is no drop in security - a compromised exact match fingerprint has the same worse case failure. There is increased security in allowing separate long-term CA key and short-term SSL server keys. This also removes loading of the system-default CA files if a custom CA file or certificate fingerprint is specified.
2019-04-06Merge pull request #5375Riccardo Spagni1-0/+1
1569776a Add missing include (Leon Klingele)
2019-04-06Merge pull request #5348Riccardo Spagni4-8/+11
59776a64 epee: some more minor JSON parsing speedup (moneromooo-monero)
2019-04-01Merge pull request #5327Riccardo Spagni2-1/+5
c23ea796 New interactive daemon command 'print_net_stats': Global traffic stats (rbrunner7)
2019-04-01Merge pull request #5309Riccardo Spagni1-0/+1
43042a28 Implement array_entry_t copy constructor (Guido Vranken)
2019-03-31Add missing includeLeon Klingele1-0/+1
2019-03-25epee: some more minor JSON parsing speedupmoneromooo-monero4-8/+11
2019-03-25Added socks proxy (tor/i2pd/kovri) support to walletLee Clagett4-75/+79
2019-03-24Merge pull request #5285Riccardo Spagni1-0/+1
6ef816de console_handler: print newline on EOF (moneromooo-monero)
2019-03-24New interactive daemon command 'print_net_stats': Global traffic statsrbrunner72-1/+5
2019-03-21Merge pull request #5283Riccardo Spagni1-5/+6
16590294 abstract_tcp_server2: fix crashy race on socket shutdown (moneromooo-monero)
2019-03-21epee: fix build with boost 1.70.0moneromooo-monero1-5/+11
get_io_service was deprecated, and got removed
2019-03-19abstract_tcp_server2: fix crashy race on socket shutdownmoneromooo-monero1-5/+6
2019-03-18Implement array_entry_t copy constructorGuido Vranken1-0/+1
Manually initialize the array_entry_t iterator to ensure it points to the correct m_array, thereby preventing a potential use-after-free situation. Signed-off-by: Guido Vranken <guidovranken@gmail.com>
2019-03-17Merge pull request #5061Riccardo Spagni9-9/+9
1f2930ce Update 2019 copyright (binaryFate)
2019-03-13console_handler: print newline on EOFmoneromooo-monero1-0/+1
This avoids the annoying case where the shell prints its prompt after the last line from Monero output, causing line editing to sometimes go wonky, for lack of a better term
2019-03-08Fix startup errors with SSL cert generationHoward Chu1-1/+0
Use SSL API directly, skip boost layer
2019-03-05Update 2019 copyrightbinaryFate9-9/+9
2019-03-05epee: add SSL supportMartijn Otto7-19/+31
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-04default initialize rpc structuresmoneromooo-monero2-0/+19
2019-03-04Merge pull request #5162Riccardo Spagni2-6/+14
4d3b61a3 Use io_service::work in epee tcp server (Lee Clagett)
2019-03-04Merge pull request #5160Riccardo Spagni1-1/+1
7af4fbd4 epee: Add space after ':' in additional http response headers (Tom Smeding)
2019-03-04Merge pull request #5113Riccardo Spagni1-0/+1
c0e9e805 Fixed missing return value in once_a_time class on windows (Markus Behm)
2019-03-04Merge pull request #5102Riccardo Spagni2-0/+417
1eef0565 performance_tests: better stats, and keep track of timing history (moneromooo-monero)
2019-03-04Merge pull request #5096Riccardo Spagni1-1/+2
7c3ade44 network_throttle: use circular_buffer where appropriate (moneromooo-monero)
2019-03-04Merge pull request #5091Riccardo Spagni1-1/+4
123fc2a2 i2p: initial support (Jethro Grassie)
2019-02-18epee: Add space after ':' in additional http response headersTom Smeding1-1/+1
2019-02-10Use io_service::work in epee tcp serverLee Clagett2-6/+14
2019-02-09Fixed missing return value in once_a_time class on windowsMarkus Behm1-0/+1
2019-02-02epee: add SSL supportmoneromooo-monero8-198/+539
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-02-01network_throttle: use circular_buffer where appropriatemoneromooo-monero1-1/+2
2019-01-30i2p: initial supportJethro Grassie1-1/+4
2019-01-28Adding initial support for broadcasting transactions over TorLee Clagett5-98/+267
- 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-28rpc: fix internal daemon calls in restricted rpc getting partial datamoneromooo-monero1-6/+6
2019-01-28performance_tests: better stats, and keep track of timing historymoneromooo-monero2-0/+417
2019-01-22Pruningmoneromooo-monero4-2/+29
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-16epee: speedup word/number matchingmoneromooo-monero2-45/+89
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-16Merge pull request #5021Riccardo Spagni2-3/+13
b82efa32 epee: speed up json parsing (moneromooo-monero)
2019-01-16Merge pull request #5001Riccardo Spagni1-30/+0
a5ffc2d5 Remove boost::lexical_cast for uuid and unused uuid function (Lee Clagett)
2019-01-16Merge pull request #4976Riccardo Spagni11-54/+128
85665003 epee: better network buffer data structure (moneromooo-monero)
2019-01-06Merge pull request #4950Riccardo Spagni1-8/+15
68f045de easylogging++: check allowed categories before logging (moneromooo-monero)
2019-01-06Merge pull request #4949Riccardo Spagni1-9/+30
5464725a protocol: change standby mode to not wait sleeping (moneromooo-monero) 85807dfb add a once_a_time_milliseconds class (moneromooo-monero)
2019-01-06Merge pull request #4938Riccardo Spagni2-38/+18
a13eb0a1 epee: speed up string matching a bit (moneromooo-monero) 3a3858dc epee: avoid string allocation when parsing a pod from string (moneromooo-monero)
2018-12-31Merge pull request #4933luigi11112-2/+2
3cf85f0 Changed RECIEVED to RECEIVED in log messages. (normoes)
2018-12-27epee: speed up json parsingmoneromooo-monero2-3/+13
2018-12-23epee: better network buffer data structuremoneromooo-monero11-54/+128
avoids pointless allocs and memcpy
2018-12-23Remove boost::lexical_cast for uuid and unused uuid functionLee Clagett1-30/+0
2018-12-08epee: speed up string matching a bitmoneromooo-monero1-2/+6
2018-12-08epee: avoid string allocation when parsing a pod from stringmoneromooo-monero1-36/+12
2018-12-07easylogging++: check allowed categories before loggingmoneromooo-monero1-8/+15
2018-12-07add a once_a_time_milliseconds classmoneromooo-monero1-9/+30
2018-12-04Merge pull request #4866Riccardo Spagni6-57/+371
9c923bad epee: fix network packet header field endianness (moneromooo-monero) ec1a62b5 move int-util.h to epee (moneromooo-monero)
2018-12-04Merge pull request #4880Riccardo Spagni1-0/+9
96e6b439 blockchain_stats: don't use gmtime_r on Windows (moneromooo-monero)
2018-12-04epee: fix network packet header field endiannessmoneromooo-monero5-57/+113
2018-12-04move int-util.h to epeemoneromooo-monero1-0/+258
2018-12-04Merge pull request #4854Riccardo Spagni4-18/+4
bd98e99c Removed a lot of unnecessary includes (Martijn Otto)
2018-12-04Merge pull request #4853Riccardo Spagni1-1/+1
2b3595d0 various: do not propagate exception through dtor (moneromooo-monero)
2018-12-04Merge pull request #4850Riccardo Spagni1-15/+35
b36353e2 unit_tests: add some hex parsing test for non hex input (xiphon) 6671110c unit_tests: add a test for parse_hexstr_to_binbuff (moneromooo-monero) f6187cd8 epee: speed up parse_hexstr_to_binbuff a little (Howard Chu)
2018-12-04Changed RECIEVED to RECEIVED in log messages.Norman Moeschter2-2/+2
2018-11-26rpc: speedup get_outs.binmoneromooo-monero1-0/+2
2018-11-26Merge pull request #4819Riccardo Spagni2-6/+10
7c298f5d No longer use a list for registering self references in the abstract tcp server (Martijn Otto)
2018-11-21blockchain_stats: don't use gmtime_r on Windowsmoneromooo-monero1-0/+9
In some cases, it doesn't like it (I don't know the details). Factor into a new epee function
2018-11-16Merge pull request #4807Riccardo Spagni1-1/+6
b620443b epee: log HTTP/RPC calls at info level (moneromooo-monero)
2018-11-16Merge pull request #4775Riccardo Spagni1-11/+41
741e4a11 epee: speed up json number parsing (moneromooo-monero)
2018-11-15epee: speed up parse_hexstr_to_binbuff a littleHoward Chu1-15/+35
2018-11-15Removed a lot of unnecessary includesMartijn Otto4-18/+4
2018-11-15various: do not propagate exception through dtormoneromooo-monero1-1/+1
Coverity 189689, 189690, 189692, 189695
2018-11-07No longer use a list for registering self references in the abstract tcpMartijn Otto2-6/+10
server Updated assert message Use a local variable that won't destruct at the end of the if-branch Updated comment
2018-11-06Merge pull request #4740Riccardo Spagni1-0/+2
f067bb0c tests: fix MSYS2 warning 'MONERO_DEFAULT_LOG_CATEGORY redefined' (xiphon)
2018-11-06Merge pull request #4709Riccardo Spagni1-2/+4
07c62809 epee: some minor speedup in parsing (moneromooo-monero)
2018-11-06Merge pull request #3970Riccardo Spagni1-2/+4
3381b651 abstract_tcp_server2: fix busy calling of idle IO service (moneromooo-monero)
2018-11-05epee: log HTTP/RPC calls at info levelmoneromooo-monero1-1/+6
It's useful info to have when investigating logs
2018-11-01epee: speed up json number parsingmoneromooo-monero1-11/+41
2018-10-27tests: fix MSYS2 warning 'MONERO_DEFAULT_LOG_CATEGORY redefined'xiphon1-0/+2
2018-10-26Merge pull request #4573Riccardo Spagni1-0/+1
8f3c7937 readline_buffer: fix "cursor in prompt" bug (moneromooo-monero)
2018-10-24epee: some minor speedup in parsingmoneromooo-monero1-2/+4
2018-10-20console_handler: add a global log when exiting via EOFmoneromooo-monero1-1/+4
It's a common confusion point for users which run monerod without stdin and with --detach
2018-10-15Merge pull request #4489Riccardo Spagni4-10/+11
00901e9c epee: initialize a few data members where it seems to be appropriate (moneromooo-monero) 144a6c32 abstract_tcp_server2: move m_period to subclass (moneromooo-monero) 758d7684 connection_basic: remove unused floating time start time (moneromooo-monero) e5108a29 Catch more exceptions in dtors (moneromooo-monero)
2018-10-12readline_buffer: fix "cursor in prompt" bugmoneromooo-monero1-0/+1
It happens when readline displays a prompt just before switching to a shorter one
2018-10-12Remove epee header dependency on cryptonote_coremoneromooo-monero2-6/+5
2018-10-02epee: initialize a few data members where it seems to be appropriatemoneromooo-monero1-1/+3
2018-10-02abstract_tcp_server2: move m_period to subclassmoneromooo-monero1-5/+6
This is where it is actually used, and initialized
2018-10-02connection_basic: remove unused floating time start timemoneromooo-monero1-3/+0
2018-10-02Catch more exceptions in dtorsmoneromooo-monero1-1/+2
Misc coverity reports
2018-09-29Merge pull request #4459Riccardo Spagni3-2/+10
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-25epee: fix stack overflow on crafted inputmoneromooo-monero1-5/+8
2018-09-25epee: fix invalid memory write reading an array entrymoneromooo-monero1-0/+8
Reported by Lilith Wyatt at Talos. Since this is not needed in normal operation, I just let this error out.
2018-09-21Merge pull request #4209Riccardo Spagni1-6/+40
26a42fe5 Added features to epee::span<T> : - Support for classes - Added `remove_prefix` function - Added `to_mut_span` and `as_mut_byte_span` (Lee Clagett)
2018-09-18Merge pull request #4306Riccardo Spagni2-1/+19
56b50faa wallet: use wipeable_string in more places where a secret is used (moneromooo-monero) 07ec748c wipeable_string: add hex_to_pod function (moneromooo-monero)
2018-09-18Merge pull request #3430Riccardo Spagni1-1/+1
42397359 Fixup 32bit arm build (TheCharlatan) a06d2581 Fix Windows build (TheCharlatan) ecaf5b3f Add libsodium to the packages, the arm build was complaining about it. (TheCharlatan) cbbf4d24 Adapt translations to upstream changes (TheCharlatan) db571546 Updated pcsc url (TheCharlatan) f0ba19fd Add lrelease to the depends (TheCharlatan) cfb30462 Add Miniupnp submodule (TheCharlatan) 5f7da005 Unbound is now a submodule. Adapt depends for this. (TheCharlatan) d6b9bdd3 Update readmes to reflect the usage of depends (TheCharlatan) 56b6e41e Add support for apple and arm building (TheCharlatan) 29311fd1 Disable stack unwinding for mingw32 depends build. (TheCharlatan) 8db3d573 Modify depends for monero's dependencies (TheCharlatan) 0806a23a Initial depends addition (TheCharlatan)
2018-09-14Merge pull request #4307Riccardo Spagni1-4/+20
4469b0c4 abstract_tcp_server2: fix binding to the wrong IP (moneromooo-monero) 8eab6147 epee: use the socket::bind variant which does not throw (moneromooo-monero)
2018-09-12wipeable_string: add hex_to_pod functionmoneromooo-monero2-1/+19
2018-09-10Modify depends for monero's dependenciesTheCharlatan1-1/+1
Add readline, ldns, graphviz, unbound to depends packages Add a cmake toolchain file to depends that is uniquely created for every build and placed in triple/share/toolchain.cmake This file is then passed to cmake with -DCMAKE_TOOLCHAIN_FILE=/path/to/triple/share/toolchain.cmake Add the boost locale package to depends In the depends cmake toolchain file, a DEPENDS flag is added to exclude, or change cmake checks done that are required for depends Link miniupnpc and unwind from depends and not external Add libiconv and icu4c to depends, required for mingw32 builds. Headers (winsock) need to be lower case in order to compile on unix systems. This should not affect building on windows.
2018-09-09abstract_tcp_server2: fix binding to the wrong IPmoneromooo-monero1-4/+4
2018-09-04Merge pull request #4270luigi11112-1/+14
29dea03 epee: resize vectors where possible in serialization (moneromooo-monero) 76affd9 epee: some speedup in parsing (moneromooo-monero) dc6c069 db_lmdb: speedup the get_output_distribution common case (moneromooo-monero) 76ac5a8 wallet2: ask for a binary output distribution, for speed (moneromooo-monero)
2018-08-27epee: use the socket::bind variant which does not throwmoneromooo-monero1-2/+18
When this throws in a loop, stack trace generation can take a significant amount of CPU
2018-08-19epee: some speedup in parsingmoneromooo-monero1-1/+8
2018-08-17epee: resize vectors where possible in serializationmoneromooo-monero1-0/+6
to avoid unnecessary repeated reallocation
2018-08-16common: add a class to safely wrap mlock/munlockmoneromooo-monero2-0/+94
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-monero1-0/+9
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-1/+77
2018-08-15Merge pull request #4177luigi11111-0/+1
e7c0fcd epee: set jsonrpc to '2.0' in parse error return data (moneromooo-monero)
2018-08-15Merge pull request #4130luigi11112-1/+9
979105b abstract_tcp_server2: fix race on shutdown (moneromooo-monero)
2018-08-15Merge pull request #4090luigi11111-5/+13
42f3b7c http_protocol_handler: catch invalid numbers when parsing (moneromooo-monero) 0a4a7da http_protocol_handler: fix HTTP/x.y parsing (moneromooo-monero)
2018-08-03Added features to epee::span<T> :Lee Clagett1-6/+40
- Support for classes - Added `remove_prefix` function - Added `to_mut_span` and `as_mut_byte_span`
2018-07-25epee: set jsonrpc to "2.0" in parse error return datamoneromooo-monero1-0/+1
2018-07-15abstract_tcp_server2: fix race on shutdownmoneromooo-monero2-1/+9
2018-07-03http_protocol_handler: fix HTTP/x.y parsingmoneromooo-monero1-1/+1
It was accepting any character for the dot (yeah, massive big I know)
2018-07-03http_protocol_handler: catch invalid numbers when parsingmoneromooo-monero1-4/+12
2018-07-03Merge pull request #4080Riccardo Spagni1-2/+2
dead780f abstract_tcp_server2: fix use after free (moneromooo-monero)
2018-07-03Merge pull request #3997Riccardo Spagni1-4/+19
1a526ed5 abstract_tcp_server2: restart async accept on error (moneromooo-monero)
2018-06-29abstract_tcp_server2: fix use after freemoneromooo-monero1-2/+2
2018-06-28epee.string_tools: add conversion between UTF-8 and UTF-16stoffu2-15/+45
2018-06-25Merge pull request #3971luigi11111-1/+1
4ecf714 epee: fix include for ofstream (moneromooo-monero)
2018-06-25Merge pull request #3962luigi11114-19/+75
55c7fb8 epee: adaptive connection timeout system (moneromooo-monero)
2018-06-20Merge pull request #3902luigi11111-1/+1
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)