diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2017-06-30 06:04:54 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2017-06-30 06:04:54 +0800 |
commit | e49813a7e05e1daa23b3c1bf52eb81f0546819b4 (patch) | |
tree | 8870b6c1600ee0ed9cc2ced0c0fd23cbd3bfecef | |
parent | 56c5f0dffd3db0eb8cb5c5ca22b280d954c2aa08 (diff) | |
download | dexon-mcl-e49813a7e05e1daa23b3c1bf52eb81f0546819b4.tar.gz dexon-mcl-e49813a7e05e1daa23b3c1bf52eb81f0546819b4.tar.zst dexon-mcl-e49813a7e05e1daa23b3c1bf52eb81f0546819b4.zip |
add benchmark of bgn
-rw-r--r-- | test/bgn_test.cpp | 45 |
1 files changed, 31 insertions, 14 deletions
diff --git a/test/bgn_test.cpp b/test/bgn_test.cpp index d639517..32192aa 100644 --- a/test/bgn_test.cpp +++ b/test/bgn_test.cpp @@ -7,9 +7,9 @@ #if CYBOZU_CPP_VERSION >= CYBOZU_CPP_VERSION_CPP11 #include <random> -std::random_device rg; +std::random_device g_rg; #else -cybozu::RandomGenerator rg; +cybozu::RandomGenerator g_rg; #endif typedef mcl::bgn::BGNT<mcl::bn256::BN, mcl::bn256::Fr> BGN; @@ -87,15 +87,15 @@ CYBOZU_TEST_AUTO(GTHashTable) CYBOZU_TEST_AUTO(enc_dec) { SecretKey& sec = g_sec; - sec.setByCSPRNG(rg); + sec.setByCSPRNG(g_rg); sec.setRangeForDLP(1024); PublicKey pub; sec.getPublicKey(pub); CipherText c; for (int i = -5; i < 5; i++) { - pub.enc(c, i, rg); + pub.enc(c, i, g_rg); CYBOZU_TEST_EQUAL(sec.dec(c), i); - pub.rerandomize(c, rg); + pub.rerandomize(c, g_rg); CYBOZU_TEST_EQUAL(sec.dec(c), i); } } @@ -108,12 +108,12 @@ CYBOZU_TEST_AUTO(add_sub_mul) for (int m1 = -5; m1 < 5; m1++) { for (int m2 = -5; m2 < 5; m2++) { CipherText c1, c2, c3; - pub.enc(c1, m1, rg); - pub.enc(c2, m2, rg); + pub.enc(c1, m1, g_rg); + pub.enc(c2, m2, g_rg); CipherText::add(c3, c1, c2); CYBOZU_TEST_EQUAL(m1 + m2, sec.dec(c3)); - pub.rerandomize(c3, rg); + pub.rerandomize(c3, g_rg); CYBOZU_TEST_EQUAL(m1 + m2, sec.dec(c3)); CipherText::sub(c3, c1, c2); @@ -122,7 +122,7 @@ CYBOZU_TEST_AUTO(add_sub_mul) CipherText::mul(c3, c1, c2); CYBOZU_TEST_EQUAL(m1 * m2, sec.dec(c3)); - pub.rerandomize(c3, rg); + pub.rerandomize(c3, g_rg); CYBOZU_TEST_EQUAL(m1 * m2, sec.dec(c3)); } } @@ -136,7 +136,7 @@ CYBOZU_TEST_AUTO(add_mul_add_sub) int m[8] = { 1, -2, 3, 4, -5, 6, -7, 8 }; CipherText c[8]; for (int i = 0; i < 8; i++) { - pub.enc(c[i], m[i], rg); + pub.enc(c[i], m[i], g_rg); CYBOZU_TEST_EQUAL(sec.dec(c[i]), m[i]); CYBOZU_TEST_ASSERT(!c[i].isMultiplied()); CipherText mc; @@ -181,21 +181,21 @@ CYBOZU_TEST_AUTO(io) G1::setIoMode(mcl::IoFixedSizeByteSeq); } SecretKey sec; - sec.setByCSPRNG(rg); + sec.setByCSPRNG(g_rg); sec.setRangeForDLP(100, 2); testIo(sec); PublicKey pub; sec.getPublicKey(pub); testIo(pub); CipherTextG1 g1; - pub.enc(g1, 3, rg); + pub.enc(g1, 3, g_rg); m = sec.dec(testIo(g1)); CYBOZU_TEST_EQUAL(m, 3); CipherTextG2 g2; - pub.enc(g2, 5, rg); + pub.enc(g2, 5, g_rg); testIo(g2); CipherTextA ca; - pub.enc(ca, -4, rg); + pub.enc(ca, -4, g_rg); m = sec.dec(testIo(ca)); CYBOZU_TEST_EQUAL(m, -4); CipherTextM cm; @@ -205,3 +205,20 @@ CYBOZU_TEST_AUTO(io) } } +CYBOZU_TEST_AUTO(bench) +{ + const SecretKey& sec = g_sec; + PublicKey pub; + sec.getPublicKey(pub); + CipherText c1, c2, c3; + CYBOZU_BENCH("enc", pub.enc, c1, 5, g_rg); + pub.enc(c2, 4, g_rg); + CYBOZU_BENCH("add", c1.add, c2); + CYBOZU_BENCH("mul", CipherText::mul, c3, c1, c2); + pub.enc(c1, 5, g_rg); + pub.enc(c2, 4, g_rg); + c1.mul(c2); + CYBOZU_BENCH("dec", sec.dec, c1); + c2 = c1; + CYBOZU_BENCH("add after mul", c1.add, c2); +} |