aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/src (follow)
AgeCommit message (Collapse)AuthorFilesLines
2022-04-06Merge pull request #8228luigi11111-38/+0
1ce9e9c Remove dead code from parserse_base_utils and fix unit tests (Jeffrey)
2022-03-30Remove dead code from parserse_base_utils and fix unit testsJeffrey1-38/+0
* Remove `match_string()`, `match_number()`, and `match_word()` * Remove `match_word_with_extrasymb()` and `match_word_til_equal_mark()` * Adapt unit test for `match_number()` to `match_number2()` * Adapt unit test for `match_string()` to `match_string2()` Note: the unit tests were testing for the old version of the functions, and the interfaces for these functions changed slightly, so I had to also edit the tests. As of writing, this PR has no merge conflicts with #8211 Additional changes during review: * Explicitly set up is_[float/signed]_val to be changed before each call * Structify the tests and fix uninitialized variables
2022-03-04Copyright: Update to 2022mj-xmr15-15/+19
2021-11-01Merge pull request #8016luigi11111-14/+9
b0ec9f8 epee: avoid ADL selecting C++14 std::quoted (selsta)
2021-10-22epee: add missing headerselsta2-0/+2
2021-10-20epee: avoid ADL selecting C++14 std::quotedselsta1-14/+9
2021-09-16cmake: set required C/C++ standard to 11selsta1-3/+1
Co-authored-by: Jason Rhinelander <jason@imaginary.ca>
2021-08-26Merge pull request #7850luigi11113-7/+7
0ac9a04 epee: tidying post-incrementation -> pre-incrementation (mj-xmr)
2021-08-19epee: link with Boost_SYSTEM_LIBRARYselsta1-0/+2
2021-08-11epee: tidying post-incrementation -> pre-incrementationmj-xmr3-7/+7
2021-07-27Make SSL key/cert storage backward-compatibleNathan Dorfman1-1/+2
This is required to build on OpenBSD (which uses LibreSSL). It also allows building against versions of OpenSSL before 1.0.2.
2021-06-11Compil time: move epee storages/parserse_base_utils.h to parserse_base_utils.cppmj-xmr2-1/+283
2021-06-10Merge pull request #7416luigi11111-3/+4
b4fe7c2 epee linkage dynamic; move monero_add_library to main CMakeLists.txt (mj-xmr)
2021-06-01Merge pull request #7712luigi11111-1/+4
d772f13 epee: include public openssl header in cmake (selsta)
2021-05-12Merge pull request #7688luigi11111-2/+2
451b5a5 clang: fix -Wrange-loop-analysis warnings (selsta)
2021-05-12Merge pull request #7665luigi11111-5/+2
15e6275 CMake: new macro - finding all headers (extract from epee) (mj-xmr)
2021-05-09epee: include public openssl header in cmakeselsta1-1/+4
2021-04-27clang: fix -Wrange-loop-analysis warningsselsta1-2/+2
2021-04-24epee linkage dynamic; move monero_add_library to main CMakeLists.txtmj-xmr1-3/+4
2021-04-22Merge pull request #7669luigi11112-36/+46
679d055 Remove payload copy in all outgoing p2p messages (Lee Clagett)
2021-04-16Split epee/string_tools.h and encapsulate boost::lexical_castmj-xmr7-0/+569
2021-04-16Revert "Merge pull request #7136"luigi11112-46/+36
This reverts commit 63c7ca07fba2f063c760f786a986fb3e02fb040e, reversing changes made to 2218e23e84a89e9a1e4c0be5d50f891ab836754f.
2021-04-16Merge pull request #7136luigi11112-36/+46
23aae55 Remove payload copy in all outgoing p2p messages (Lee Clagett)
2021-04-16CMake: new macro - finding all headers (extract from epee)mj-xmr1-5/+2
2021-03-28Reduce compilation time of epee/portable_storage_template_helper.hmj-xmr2-1/+232
2021-03-20Merge pull request #7402luigi11111-1/+10
240d382 Epee: add headers to project files (via glob), to be able to search for them easily. (mj-xmr)
2021-03-20Merge pull request #7366luigi11111-0/+47
9867a91 Store RPC SSL key/cert for consistent authentication between runs (Lee Clagett)
2021-03-20Merge pull request #7005luigi11111-4/+20
249eae5 Allow byte_stream->byte_slice conversion to shrink unused buffer space (Lee Clagett)
2021-02-25Epee: add headers to project files (via glob), to be able to search for them ↵mj-xmr1-1/+10
easily. Use case: IDEs
2021-02-13Store RPC SSL key/cert for consistent authentication between runsLee Clagett1-0/+47
2021-02-06Reduce compilation time of epee/portable_storage.hmj-xmr3-1/+265
2021-01-19Remove payload copy in all outgoing p2p messagesLee Clagett2-36/+46
2021-01-16Remove payload copy in all outgoing p2p messagesLee Clagett2-36/+46
2021-01-15Merge pull request #7137luigi11111-2/+16
f2ad539 readline_buffer: Avoid consecutive duplicates in the history (codesoap)
2020-12-28ssl: buffered handshake detectionanon1-1/+2
2020-12-13readline_buffer: Avoid consecutive duplicates in the historycodesoap1-2/+16
2020-12-10Merge pull request #7009Alexander Blair2-1/+30
7414e2bac Change epee binary output from std::stringstream to byte_stream (Lee Clagett)
2020-12-10Merge pull request #7003Alexander Blair1-4/+7
08eb0949f Change to more efficient allocation strategy in byte_stream (Lee Clagett)
2020-12-06protocol: drop peers that don't reply to queriesmoneromooo1-8/+6
2020-12-04keep only the last seen node on a given host in the white listmoneromooo1-0/+33
2020-11-07epee: readline_buffer - fix thread safety, fix sync() after stop()xiphon1-1/+9
2020-10-13Change to more efficient allocation strategy in byte_streamLee Clagett1-4/+7
2020-10-13Allow byte_stream->byte_slice conversion to shrink unused buffer spaceLee Clagett1-4/+20
2020-10-10Change epee binary output from std::stringstream to byte_streamLee Clagett2-1/+30
2020-07-20wallet2_api: implement runtime proxy configurationxiphon1-0/+5
2020-07-19Merge pull request #6565Alexander Blair1-1/+1
72cdfa4a2 fix a few typos in error messages (moneromooo-monero)
2020-07-19Merge pull request #6512Alexander Blair9-9/+9
5ef0607da Update copyright year to 2020 (SomaticFanatic)
2020-07-08Merge pull request #6584luigi11111-1/+1
78d435a rpc: don't display invalid json errors on default log level (moneromooo-monero)
2020-07-08Merge pull request #6559luigi11111-1/+4
15538f7 ByteSlice: Fix persisting ptr to std::moved SSO buffer (Doy-lee)
2020-05-23rpc: don't display invalid json errors on default log levelmoneromooo-monero1-1/+1
It's not something the user needs to know, and will display attacker controlled data
2020-05-20ByteSlice: Fix persisting ptr to std::moved SSO bufferDoyle1-1/+4
The Bug: 1. Construct `byte_slice.portion_` with `epee::span(buffer)` which copies a pointer to the SSO buffer to `byte_slice.portion_` 2. It constructs `byte_slice.storage_` with `std::move(buffer)` (normally this swap pointers, but SSO means a memcpy and clear on the original SSO buffer) 3. `slice.data()` returns a pointer from `slice.portion_` that points to the original SSO cleared buffer, `slice.storage_` has the actual string.
2020-05-19fix a few typos in error messagesmoneromooo-monero1-1/+1
Reported by adrelanos
2020-05-12Fixed bugs for take_slice and byte_stream->byte_sliceLee Clagett1-9/+17
2020-05-06Update copyright year to 2020SomaticFanatic9-9/+9
Update copyright year to 2020
2020-04-11Add byte_stream for zero-copy serialization, and add support in ZMQ-JSON.Lee Clagett3-3/+137
2020-04-03Use byte_slice for sending zmq messages - removes data copy within zmqLee Clagett1-4/+15
2020-04-21Merge pull request #6359luigi11111-3/+3
f9441c5 Fixed string_ref usage bug in epee::from_hex::vector (vtnerd)
2020-04-15Allow wallet2.h to run in WebAssemblywoodser2-1/+143
- Add abstract_http_client.h which http_client.h extends. - Replace simple_http_client with abstract_http_client in wallet2, message_store, message_transporter, and node_rpc_proxy. - Import and export wallet data in wallet2. - Use #if defined __EMSCRIPTEN__ directives to skip incompatible code.
2020-04-04Merge pull request #6387luigi11111-2/+2
0dbdba8 epee: avoid spamming 'Generating SSL certificate' in the logs (xiphon)
2020-04-04Merge pull request #6370luigi11111-1/+3
3031deb Bump downloaded boost version to 1.72 (omartijn) 6079042 Use boost::asio::ssl::context::sslv23 for backwards compatibility (omartijn)
2020-04-04Merge pull request #6351luigi11111-2/+39
81c5943 Remove temporary std::string creation in some hex->bin calls (vtnerd) 5fcc23a Move hex->bin conversion to monero copyright files and with less includes (vtnerd) 3387f0e Reduce template bloat in hex->bin for ZMQ json (vtnerd)
2020-04-04Merge pull request #6335luigi11111-3/+4
0078ce7 wipeable_string: split - treat CR, LF and Tabs as separators (xiphon)
2020-03-30Fixed string_ref usage bug in epee::from_hex::vectorLee Clagett1-3/+3
2020-03-13epee: avoid spamming 'Generating SSL certificate' in the logsxiphon1-2/+2
2020-03-11Use boost::asio::ssl::context::sslv23 for backwards compatibilityMartijn Otto1-1/+3
All the insecure protocols that this enables are then disabled, so they cannot be actually used. The end-result is the same.
2020-03-09Move hex->bin conversion to monero copyright files and with less includesLee Clagett1-2/+39
2020-02-28Merge pull request #6205Alexander Blair1-1/+1
021cf733 ssl: server-side: allow multiple version of TLS (Bertrand Jacquin)
2020-02-12wipeable_string: split - treat CR, LF and Tabs as separatorsxiphon1-3/+4
2020-02-06Merge pull request #6184Alexander Blair1-0/+42
2d1afceb net_ssl: load default certificates in CA mode on Windows (moneromooo-monero)
2019-12-03ssl: server-side: allow multiple version of TLSBertrand Jacquin1-1/+1
boost::asio::ssl::context is created using specifically TLSv1.2, which blocks the ability to use superior version of TLS like TLSv1.3. Filtering is also made specially later in the code to remove unsafe version for TLS such SSLv2, SSLv3 etc.. This change is removing double filtering to allow TLSv1.2 and above to be used. testssl.sh 3.0rc5 now reports the following (please note monerod was built with USE_EXTRA_EC_CERT): $ ./testssl.sh --openssl=/usr/bin/openssl \ --each-cipher --cipher-per-proto \ --server-defaults --server-preference \ --vulnerable --heartbleed --ccs --ticketbleed \ --robot --renegotiation --compression --breach \ --poodle --tls-fallback --sweet32 --beast --lucky13 \ --freak --logjam --drown --pfs --rc4 --full \ --wide --hints 127.0.0.1:38081 Using "OpenSSL 1.1.1d 10 Sep 2019" [~80 ciphers] on ip-10-97-15-6:/usr/bin/openssl (built: "Dec 3 21:14:51 2019", platform: "linux-x86_64") Start 2019-12-03 21:51:25 -->> 127.0.0.1:38081 (127.0.0.1) <<-- rDNS (127.0.0.1): -- Service detected: HTTP Testing protocols via sockets except NPN+ALPN SSLv2 not offered (OK) SSLv3 not offered (OK) TLS 1 not offered TLS 1.1 not offered TLS 1.2 offered (OK) TLS 1.3 offered (OK): final NPN/SPDY not offered ALPN/HTTP2 not offered Testing for server implementation bugs No bugs found. Testing cipher categories NULL ciphers (no encryption) not offered (OK) Anonymous NULL Ciphers (no authentication) not offered (OK) Export ciphers (w/o ADH+NULL) not offered (OK) LOW: 64 Bit + DES, RC[2,4] (w/o export) not offered (OK) Triple DES Ciphers / IDEA not offered (OK) Average: SEED + 128+256 Bit CBC ciphers not offered Strong encryption (AEAD ciphers) offered (OK) Testing robust (perfect) forward secrecy, (P)FS -- omitting Null Authentication/Encryption, 3DES, RC4 PFS is offered (OK), ciphers follow (client/browser support is important here) Hexcode Cipher Suite Name (OpenSSL) KeyExch. Encryption Bits Cipher Suite Name (IANA/RFC) ----------------------------------------------------------------------------------------------------------------------------- x1302 TLS_AES_256_GCM_SHA384 ECDH 253 AESGCM 256 TLS_AES_256_GCM_SHA384 x1303 TLS_CHACHA20_POLY1305_SHA256 ECDH 253 ChaCha20 256 TLS_CHACHA20_POLY1305_SHA256 xc030 ECDHE-RSA-AES256-GCM-SHA384 ECDH 253 AESGCM 256 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 xc02c ECDHE-ECDSA-AES256-GCM-SHA384 ECDH 253 AESGCM 256 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 xcca9 ECDHE-ECDSA-CHACHA20-POLY1305 ECDH 253 ChaCha20 256 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 xcca8 ECDHE-RSA-CHACHA20-POLY1305 ECDH 253 ChaCha20 256 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 x1301 TLS_AES_128_GCM_SHA256 ECDH 253 AESGCM 128 TLS_AES_128_GCM_SHA256 xc02f ECDHE-RSA-AES128-GCM-SHA256 ECDH 253 AESGCM 128 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 xc02b ECDHE-ECDSA-AES128-GCM-SHA256 ECDH 253 AESGCM 128 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 Elliptic curves offered: prime256v1 secp384r1 secp521r1 X25519 X448 Testing server preferences Has server cipher order? yes (OK) Negotiated protocol TLSv1.3 Negotiated cipher TLS_AES_256_GCM_SHA384, 253 bit ECDH (X25519) Cipher order TLSv1.2: ECDHE-ECDSA-CHACHA20-POLY1305 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-CHACHA20-POLY1305 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.3: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 Testing server defaults (Server Hello) TLS extensions (standard) "renegotiation info/#65281" "EC point formats/#11" "supported versions/#43" "key share/#51" "max fragment length/#1" "extended master secret/#23" Session Ticket RFC 5077 hint no -- no lifetime advertised SSL Session ID support yes Session Resumption Tickets no, ID: no TLS clock skew Random values, no fingerprinting possible Server Certificate #1 (in response to request w/o SNI) Signature Algorithm SHA256 with RSA Server key size RSA 4096 bits Server key usage -- Server extended key usage -- Serial / Fingerprints 01 / SHA1 132E42981812F5575FA0AE64922B18A81B38C03F SHA256 EBA3CC4AA09DEF26706E64A70DB4BC8D723533BB67EAE12B503A845019FB61DC Common Name (CN) (no CN field in subject) subjectAltName (SAN) missing (NOT ok) -- Browsers are complaining Issuer Trust (hostname) certificate does not match supplied URI Chain of trust NOT ok (self signed) EV cert (experimental) no "eTLS" (visibility info) not present Certificate Validity (UTC) 181 >= 60 days (2019-12-03 21:51 --> 2020-06-02 21:51) # of certificates provided 1 Certificate Revocation List -- OCSP URI -- NOT ok -- neither CRL nor OCSP URI provided OCSP stapling not offered OCSP must staple extension -- DNS CAA RR (experimental) not offered Certificate Transparency -- Server Certificate #2 (in response to request w/o SNI) Signature Algorithm ECDSA with SHA256 Server key size EC 256 bits Server key usage -- Server extended key usage -- Serial / Fingerprints 01 / SHA1 E17B765DD8124525B1407E827B89A31FB167647D SHA256 AFB7F44B1C33831F521357E5AEEB813044CB02532143E92D35650A3FF792A7C3 Common Name (CN) (no CN field in subject) subjectAltName (SAN) missing (NOT ok) -- Browsers are complaining Issuer Trust (hostname) certificate does not match supplied URI Chain of trust NOT ok (self signed) EV cert (experimental) no "eTLS" (visibility info) not present Certificate Validity (UTC) 181 >= 60 days (2019-12-03 21:51 --> 2020-06-02 21:51) # of certificates provided 1 Certificate Revocation List -- OCSP URI -- NOT ok -- neither CRL nor OCSP URI provided OCSP stapling not offered OCSP must staple extension -- DNS CAA RR (experimental) not offered Certificate Transparency -- Testing HTTP header response @ "/" HTTP Status Code 404 Not found (Hint: supply a path which doesn't give a "404 Not found") HTTP clock skew Got no HTTP time, maybe try different URL? Strict Transport Security not offered Public Key Pinning -- Server banner Epee-based Application banner -- Cookie(s) (none issued at "/") -- maybe better try target URL of 30x Security headers -- Reverse Proxy banner -- Testing vulnerabilities Heartbleed (CVE-2014-0160) not vulnerable (OK), no heartbeat extension CCS (CVE-2014-0224) not vulnerable (OK) Ticketbleed (CVE-2016-9244), experiment. not vulnerable (OK), no session ticket extension ROBOT Server does not support any cipher suites that use RSA key transport Secure Renegotiation (CVE-2009-3555) not vulnerable (OK) Secure Client-Initiated Renegotiation not vulnerable (OK) CRIME, TLS (CVE-2012-4929) not vulnerable (OK) BREACH (CVE-2013-3587) no HTTP compression (OK) - only supplied "/" tested POODLE, SSL (CVE-2014-3566) not vulnerable (OK) TLS_FALLBACK_SCSV (RFC 7507) No fallback possible, no protocol below TLS 1.2 offered (OK) SWEET32 (CVE-2016-2183, CVE-2016-6329) not vulnerable (OK) FREAK (CVE-2015-0204) not vulnerable (OK) DROWN (CVE-2016-0800, CVE-2016-0703) not vulnerable on this host and port (OK) make sure you don't use this certificate elsewhere with SSLv2 enabled services https://censys.io/ipv4?q=EBA3CC4AA09DEF26706E64A70DB4BC8D723533BB67EAE12B503A845019FB61DC could help you to find out LOGJAM (CVE-2015-4000), experimental not vulnerable (OK): no DH EXPORT ciphers, no DH key detected with <= TLS 1.2 BEAST (CVE-2011-3389) no SSL3 or TLS1 (OK) LUCKY13 (CVE-2013-0169), experimental not vulnerable (OK) RC4 (CVE-2013-2566, CVE-2015-2808) no RC4 ciphers detected (OK) Testing ciphers per protocol via OpenSSL plus sockets against the server, ordered by encryption strength Hexcode Cipher Suite Name (OpenSSL) KeyExch. Encryption Bits Cipher Suite Name (IANA/RFC) ----------------------------------------------------------------------------------------------------------------------------- SSLv2 SSLv3 TLS 1 TLS 1.1 TLS 1.2 xc030 ECDHE-RSA-AES256-GCM-SHA384 ECDH 253 AESGCM 256 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 xc02c ECDHE-ECDSA-AES256-GCM-SHA384 ECDH 253 AESGCM 256 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 xcca9 ECDHE-ECDSA-CHACHA20-POLY1305 ECDH 253 ChaCha20 256 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 xcca8 ECDHE-RSA-CHACHA20-POLY1305 ECDH 253 ChaCha20 256 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 xc02f ECDHE-RSA-AES128-GCM-SHA256 ECDH 253 AESGCM 128 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 xc02b ECDHE-ECDSA-AES128-GCM-SHA256 ECDH 253 AESGCM 128 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS 1.3 x1302 TLS_AES_256_GCM_SHA384 ECDH 253 AESGCM 256 TLS_AES_256_GCM_SHA384 x1303 TLS_CHACHA20_POLY1305_SHA256 ECDH 253 ChaCha20 256 TLS_CHACHA20_POLY1305_SHA256 x1301 TLS_AES_128_GCM_SHA256 ECDH 253 AESGCM 128 TLS_AES_128_GCM_SHA256 Running client simulations (HTTP) via sockets Browser Protocol Cipher Suite Name (OpenSSL) Forward Secrecy ------------------------------------------------------------------------------------------------ Android 4.2.2 No connection Android 4.4.2 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256 bit ECDH (P-256) Android 5.0.0 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 256 bit ECDH (P-256) Android 6.0 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 256 bit ECDH (P-256) Android 7.0 TLSv1.2 ECDHE-RSA-CHACHA20-POLY1305 253 bit ECDH (X25519) Android 8.1 (native) No connection Android 9.0 (native) TLSv1.3 TLS_AES_256_GCM_SHA384 253 bit ECDH (X25519) Chrome 65 Win 7 TLSv1.2 ECDHE-RSA-CHACHA20-POLY1305 253 bit ECDH (X25519) Chrome 74 (Win 10) No connection Firefox 62 Win 7 TLSv1.2 ECDHE-RSA-CHACHA20-POLY1305 253 bit ECDH (X25519) Firefox 66 (Win 8.1/10) TLSv1.3 TLS_AES_256_GCM_SHA384 253 bit ECDH (X25519) IE 6 XP No connection IE 7 Vista No connection IE 8 Win 7 No connection IE 8 XP No connection IE 11 Win 7 No connection IE 11 Win 8.1 No connection IE 11 Win Phone 8.1 No connection IE 11 Win 10 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256 bit ECDH (P-256) Edge 15 Win 10 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 253 bit ECDH (X25519) Edge 17 (Win 10) TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 253 bit ECDH (X25519) Opera 60 (Win 10) No connection Safari 9 iOS 9 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256 bit ECDH (P-256) Safari 9 OS X 10.11 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256 bit ECDH (P-256) Safari 10 OS X 10.12 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256 bit ECDH (P-256) Apple ATS 9 iOS 9 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256 bit ECDH (P-256) Tor 17.0.9 Win 7 No connection Java 6u45 No connection Java 7u25 No connection Java 8u161 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384 256 bit ECDH (P-256) Java 9.0.4 TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384 256 bit ECDH (P-256) OpenSSL 1.0.1l TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384 256 bit ECDH (P-256) OpenSSL 1.0.2e TLSv1.2 ECDHE-ECDSA-AES256-GCM-SHA384 256 bit ECDH (P-256) OpenSSL 1.1.0j (Debian) TLSv1.2 ECDHE-RSA-CHACHA20-POLY1305 253 bit ECDH (X25519) OpenSSL 1.1.1b (Debian) TLSv1.3 TLS_AES_256_GCM_SHA384 253 bit ECDH (X25519) Thunderbird (60.6) TLSv1.3 TLS_AES_256_GCM_SHA384 253 bit ECDH (X25519)
2019-11-26net_ssl: load default certificates in CA mode on Windowsmoneromooo-monero1-0/+42
Because it always does things wonkily doens't it
2019-11-25epee: reorder a couple init list fields to match declarationmoneromooo-monero1-1/+1
This is a bug waiting to happen
2019-10-25daemon, wallet: new pay for RPC use systemmoneromooo-monero1-1/+1
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-22Merge pull request #5996luigi11111-2/+10
23ba69e epee: fix SSL server handshake, run_one() can block, use poll_one() (xiphon)
2019-10-22Merge pull request #5966luigi11112-1/+50
be82c40 Support median block size > 4 GB (moneromooo-monero)
2019-10-21Support median block size > 4 GBmoneromooo-monero2-1/+50
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-2/+10
2019-10-08Merge pull request #5936luigi11111-2/+2
24473d7 build: fix MinGW GUI dependencies build (xiphon)
2019-10-08Merge pull request #5918luigi11111-3/+24
4371791 epee: implement handshake timeout for SSL connections (xiphon)
2019-09-30Merge pull request #5893luigi11111-0/+2
Coverity fixes [3a81639, 1bd962d, 2825f07, d099658, d46f701, cd57a10] (anonimal)
2019-09-26build: fix MinGW GUI dependencies buildxiphon1-2/+2
2019-09-24epee: misc_log_ex.h can now be used in C codemoneromooo-monero1-11/+25
use mfatal/merror/mwarning/minfo/mdebug/mtrace
2019-09-24Merge pull request #5892luigi11111-2/+2
ab2819a depends: attempt to fix readline (iDunk5400)
2019-09-17epee: implement handshake timeout for SSL connectionsxiphon1-3/+24
2019-09-16Properly format multiline logsmoneromooo-monero1-1/+37
As a side effect, colouring on Windows should now work regardless of version
2019-09-07depends: attempt to fix readlineiDunk54001-2/+2
Make readline actually compile, and make ncurses use existing terminfo data (if available).
2019-09-06epee: connection_basic: resolve CID 203916 (UNINIT_CTOR)anonimal1-0/+1
2019-09-06epee: connection_basic: resolve CID 203920 (UNINIT_CTOR)anonimal1-0/+1
2019-09-04Merge pull request #5536luigi11111-0/+10
1a367d6 simplewallet: lock console on inactivity (moneromooo-monero)
2019-08-28simplewallet: lock console on inactivitymoneromooo-monero1-0/+10
2019-07-31Add IPv6 supportThomas Winget2-3/+45
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 #5530luigi11111-3/+0
6abaaaa remove obsolete save_graph skeleton code (moneromooo-monero)
2019-07-17Added support for "noise" over I1P/Tor to mask Tx transmission.Lee Clagett3-3/+131
2019-07-16Add ref-counted buffer byte_slice. Currently used for sending TCP data.Lee Clagett2-2/+211
2019-07-16allow blocking whole subnetsmoneromooo-monero1-0/+18
2019-06-14ensure no NULL is passed to memcpymoneromooo-monero2-6/+14
NULL is valid when size is 0, but memcpy uses nonnull attributes, so let's not poke the bear
2019-05-14Merge pull request #5527luigi11111-2/+2
9a7a453 net_ssl: free certs after setting them up (moneromooo-monero)
2019-05-14Merge pull request #5519luigi11111-1/+1
b8b957d cmake: fix incorrect hint for OPENSSL_ROOT_DIR (moneromooo-monero) 367bb80 mlog: default to not showing SSL errors (moneromooo-monero)
2019-05-10remove obsolete save_graph skeleton codemoneromooo-monero1-3/+0
2019-05-10net_ssl: free certs after setting them upmoneromooo-monero1-2/+2
2019-05-07net_ssl: SSL config tweaks for compatibility and securitymoneromooo-monero1-4/+125
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-06mlog: default to not showing SSL errorsmoneromooo-monero1-1/+1
2019-04-26change SSL certificate fingerprint whitelisting from SHA1 to SHA-256moneromooo-monero1-1/+1
SHA1 is too close to bruteforceable
2019-04-21serialization: set default log categorymoneromooo-monero1-1/+1
2019-04-07Enabling daemon-rpc SSL now requires non-system CA verificationLee Clagett1-0/+19
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-0/+3
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-07Only check top-level certificate against fingerprint list.Lee Clagett1-2/+4
This allows "chain" certificates to be used with the fingerprint whitelist option. A user can get a system-ca signature as backup while clients explicitly whitelist the server certificate. The user specified CA can also be combined with fingerprint whitelisting.
2019-04-07Call `use_certificate_chain_file` instead of `use_certificate_file`Lee Clagett1-1/+1
The former has the same behavior with single self signed certificates while allowing the server to have separate short-term authentication keys with long-term authorization keys.
2019-04-07Perform RFC 2818 hostname verification in client SSL handshakesLee Clagett1-3/+12
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-11/+10
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-07Add `verify_fail_if_no_cert` option for proper client authenticationLee Clagett1-1/+1
Using `verify_peer` on server side requests a certificate from the client. If no certificate is provided, the server silently accepts the connection and rejects if the client sends an unexpected certificate. Adding `verify_fail_if_no_cert` has no affect on client and for server requires that the peer sends a certificate or fails the handshake. This is the desired behavior when the user specifies a fingerprint or CA file.
2019-04-07Pass SSL arguments via one class and use shared_ptr instead of referenceLee Clagett2-56/+77
2019-04-06Do not require client certificate unless server has some whitelisted.Lee Clagett1-12/+27
Currently a client must provide a certificate, even if the server is configured to allow all certificates. This drops that requirement from the client - unless the server is configured to use a CA file or fingerprint(s) for verification - which is the standard behavior for SSL servers. The "system-wide" CA is not being used as a "fallback" to verify clients before or after this patch.
2019-04-06Change SSL certificate file list to OpenSSL builtin load_verify_locationLee Clagett1-53/+45
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 #5358Riccardo Spagni1-7/+40
dffdccdc No longer use deprecated RSA_generate_key in favor of RSA_generate_key_ex (Martijn Otto)
2019-04-01Merge pull request #5327Riccardo Spagni1-0/+10
c23ea796 New interactive daemon command 'print_net_stats': Global traffic stats (rbrunner7)
2019-03-27No longer use deprecated RSA_generate_key in favor ofMartijn Otto1-7/+40
RSA_generate_key_ex
2019-03-25Added socks proxy (tor/i2pd/kovri) support to walletLee Clagett2-1/+56
2019-03-24New interactive daemon command 'print_net_stats': Global traffic statsrbrunner71-0/+10
2019-03-21Merge pull request #5259Riccardo Spagni1-1/+0
9141a0a1 connection_basic: remove debug exception ^_^ (moneromooo-monero)
2019-03-21epee: fix build with boost 1.70.0moneromooo-monero1-2/+8
get_io_service was deprecated, and got removed
2019-03-17Merge pull request #5061Riccardo Spagni8-8/+8
1f2930ce Update 2019 copyright (binaryFate)
2019-03-10epee: certificate generation fix, pkey deletedDusan Klinec1-3/+5
- pkey gets deleted by the pkey_deleter but the caller tries to serialize it which causes errors as the memory is freed
2019-03-08connection_basic: remove debug exception ^_^moneromooo-monero1-1/+0
2019-03-08Fix startup errors with SSL cert generationHoward Chu1-37/+6
Use SSL API directly, skip boost layer
2019-03-05Update 2019 copyrightbinaryFate8-8/+8
2019-03-05epee: add SSL supportMartijn Otto2-24/+121
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-04Merge pull request #5096Riccardo Spagni1-3/+3
7c3ade44 network_throttle: use circular_buffer where appropriate (moneromooo-monero)
2019-02-02epee: add SSL supportmoneromooo-monero3-10/+357
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-3/+3
2019-01-28Adding initial support for broadcasting transactions over TorLee Clagett2-28/+42
- 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-21readline: don't dereference possible NULL pointerJethro Grassie1-2/+2
2019-01-16Merge pull request #5001Riccardo Spagni1-2/+4
a5ffc2d5 Remove boost::lexical_cast for uuid and unused uuid function (Lee Clagett)
2019-01-16Merge pull request #4976Riccardo Spagni2-1/+98
85665003 epee: better network buffer data structure (moneromooo-monero)
2019-01-06Merge pull request #4951Riccardo Spagni1-0/+3
b21a60ef mlocker: set default log category (moneromooo-monero)
2018-12-31Merge pull request #4957luigi11111-1/+1
0e2f5cb perf_timer: make all logs Info level (moneromooo-monero)
2018-12-23epee: better network buffer data structuremoneromooo-monero2-1/+98
avoids pointless allocs and memcpy
2018-12-23Remove boost::lexical_cast for uuid and unused uuid functionLee Clagett1-2/+4
2018-12-12Merge pull request #4925Riccardo Spagni1-1/+0
ab783b17 easylogging++: ensure logger is initialized before main (moneromooo-monero) 9b69a0ae daemon: print monero version at startup when calling a detached daemon (moneromooo-monero) 4d71d463 mlocker: remove early page size log (moneromooo-monero)
2018-12-08perf_timer: make all logs Info levelmoneromooo-monero1-1/+1
and make them not default at log level 1
2018-12-07mlocker: set default log categorymoneromooo-monero1-0/+3
2018-12-04Merge pull request #4883Riccardo Spagni1-2/+2
40485a73 mlocker: fix access to global lock map after dtor on exit (moneromooo-monero)
2018-12-04Merge pull request #4880Riccardo Spagni1-6/+2
96e6b439 blockchain_stats: don't use gmtime_r on Windows (moneromooo-monero)
2018-12-04Merge pull request #4876Riccardo Spagni1-3/+12
1132436f Only show a single mlock() error, to avoid flooding the log (Martijn Otto)
2018-12-04Merge pull request #4875Riccardo Spagni1-0/+8
23829ebb mlocker: don't throw from lock/unlock (moneromooo-monero)
2018-12-04Merge pull request #4854Riccardo Spagni4-53/+2
bd98e99c Removed a lot of unnecessary includes (Martijn Otto)
2018-12-04Merge pull request #4853Riccardo Spagni1-1/+2
2b3595d0 various: do not propagate exception through dtor (moneromooo-monero)
2018-11-30mlocker: remove early page size logmoneromooo-monero1-1/+0
It comes before the logger is initialized, so gets displayed even though it should not be by default, and apparenly comes too early for (some versions of) Android, where it crashes.
2018-11-26Only show a single mlock() error, to avoid flooding the logMartijn Otto1-3/+12
2018-11-22mlocker: fix access to global lock map after dtor on exitmoneromooo-monero1-2/+2
as the lock, it now leaks
2018-11-21blockchain_stats: don't use gmtime_r on Windowsmoneromooo-monero1-6/+2
In some cases, it doesn't like it (I don't know the details). Factor into a new epee function
2018-11-20mlocker: don't throw from lock/unlockmoneromooo-monero1-0/+8
This prevents exceptions from showing up in various awkward places such as dtors, since the only exception that can be thrown is a lock failure, and nothing handles a lock failure anyway.
2018-11-16Merge pull request #4785Riccardo Spagni1-2/+2
0cfd2ae5 mlocker: fix dtor ordering problem (moneromooo-monero)
2018-11-15Removed a lot of unnecessary includesMartijn Otto4-53/+2
2018-11-15various: do not propagate exception through dtormoneromooo-monero1-1/+2
Coverity 189689, 189690, 189692, 189695
2018-11-02mlocker: fix dtor ordering problemmoneromooo-monero1-2/+2
leak the mutex instead, it's a one off
2018-10-29network_throttle: initialize m_last_sample_time in ctormoneromooo-monero1-0/+1
Coverity 136593
2018-10-26Merge pull request #4573Riccardo Spagni1-1/+4
8f3c7937 readline_buffer: fix "cursor in prompt" bug (moneromooo-monero)
2018-10-20Merge pull request #4520Riccardo Spagni1-0/+35
2e2daebc ANSI colors in Windows 10 (iDunk5400)
2018-10-12readline_buffer: fix "cursor in prompt" bugmoneromooo-monero1-1/+4
It happens when readline displays a prompt just before switching to a shorter one
2018-10-08ANSI colors in Windows 10iDunk54001-0/+35
2018-10-02epee: initialize a few data members where it seems to be appropriatemoneromooo-monero1-0/+1
2018-10-02connection_basic: remove unused floating time start timemoneromooo-monero1-7/+0
2018-09-29Merge pull request #4459Riccardo Spagni1-1/+6
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 #4443Riccardo Spagni1-0/+2
b2972927 osx compilation fix: missing boost libs added (Dusan Klinec)
2018-09-21Merge pull request #4377Riccardo Spagni1-1/+1
4d52ec0c mlog: do not display http errors by default (moneromooo-monero)
2018-09-14mlog: do not display http errors by defaultmoneromooo-monero1-1/+1
They're controllable by potential attackers and would just spam
2018-09-12wipeable_string: add hex_to_pod functionmoneromooo-monero1-1/+2
2018-08-22Merge pull request #4179luigi11111-1/+3
262e391 mlog: handle filenames without parent directories (moneromooo-monero)
2018-08-16common: add a class to safely wrap mlock/munlockmoneromooo-monero2-1/+183
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-16wallet: wipe seed from memory where appropriatemoneromooo-monero2-5/+117
2018-07-26mlog: handle filenames without parent directoriesmoneromooo-monero1-1/+3
eg, --log-file=foo.log This would otherwise throw and crash with a stack overflow
2018-07-10memwipe: don't call the workhorse for 0 bytesmoneromooo-monero1-3/+5
Some of them don't like it
2018-06-25Merge pull request #3972luigi11111-1/+2
8766528 epee: fallback to a counter if gmtime fails when rotating logs (moneromooo-monero)
2018-06-13mlog: --max-log-files to set the max number of rotated log filesstoffu1-2/+51
2018-06-09epee: fallback to a counter if gmtime fails when rotating logsmoneromooo-monero1-1/+2
2018-04-25mlog: fix setting no logsmoneromooo-monero1-1/+6
2018-02-18wipeable_string: don't try to wipe an empty buffermoneromooo-monero1-3/+6
memset_s doesn't like it
2018-02-17memwipe: add missing #include <stdio.h>stoffu1-0/+1
2018-02-16Merge pull request #3217Riccardo Spagni1-10/+6
fde4489e wipeable_string: call memwipe directly (moneromooo-monero)
2018-02-16Merge pull request #3187Riccardo Spagni1-0/+6
851bd057 call _exit instead of abort in release mode (moneromooo-monero)
2018-02-01call _exit instead of abort in release modemoneromooo-monero1-0/+6
Avoids cores being created, as they're nowadays often piped to some call home system
2018-01-31wipeable_string: call memwipe directlymoneromooo-monero1-10/+6
since the original reason for the indirect call (that memwipe was not in contrib) is now gone
2018-01-26Readd copyright starting datexmr-eric3-3/+3
2018-01-26Update 2018 copyrightxmr-eric8-8/+8
2018-01-18remove unnecessary includeJethro Grassie1-1/+0
2018-01-11Keep readline optionalJethro Grassie1-1/+1
2018-01-10Merge pull request #2995Riccardo Spagni1-1/+1
6ccc51f6 wipeable_string: fix buffer overread (moneromooo-monero)
2018-01-10move memwipe to epee to avoid common<->crypto circular dependenciesmoneromooo-monero2-1/+111
2018-01-10epee: remove dependency on commonmoneromooo-monero3-6/+3
2017-12-25Merge pull request #2920Riccardo Spagni3-6/+6
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-23wipeable_string: fix buffer overreadmoneromooo-monero1-1/+1
2017-12-19wipeable_string: move a wipe from reserve to growmoneromooo-monero1-3/+2
That way, all implicit wipes ends up in grow, which is more robust
2017-12-19wipeable_string: ignore reserve size less than actual sizemoneromooo-monero1-2/+1
This was asserting, but stoffu pointed out the std::string standard considers this ok and ignorable
2017-12-19wipeable_string: fix clear and push_backmoneromooo-monero1-1/+4
2017-12-18network_throttle: fix ineffective lockingmoneromooo-monero1-3/+5
2017-12-18network_throttle: remove unused xxx static membermoneromooo-monero1-3/+0
2017-12-18mlog: terminate a string at last char, just in casemoneromooo-monero1-0/+1
2017-12-17Merge pull request #2877Riccardo Spagni4-1/+774
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-16move connection_basic and network_throttle from src/p2p to epeemoneromooo-monero4-1/+774
These even had the epee namespace. This fixes some ugly circular dependencies.