Commit Graph

225 Commits

Author SHA1 Message Date
moneromooo-monero a4317e61b5 crypto: some paranoid checks in generate_signature/check_signature
Reported by QuarksLab.
2018-09-11 13:38:12 +00:00
moneromooo-monero 7434df1cc6 crypto: never return zero in random32_unbiased
This avoids problems when the caller can't deal with a zero
walue, which happens often enough that it's worth nipping the
problem in the bud.
2018-09-11 13:38:12 +00:00
moneromooo-monero 869b3bf824 bulletproofs: a few fixes from the Kudelski review
- fix integer overflow in n_bulletproof_amounts
- check input scalars are in range
- remove use of environment variable to tweak straus performance
- do not use implementation defined signed shift for signum
2018-09-11 13:38:05 +00:00
moneromooo-monero 1b867e7f40 precalc the ge_p3 representation of H 2018-09-11 13:37:42 +00:00
Riccardo Spagni f0ab4dc7b2 Merge pull request #4218
5fd83c13 Cryptonight variant 2 (SChernykh)
2018-09-11 15:22:25 +02:00
SChernykh 5fd83c13fb Cryptonight variant 2
Contains two modifications to improve ASIC resistance: shuffle and integer math.

Shuffle makes use of the whole 64-byte cache line instead of 16 bytes only, making Cryptonight 4 times more demanding for memory bandwidth.

Integer math adds 64:32 bit integer division followed by 64 bit integer square root, adding large and unavoidable computational latency to the main loop.

More details and performance numbers: https://github.com/SChernykh/xmr-stak-cpu/blob/master/README.md
2018-09-09 20:43:01 +02:00
moneromooo-monero 8501b8dffb crypto_ops_builder: link to EdDSA/Ed25519 draft RFC
instead of including the text, as it's not fully free to redistribute
2018-09-09 16:18:49 +00:00
luigi1111 e4378ed8aa Merge pull request #4259
4e08100 Incremental Keccak API added (pr4r05)
2018-09-04 13:09:48 -05:00
moneromooo-monero d2e26c23f3 add and use constant time 32 byte equality function 2018-08-23 07:56:51 +00:00
moneromooo-monero ab74dc277a crypto: make secret_key automatically mlock 2018-08-16 11:57:49 +00:00
luigi1111 5295e4eb82 Merge pull request #4137
63e342b crypto: move null_pkey/null_skey to the cpp file (moneromooo-monero)
0496c7c crypto: do not use boost::value_initialized to init null skey/pkey (moneromooo-monero)
2018-08-15 17:17:34 -05:00
Dusan Klinec 4e081001c0 Incremental Keccak API added
- needed for TREZOR integration
2018-08-15 18:20:22 +02:00
stoffu bcab579864 wallet: allow adjusting number of rounds for the key derivation function 2018-08-08 01:56:54 +09:00
luigi1111 3fde902394 Merge pull request #4097
61caab8 crypto: remove slight bias in key generation due to modulo (moneromooo-monero)
2018-07-27 14:23:54 -05:00
moneromooo-monero 0496c7c91a crypto: do not use boost::value_initialized to init null skey/pkey 2018-07-20 23:06:22 +01:00
luigi1111 326437c5ff Merge pull request #4074
ef649f9 crypto: remove unused unsafe random scalar generator (moneromooo-monero)
2018-07-19 14:08:56 -05:00
luigi1111 94ed562148 Merge pull request #4045
7cdd147 Changed URLs to HTTPS (einsteinsfool)
2018-07-19 13:56:38 -05:00
moneromooo-monero 63e342be84 crypto: move null_pkey/null_skey to the cpp file 2018-07-15 19:09:36 +01:00
moneromooo-monero 61caab8a8c crypto: remove slight bias in key generation due to modulo 2018-07-05 09:18:01 +01:00
moneromooo-monero ef649f998d crypto: remove unused unsafe random scalar generator 2018-06-28 16:44:13 +01:00
einsteinsfool 7cdd147da5 Changed URLs to HTTPS 2018-06-23 21:15:29 +02:00
moneromooo-monero 09f43b9a6b crypto: add a README pointing to the SUPERCOP licence 2018-06-18 21:28:08 +01:00
luigi1111 b6eb7484d1 Merge pull request #3592
90a16b1 crypto: fix initialization order issue with random mutex (moneromooo-monero)
6a61f52 unit_tests: add ringdb unit tests (moneromooo-monero)
2018-05-31 14:41:17 -05:00
moneroexamples 9317bce9ca crypto: more places needing fixing for GCC 8.1 2018-05-13 18:17:13 +01:00
moneromooo-monero 4a72d595a6 chacha: fix build with GCC 8.1 2018-05-13 18:17:11 +01:00
aivve b1a9e97b2d slow-hash: fix memory leak for Windows /karbowanec#41 2018-04-24 20:47:29 +09:00
moneromooo-monero 90a16b119f crypto: fix initialization order issue with random mutex 2018-04-10 12:30:48 +01:00
stoffu 7dfa5e9e6e chacha: call prehashed version explicitly as generate_chacha_key_prehashed
hash: add prehashed version cn_slow_hash_prehashed
slow-hash: let cn_slow_hash take 4th parameter for deciding prehashed or not
slow-hash: add support for prehashed version for the other 3 platforms
2018-03-14 21:00:17 +09:00
stoffu b2d23b189e crypto: revert odd namespace changes made in #3303 2018-03-14 21:00:17 +09:00
stoffu 27a196b126 device: untangle cyclic depenency
When #3303 was merged, a cyclic dependency chain was generated:

    libdevice <- libcncrypto <- libringct <- libdevice

