forked from coinbase/cb-mpc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_zk.cpp
More file actions
85 lines (75 loc) · 4.16 KB
/
Copy pathtest_zk.cpp
File metadata and controls
85 lines (75 loc) · 4.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <gtest/gtest.h>
#include <cbmpc/zk/zk_ec.h>
#include "utils/data/zk_completeness.h"
#include "utils/test_macros.h"
#define REPEAT_COMPLETENESS 1
using namespace coinbase::test::data;
namespace {
#define TEST_NIZK_COMPLETENESS_CURVES(name, ZKClass, ...) \
TEST(name, Completeness) { \
for (const auto& curve : { \
coinbase::crypto::curve_p256, \
coinbase::crypto::curve_p384, \
coinbase::crypto::curve_p521, \
coinbase::crypto::curve_secp256k1, \
coinbase::crypto::curve_ed25519, \
}) { \
auto zk = new ZKClass(curve, ##__VA_ARGS__); \
for (int i = 0; i < REPEAT_COMPLETENESS; i++) { \
zk->setup(); \
zk->prove(); \
} \
delete zk; \
} \
}
#define TEST_NIZK_COMPLETENESS(name, test_nizk_obj) \
TEST(name, Completeness) { \
auto zk = test_nizk_obj; \
for (int i = 0; i < REPEAT_COMPLETENESS; i++) { \
zk->setup(); \
zk->prove(); \
ASSERT_OK(zk->verify()); \
} \
}
#define TEST_2RZK_COMPLETENESS(name, test_nizk_obj) \
TEST(name, Completeness) { \
auto zk = test_nizk_obj; \
for (int i = 0; i < REPEAT_COMPLETENESS; i++) { \
zk->setup(); \
zk->v1(); \
zk->p2(); \
ASSERT_OK(zk->verify()); \
} \
}
#define TEST_3RZK_COMPLETENESS(name, test_nizk_obj) \
TEST(name, Completeness) { \
auto zk = test_nizk_obj; \
for (int i = 0; i < REPEAT_COMPLETENESS; i++) { \
zk->setup(); \
zk->p1(); \
zk->v2(); \
zk->p3(); \
ASSERT_OK(zk->verify()); \
} \
}
TEST_NIZK_COMPLETENESS_CURVES(UC_ZK_DL, test_niuc_dl_t);
TEST_NIZK_COMPLETENESS_CURVES(UC_ZK_BatchDL, test_niuc_batch_dl_t, 10);
TEST_NIZK_COMPLETENESS_CURVES(ZK_DH, test_nidh_t);
TEST_NIZK_COMPLETENESS_CURVES(UC_ZK_ElGamalCom, test_nizk_uc_elgamal_com);
TEST_NIZK_COMPLETENESS_CURVES(ZK_ElGamalComPubShareEqual, test_nizk_elgamal_com_pub_share_equ);
TEST_NIZK_COMPLETENESS_CURVES(ZK_ElGamalComMult, test_nizk_elgamal_com_mult);
TEST_NIZK_COMPLETENESS_CURVES(ZK_ElGamalComMultPrivateScalar, test_nizk_elgamal_com_mult_private_scalar);
TEST_NIZK_COMPLETENESS(ZK_ValidPaillier, new test_nizk_valid_paillier());
TEST_2RZK_COMPLETENESS(ZK_ValidPaillier_Interactive, new test_2rzk_valid_paillier());
TEST_NIZK_COMPLETENESS(ZK_PaillierZero, new test_nizk_paillier_zero());
TEST_3RZK_COMPLETENESS(ZK_PaillierZeroInteractive, new test_3rzk_paillier_zero());
TEST_NIZK_COMPLETENESS(ZK_TwoPaillierEqual, new test_nizk_two_paillier_equal());
TEST_3RZK_COMPLETENESS(ZK_TwoPaillierEqualInteractive, new test_3rzk_paillier_zero());
TEST_NIZK_COMPLETENESS(ZK_RangePedersen, new test_nizk_range_pedersen());
TEST_3RZK_COMPLETENESS(ZK_RangePedersenInteractiveOpt, new test_i3rzk_range_pedersen());
TEST_NIZK_COMPLETENESS(ZK_PaillierPedersenEqual, new test_nizk_paillier_pedersen_equal());
TEST_3RZK_COMPLETENESS(ZK_PaillierPedersenEqualInteractive, new test_i3rzk_paillier_pedersen_equal());
TEST_NIZK_COMPLETENESS(ZK_PaillierRangeExpSlack, new test_nizk_paillier_range_exp_slack());
TEST_NIZK_COMPLETENESS_CURVES(ZK_PDL, test_nizk_pdl);
TEST_NIZK_COMPLETENESS(ZK_UnknownOrderDL, new test_unknown_order_dl());
} // namespace