diff options
author | Riccardo Spagni <ric@spagni.net> | 2019-01-16 19:03:45 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2019-01-16 19:03:45 +0200 |
commit | c07969d0d1676fc037bded9a21cf16a7a3b87ce0 (patch) | |
tree | c54d98e0f7df38a04b0c78a5ece79742f5f743a1 /src | |
parent | Merge pull request #4972 (diff) | |
parent | ringct: avoid repeated point conversion (diff) | |
download | monero-c07969d0d1676fc037bded9a21cf16a7a3b87ce0.tar.xz |
Merge pull request #4973
aaafa8a9 ringct: avoid repeated point conversion (moneromooo-monero)
Diffstat (limited to 'src')
-rw-r--r-- | src/ringct/rctSigs.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/ringct/rctSigs.cpp b/src/ringct/rctSigs.cpp index baa649f82..316f0e5e8 100644 --- a/src/ringct/rctSigs.cpp +++ b/src/ringct/rctSigs.cpp @@ -605,10 +605,19 @@ namespace rct { keyV tmp(rows + 1); size_t i; keyM M(cols, tmp); + ge_p3 Cp3; + CHECK_AND_ASSERT_MES_L1(ge_frombytes_vartime(&Cp3, C.bytes) == 0, false, "point conv failed"); + ge_cached Ccached; + ge_p3_to_cached(&Ccached, &Cp3); + ge_p1p1 p1; //create the matrix to mg sig for (i = 0; i < cols; i++) { M[i][0] = pubs[i].dest; - subKeys(M[i][1], pubs[i].mask, C); + ge_p3 p3; + CHECK_AND_ASSERT_MES_L1(ge_frombytes_vartime(&p3, pubs[i].mask.bytes) == 0, false, "point conv failed"); + ge_sub(&p1, &p3, &Ccached); + ge_p1p1_to_p3(&p3, &p1); + ge_p3_tobytes(M[i][1].bytes, &p3); } //DP(C); return MLSAG_Ver(message, M, mg, rows); |