This was because libdevice needs access to a set of basic crypto operations
implemented in libringct such as scalarmultBase(), while libringct also needs
access to abstracted crypto operations implemented in libdevice such as
ecdhEncode(). To untangle this cyclic dependency chain, this patch splits libringct
into libringct_basic and libringct, where the basic crypto ops previously in
libringct are moved into libringct_basic. The cyclic dependency is now resolved
thanks to this separation:

    libcncrypto <- libringct_basic <- libdevice <- libcryptonote_basic <- libringct

This eliminates the need for crypto_device.cpp and rctOps_device.cpp.

Also, many abstracted interfaces of hw::device such as encrypt_payment_id() and
get_subaddress_secret_key() were previously implemented in libcryptonote_basic
(cryptonote_format_utils.cpp) and were then called from hw::core::device_default,
which is odd because libdevice is supposed to be independent of libcryptonote_basic.
Therefore, those functions were moved to device_default.cpp.
2018-03-14 21:00:15 +09:00
stoffu c9b38b4765 device: made function prototypes consistent with pre-#3303 codebase 2018-03-14 21:00:06 +09:00
moneromooo-monero 04a0cc89cf slow-hash: fix uint64 type typo 2018-03-07 09:48:58 +00:00
Lee Clagett e136bc6b8a tweaks to the monerov1 cryptonight algorithm 2018-03-05 18:18:45 +00:00
SChernykh d58c9ec99c slow-hash: optimized version 2018-03-05 18:18:43 +00:00
moneromooo-monero 608fd6f14a Monero Cryptonight variants, and add one for v7
This is the first variant of many, with the intent to improve
Monero's resistance to ASICs and encourage mining decentralization.
2018-03-05 18:18:39 +00:00
Edward Betts fbcc91c2a4 Correct spelling mistakes. 2018-03-05 17:00:40 +00:00
cslashm e745c1e38d Code modifications to integrate Ledger HW device into monero-wallet-cli.
The basic approach it to delegate all sensitive data (master key, secret
ephemeral key, key derivation, ....) and related operations to the device.
As device has low memory, it does not keep itself the values
(except for view/spend keys) but once computed there are encrypted (with AES
are equivalent) and return back to monero-wallet-cli. When they need to be
manipulated by the device, they are decrypted on receive.

Moreover, using the client for storing the value in encrypted form limits
the modification in the client code. Those values are transfered from one
C-structure to another one as previously.

