aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2017-06-30 06:04:54 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2017-06-30 06:04:54 +0800
commite49813a7e05e1daa23b3c1bf52eb81f0546819b4 (patch)
tree8870b6c1600ee0ed9cc2ced0c0fd23cbd3bfecef
parent56c5f0dffd3db0eb8cb5c5ca22b280d954c2aa08 (diff)
downloaddexon-mcl-e49813a7e05e1daa23b3c1bf52eb81f0546819b4.tar.gz
dexon-mcl-e49813a7e05e1daa23b3c1bf52eb81f0546819b4.tar.zst
dexon-mcl-e49813a7e05e1daa23b3c1bf52eb81f0546819b4.zip
add benchmark of bgn
-rw-r--r--test/bgn_test.cpp45
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);
+}