aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSarang Noether <32460187+SarangNoether@users.noreply.github.com>2019-08-27 16:22:44 -0400
committerSarang Noether <32460187+SarangNoether@users.noreply.github.com>2019-08-27 16:22:44 -0400
commit3a0451a8be43154f0da06dd9c693ed6f0c657042 (patch)
tree298545ee6661a331d615de049359e74e5a9e5ca2 /tests
parentMerge pull request #5641 (diff)
downloadmonero-3a0451a8be43154f0da06dd9c693ed6f0c657042.tar.xz
MLSAG speedup and additional checks
Diffstat (limited to 'tests')
-rw-r--r--tests/performance_tests/main.cpp20
-rw-r--r--tests/performance_tests/rct_mlsag.h12
-rw-r--r--tests/unit_tests/ringct.cpp15
3 files changed, 22 insertions, 25 deletions
diff --git a/tests/performance_tests/main.cpp b/tests/performance_tests/main.cpp
index c32e0df20..bd7414c59 100644
--- a/tests/performance_tests/main.cpp
+++ b/tests/performance_tests/main.cpp
@@ -57,7 +57,6 @@
#include "rct_mlsag.h"
#include "equality.h"
#include "range_proof.h"
-#include "rct_mlsag.h"
#include "bulletproof.h"
#include "crypto_ops.h"
#include "multiexp.h"
@@ -214,14 +213,8 @@ int main(int argc, char** argv)
TEST_PERFORMANCE1(filter, p, test_cn_fast_hash, 32);
TEST_PERFORMANCE1(filter, p, test_cn_fast_hash, 16384);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 3, false);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 5, false);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 10, false);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 100, false);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 3, true);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 5, true);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 10, true);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 100, true);
+ TEST_PERFORMANCE2(filter, p, test_ringct_mlsag, 11, false);
+ TEST_PERFORMANCE2(filter, p, test_ringct_mlsag, 11, true);
TEST_PERFORMANCE2(filter, p, test_equality, memcmp32, true);
TEST_PERFORMANCE2(filter, p, test_equality, memcmp32, false);
@@ -251,15 +244,6 @@ int main(int argc, char** argv)
TEST_PERFORMANCE6(filter, p, test_aggregated_bulletproof, false, 2, 1, 1, 0, 64);
TEST_PERFORMANCE6(filter, p, test_aggregated_bulletproof, true, 2, 1, 1, 0, 64); // 64 proof, each with 2 amounts
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 3, false);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 5, false);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 10, false);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 100, false);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 3, true);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 5, true);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 10, true);
- TEST_PERFORMANCE3(filter, p, test_ringct_mlsag, 1, 100, true);
-
TEST_PERFORMANCE1(filter, p, test_crypto_ops, op_sc_add);
TEST_PERFORMANCE1(filter, p, test_crypto_ops, op_sc_sub);
TEST_PERFORMANCE1(filter, p, test_crypto_ops, op_sc_mul);
diff --git a/tests/performance_tests/rct_mlsag.h b/tests/performance_tests/rct_mlsag.h
index 0141710f7..59eae074e 100644
--- a/tests/performance_tests/rct_mlsag.h
+++ b/tests/performance_tests/rct_mlsag.h
@@ -35,13 +35,13 @@
#include "single_tx_test_base.h"
-template<size_t inputs, size_t ring_size, bool ver>
+template<size_t ring_size, bool ver>
class test_ringct_mlsag : public single_tx_test_base
{
public:
static const size_t cols = ring_size;
- static const size_t rows = inputs;
- static const size_t loop_count = 100;
+ static const size_t rows = 2; // single spend and commitment data
+ static const size_t loop_count = 1000;
bool init()
{
@@ -65,7 +65,7 @@ public:
{
sk[j] = xm[ind][j];
}
- IIccss = MLSAG_Gen(rct::identity(), P, sk, NULL, NULL, ind, rows, hw::get_device("default"));
+ IIccss = MLSAG_Gen(rct::identity(), P, sk, NULL, NULL, ind, rows-1, hw::get_device("default"));
return true;
}
@@ -73,9 +73,9 @@ public:
bool test()
{
if (ver)
- MLSAG_Ver(rct::identity(), P, IIccss, rows);
+ MLSAG_Ver(rct::identity(), P, IIccss, rows-1);
else
- MLSAG_Gen(rct::identity(), P, sk, NULL, NULL, ind, rows, hw::get_device("default"));
+ MLSAG_Gen(rct::identity(), P, sk, NULL, NULL, ind, rows-1, hw::get_device("default"));
return true;
}
diff --git a/tests/unit_tests/ringct.cpp b/tests/unit_tests/ringct.cpp
index 4d51ec434..8788dba8d 100644
--- a/tests/unit_tests/ringct.cpp
+++ b/tests/unit_tests/ringct.cpp
@@ -788,7 +788,20 @@ TEST(ringct, HPow2)
{
key G = scalarmultBase(d2h(1));
- key H = hashToPointSimple(G);
+ // Note that H is computed differently than standard hashing
+ // This method is not guaranteed to return a curvepoint for all inputs
+ // Don't use it elsewhere
+ key H = cn_fast_hash(G);
+ ge_p3 H_p3;
+ int decode = ge_frombytes_vartime(&H_p3, H.bytes);
+ ASSERT_EQ(decode, 0); // this is known to pass for the particular value G
+ ge_p2 H_p2;
+ ge_p3_to_p2(&H_p2, &H_p3);
+ ge_p1p1 H8_p1p1;
+ ge_mul8(&H8_p1p1, &H_p2);
+ ge_p1p1_to_p3(&H_p3, &H8_p1p1);
+ ge_p3_tobytes(H.bytes, &H_p3);
+
for (int j = 0 ; j < ATOMS ; j++) {
ASSERT_TRUE(equalKeys(H, H2[j]));
addKeys(H, H, H);