Commit graph

172 commits

Author SHA1 Message Date
moneromooo-monero
8f418a6db0
bulletproofs: #include <openssl/bn.h>
Apparently needed for openssl 1.1.x
2018-09-11 13:38:34 +00:00
moneromooo-monero
2bf636503f
bulletproofs: speed up the latest changes a bit 2018-09-11 13:38:32 +00:00
moneromooo-monero
044dff5a30
bulletproofs: scale points by 8 to ensure subgroup validity 2018-09-11 13:38:31 +00:00
moneromooo-monero
c83012c476
bulletproofs: match aggregated verification to sarang's latest prototype 2018-09-11 13:38:30 +00:00
moneromooo-monero
463434d1f7
more comprehensive test for ge_p3 comparison to identity/point at infinity
Reported by QuarksLab.
2018-09-11 13:38:20 +00:00
moneromooo-monero
a129bbd944
multiexp: fix maxscalar off by one
Reported by QuarksLab.
2018-09-11 13:38:17 +00:00
moneromooo-monero
7ed496cc78
ringct: error out when hashToPoint* returns the point at infinity
Reported by QuarksLab.
2018-09-11 13:38:16 +00:00
moneromooo-monero
61632dc166
ringct: prevent a potential very large allocation
Reported by QuarksLab.
2018-09-11 13:38:14 +00:00
moneromooo-monero
0825e97436
multiexp: fix wrong Bos-Coster result for 1 non trivial input
Reported by QuarksLab.
2018-09-11 13:38:10 +00:00
moneromooo-monero
a1359ad43c
Check inputs to addKeys are in range
Reported by QuarksLab.
2018-09-11 13:38:09 +00:00
moneromooo-monero
fe0fa3b9c5
bulletproofs: reject x, y, z, or w[i] being zero
Also try again when we're generate a proof with those characteristics

Reported by QuarksLab.
2018-09-11 13:38:08 +00:00
moneromooo-monero
5ffb2ff9b7
v8: per byte fee, pad bulletproofs, fixed 11 ring size 2018-09-11 13:38:07 +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
c429176248
bulletproofs: reject points not in the main subgroup 2018-09-11 13:38:04 +00:00
moneromooo-monero
1569717718
bulletproofs: speed up a few multiplies using existing Hi cache 2018-09-11 13:38:03 +00:00
moneromooo-monero
0b05a0fa74
Add Pippenger cache and limit Straus cache size 2018-09-11 13:38:02 +00:00
moneromooo-monero
263431c486
Pippenger multiexp
Based on sarang's python code
2018-09-11 13:37:45 +00:00
moneromooo-monero
1ed0ed4de4
multiexp: cut down on memory allocations 2018-09-11 13:37:44 +00:00
moneromooo-monero
1b867e7f40
precalc the ge_p3 representation of H 2018-09-11 13:37:42 +00:00
moneromooo-monero
7e67c52fa2
Add a define for the max number of bulletproof multi-outputs 2018-09-11 13:37:38 +00:00
moneromooo-monero
2a8fcb421b
Bulletproof aggregated verification and tests
Also constrains bulletproofs to simple rct, for simplicity
2018-09-11 13:37:37 +00:00
moneromooo-monero
126196b017
multiexp: some speedups
- use a raw memory block to store cache
- use aligned memory
- use doubling API where appropriate
- calculate straus in bands
2018-09-11 13:37:35 +00:00
moneromooo-monero
bacf0a1e2f
bulletproofs: add aggregated verification
Ported from sarang's java code
2018-09-11 13:37:32 +00:00
moneromooo-monero
e895c3def1
make straus cached mode thread safe, and add tests for it 2018-09-11 13:37:31 +00:00
moneromooo-monero
7f48bf05d7
multiexp: bos coster now works for just one point 2018-09-11 13:37:30 +00:00
moneromooo-monero
9ce9f8caf6
bulletproofs: add multi output bulletproofs to rct 2018-09-11 13:37:28 +00:00
moneromooo-monero
939bc22332
add Straus multiexp 2018-09-11 13:37:25 +00:00
moneromooo-monero
9ff6e6a0a7
ringct: add bos coster multiexp 2018-09-11 13:37:24 +00:00
moneromooo-monero
e9164bb38b
bulletproofs: misc optimizations
Use double mults where possible, avoid conversions, simplify
2018-09-11 13:37:23 +00:00
moneromooo-monero
aacfd6e370
bulletproofs: multi-output bulletproofs 2018-09-11 13:37:17 +00:00
moneromooo-monero
7c8f95d3e2
ringct: make conversion functions return const refs
This might avoid unnecessary copies.

Reported by stoffu
2018-09-04 18:28:20 +00:00
luigi1111
5f1bbe3bce
Merge pull request #4268
1f2409e Do memwipe for critical secret keys copied to rct::key (stoffu)
2018-09-04 13:16:04 -05:00
moneromooo-monero
d2e26c23f3
add and use constant time 32 byte equality function 2018-08-23 07:56:51 +00:00
luigi1111
a5d21be843
Merge pull request #4210
4616cf2 Fixed ZMQ-RPC for transactions and GET_BLOCKS_FAST (vtnerd)
2018-08-22 20:47:28 -05:00
stoffu
1f2409e9e2
Do memwipe for critical secret keys copied to rct::key 2018-08-16 22:26:30 +09:00
Lee Clagett
4616cf2641 Fixed ZMQ-RPC for transactions and GET_BLOCKS_FAST 2018-08-02 07:30:20 +00: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
luigi1111
94ed562148
Merge pull request #4045
7cdd147 Changed URLs to HTTPS (einsteinsfool)
2018-07-19 13:56:38 -05:00
moneromooo-monero
61caab8a8c
crypto: remove slight bias in key generation due to modulo 2018-07-05 09:18:01 +01:00
moneromooo-monero
2771a18e85
threadpool: allow leaf functions to run concurrently
Decrease the number of worker threads by one to account
for the fact the calling thread acts as a worker thread now
2018-06-26 22:15:22 +01:00
einsteinsfool
7cdd147da5 Changed URLs to HTTPS 2018-06-23 21:15:29 +02:00
moneromooo-monero
01cc978722
ringct: remove an unnecessary scalarmultBase in zeroCommit 2018-06-06 10:14:36 +01:00
moneromooo-monero
5f19384729
ringct: do not show verification errors with default settings 2018-05-04 08:27:55 +01:00
Riccardo Spagni
cb72b85bbf
Merge pull request #3372
c3e23b2d ringct: 17% improvement in Borromean signature verification (moneromooo-monero)
2018-03-14 16:06:16 +02: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
moneromooo-monero
c3e23b2dce
ringct: 17% improvement in Borromean signature verification 2018-03-08 00:41:54 +00:00
Riccardo Spagni
98acbe83fc
Merge pull request #3348
c95dddd2 remove unused function keyImageV (h908714124)
2018-03-05 19:13:52 +02:00
Riccardo Spagni
5950d356b6
Merge pull request #3301
34a2a085 rctSigs - loop invariant code removed from the loop (Dusan Klinec)
2018-03-05 19:11:35 +02:00
h908714124
c95dddd2d2 remove unused function keyImageV 2018-03-05 09:21:44 +01: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