From fdf47299e701bc398826df994ae0e726a22352c6 Mon Sep 17 00:00:00 2001 From: "Diego F. Aranha" Date: Wed, 16 Oct 2024 11:32:08 +0200 Subject: [PATCH] Add tests and benchmarks for single products of pairings. --- bench/bench_cp.c | 16 ++++++++++++++++ test/test_cp.c | 10 ++++++++++ 2 files changed, 26 insertions(+) diff --git a/bench/bench_cp.c b/bench/bench_cp.c index 555a65c98..357a3be61 100644 --- a/bench/bench_cp.c +++ b/bench/bench_cp.c @@ -1100,6 +1100,22 @@ static void pdprv(void) { BENCH_RUN("cp_ambat_ver (AGGS)") { BENCH_ADD(cp_ambat_ver(g, g, ls, e[0], AGGS)); } BENCH_END; + + BENCH_RUN("cp_amprd_gen (AGGS)") { + BENCH_ADD(cp_amprd_gen(ls, rs, w2[0], r1, u1[0], u2[0], e[0], 1, AGGS)); + } BENCH_END; + + BENCH_RUN("cp_amprd_ask (AGGS)") { + BENCH_ADD(cp_amprd_ask(ks, ds, cs, fs, bs, v1[0], v2[0], ls, rs, w2[0], r1, p, q, u1[0], u2[0], e[0], 1, AGGS)); + } BENCH_END; + + BENCH_RUN("cp_amprd_ans (AGGS)") { + BENCH_ADD(cp_amprd_ans(g, ds, fs, bs, v1[0], v2[0], p, q, 1, AGGS)); + } BENCH_END; + + BENCH_RUN("cp_amprd_ver (AGGS)") { + BENCH_ADD(cp_amprd_ver(ts, g, ks, cs, e[0], 1)); + } BENCH_END; BENCH_RUN("cp_amprd_gen (AGGS²)") { BENCH_ADD(cp_amprd_gen(ls, rs, w2[0], r1, u1[0], u2[0], e[0], AGGS, AGGS)); diff --git a/test/test_cp.c b/test/test_cp.c index 2d573cb38..408fa7151 100644 --- a/test/test_cp.c +++ b/test/test_cp.c @@ -1412,6 +1412,16 @@ static int pdprd(void) { } TEST_END; TEST_CASE("amortized delegated pairing product is correct") { + TEST_ASSERT(cp_amprd_gen(ls, rs, w2, x, u1, u2, e, 1, AGGS) == RLC_OK, end); + for (size_t i = 0; i < AGGS * AGGS; i++) { + g1_rand(p[i]); + g2_rand(q[i]); + } + TEST_ASSERT(cp_amprd_ask(ks, ds, cs, fs, bs, v1, v2, ls, rs, w2, x, p, q, u1, u2, e, 1, AGGS) == RLC_OK, end); + TEST_ASSERT(cp_amprd_ans(g, ds, fs, bs, v1, v2, p, q, 1, AGGS) == RLC_OK, end); + TEST_ASSERT(cp_amprd_ver(ts, g, ks, cs, e, 1) == 1, end); + pc_map_sim(g[0], p, q, AGGS); + TEST_ASSERT(gt_cmp(ts[0], g[0]) == RLC_EQ, end); TEST_ASSERT(cp_amprd_gen(ls, rs, w2, x, u1, u2, e, AGGS, AGGS) == RLC_OK, end); for (size_t i = 0; i < AGGS * AGGS; i++) { g1_rand(p[i]);