]> git.siccegge.de Git - software/DIPE.git/blobdiff - tests/testPBC.cpp
Code drop
[software/DIPE.git] / tests / testPBC.cpp
diff --git a/tests/testPBC.cpp b/tests/testPBC.cpp
new file mode 100644 (file)
index 0000000..826ec1b
--- /dev/null
@@ -0,0 +1,71 @@
+#include <gtest/gtest.h>
+#include <pbc/pbc.h>
+
+#include "DIPE.h"
+
+static pairing_t pairing;
+
+
+/* PBC is using multiplicative notion and ONE is indeed the neutral
+ * element wrt multiplication.
+ */
+TEST(PbcTest, PbcOneTest) {
+       element_t g1;
+       element_t z;
+       element_t g1z;
+
+       element_init_G1(g1, pairing);
+       element_init_Zr(z, pairing);
+       element_init_G1(g1z, pairing);
+
+       element_set1(g1);
+       element_random(z);
+       element_pow_zn(g1z, g1, z);
+
+       EXPECT_EQ(element_cmp(g1, g1z), 0);
+
+       element_clear(g1);
+       element_clear(z);
+       element_clear(g1z);
+}
+
+TEST(PbcTest, PbcFromHash) {
+       char test1[] = "pbctest1";
+       char test2[] = "pbctest2";
+       element_t a, b;
+
+       element_init_G2(a, pairing);
+       element_init_G2(b, pairing);
+
+       element_from_hash(a, test1, 8);
+       element_from_hash(b, test1, 8);
+       EXPECT_EQ(element_cmp(a, b), 0);
+
+       element_from_hash(a, test1, 8);
+       element_from_hash(b, test2, 8);
+       EXPECT_NE(element_cmp(a, b), 0);
+
+       element_clear(a);
+       element_clear(b);
+}
+
+int main(int argc, char **argv) {
+       char buffer[2<<16];
+    ::testing::InitGoogleTest(&argc, argv);
+
+       FILE *fp;
+       fp = fopen("../tests/a.param", "r");
+       if (fp == NULL) {
+               perror("Reading Pairing Parameters");
+               return 1;
+       }
+       size_t count = fread(buffer, 1, 2<<16, fp);
+
+       pairing_init_set_buf(pairing, buffer, 2<<16);
+
+       
+       int result = RUN_ALL_TESTS();
+       pairing_clear(pairing);
+       return result;
+}
+