The code modification has been done with the wishes to be open to any
other hardware wallet. To achieve that a C++ class hw::Device has been
introduced. Two initial implementations are provided: the "default", which
remaps all calls to initial Monero code, and  the "Ledger", which delegates
all calls to Ledger device.
2018-03-04 12:54:53 +01:00
iDunk5400 ed6c68db1b crypto: add missing include (WIN32) 2018-02-16 19:35:31 +01:00
Riccardo Spagni f4a6bc79d9 Merge pull request #3226
e4646379 keccak: fix mdlen bounds sanity checking (moneromooo-monero)
2e3e90ac pass large parameters by const ref, not value (moneromooo-monero)
61defd89 blockchain: sanity check number of precomputed hash of hash blocks (moneromooo-monero)
9af6b2d1 ringct: fix infinite loop in unused h2b function (moneromooo-monero)
8cea8d0c simplewallet: double check a new multisig wallet is multisig (moneromooo-monero)
9b98a6ac threadpool: catch exceptions in dtor, to avoid terminate (moneromooo-monero)
24803ed9 blockchain_export: fix buffer overflow in exporter (moneromooo-monero)
f3f7da62 perf_timer: rewrite to make it clear there is no division by zero (moneromooo-monero)
c6ea3df0 performance_tests: remove add_arg call stray extra param (moneromooo-monero)
fa6b4566 fuzz_tests: fix an uninitialized var in setup (moneromooo-monero)
03887f11 keccak: fix sanity check bounds test (moneromooo-monero)
ad11db91 blockchain_db: initialize m_open in base class ctor (moneromooo-monero)
bece67f9 miner: restore std::cout precision after modification (moneromooo-monero)
1aabd14c db_lmdb: check hard fork info drop succeeded (moneromooo-monero)
2018-02-16 14:26:58 +01:00
Riccardo Spagni 666a76652b Merge pull request #3187
851bd057 call _exit instead of abort in release mode (moneromooo-monero)
2018-02-16 14:20:31 +01:00
Riccardo Spagni ba22928d4b Merge pull request #3180
1dfed567 Fixed #if instead of #ifdef (Matt Little)
7c442453 Support building cncrypto lib with msvc (Matt Little)
2018-02-16 14:19:42 +01:00
moneromooo-monero e4646379a6 keccak: fix mdlen bounds sanity checking
found by h908714124
2018-02-07 13:39:32 +00:00
moneromooo-monero 03887f1140 keccak: fix sanity check bounds test
Nothing calls this with those inputs
2018-02-02 15:48:06 +00:00
moneromooo-monero 851bd057ec call _exit instead of abort in release mode
Avoids cores being created, as they're nowadays often piped
to some call home system
2018-02-01 13:32:46 +00:00
Riccardo Spagni 7de1685bd8 Merge pull request #3119
c4f43779 crypto: add a ge_p3_identity constant (moneromooo-monero)
13b4c90e crypto: add scalar mult functions returning ge_p3 instead of ge_p2 (moneromooo-monero)
2018-01-27 17:24:42 -08:00
xmr-eric 18216f19dd Update 2018 copyright 2018-01-26 10:03:20 -05:00
Matt Little 7c4424531f Support building cncrypto lib with msvc 2018-01-25 13:00:45 -07:00
moneromooo-monero c4f437796d crypto: add a ge_p3_identity constant 2018-01-15 00:30:46 +00:00
moneromooo-monero 13b4c90e01 crypto: add scalar mult functions returning ge_p3 instead of ge_p2
ge_scalarmult_p3
ge_double_scalarmult_precomp_vartime2_p3
ge_double_scalarmult_base_vartime_p3

This makes it possible to reuse the result without having to
convert back to unsigned char[32] and back to ge types.
2018-01-15 00:30:26 +00:00
Riccardo Spagni 529ca39e9d Merge pull request #2988
8a4610c3 blake256: fix wrong hash when computed in parts (moneromooo-monero)
2018-01-10 11:52:32 +01:00