X-Git-Url: https://git.siccegge.de//index.cgi?p=software%2FDIPE.git;a=blobdiff_plain;f=tests%2FtestSS.cpp;fp=tests%2FtestSS.cpp;h=d5c1244f96baba6cc4b4b45be7cfc7621622be41;hp=0000000000000000000000000000000000000000;hb=4b96407ab713fe81282b6b7d4d38cc4dbec95a7c;hpb=27e33ae5bcd5b172f2f8311bed4e1300ba5697cc diff --git a/tests/testSS.cpp b/tests/testSS.cpp new file mode 100644 index 0000000..d5c1244 --- /dev/null +++ b/tests/testSS.cpp @@ -0,0 +1,85 @@ +#include +#include + +#include "DIPE.h" + +static dipe_param_t param; + +TEST(SSText, SSBaseTest) { + element_t types[3]; + element_init_G1(types[0], *dipe_get_pairing(param)); + element_init_G2(types[1], *dipe_get_pairing(param)); + element_init_GT(types[2], *dipe_get_pairing(param)); + size_t parties = 7; + size_t dummies = 7; + + element_t shared_secret; + element_t recovered_secret; + + element_t* shares[parties]; + element_t* dummy_shares[dummies]; + element_t identities[parties]; + element_t dummy_identities[dummies]; + + for (size_t j = 0; j < parties; ++j) { + shares[j] = (element_t*)calloc(1, sizeof(element_t)); + element_init_Zr(identities[j], *dipe_get_pairing(param)); + element_random(identities[j]); + + if (j < dummies) { + dummy_shares[j] = (element_t*)calloc(1, sizeof(element_t)); + element_init_Zr(dummy_identities[j], *dipe_get_pairing(param)); + element_random(dummy_identities[j]); + } + } + + + for (size_t i = 0; i < 3; ++i) { + element_init_same_as(shared_secret, types[i]); + element_init_same_as(recovered_secret, types[i]); + + for (size_t j = 0; j < parties; ++j) { + element_init_same_as(shares[j][0], types[i]); + //element_init_same_as(dummy_shares[j][0], types[i]); + element_random(shares[j][0]); + } + + dipe_ss_share(param, parties, identities, parties, dummy_identities, 1, shares, &shared_secret, dummy_shares); + dipe_ss_recover(param, parties, identities, 1, shares, &recovered_secret); + EXPECT_EQ(element_cmp(shared_secret, recovered_secret), 0); + dipe_ss_recover(param, parties, dummy_identities, 1, dummy_shares, &recovered_secret); + EXPECT_EQ(element_cmp(shared_secret, recovered_secret), 0); + + + for (size_t j = 0; j < parties; ++j) { + element_clear(shares[j][0]); + element_clear(dummy_shares[j][0]); + } + + element_clear(shared_secret); + element_clear(recovered_secret); + } + + for (size_t i = 0; i < 3; ++i) { + element_clear(types[i]); + } + for (size_t j = 0; j < parties; ++j) { + element_clear(identities[j]); + element_clear(dummy_identities[j]); + + free(shares[j]); + free(dummy_shares[j]); + } +} + + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + + dipe_init(fopen("../tests/a.param", "r"), ¶m); + + int result = RUN_ALL_TESTS(); + dipe_free_param(param); + return result; +} +