aboutsummaryrefslogtreecommitdiffstats
path: root/test/aggregate_sig_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/aggregate_sig_test.cpp')
-rw-r--r--test/aggregate_sig_test.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/aggregate_sig_test.cpp b/test/aggregate_sig_test.cpp
new file mode 100644
index 0000000..db96515
--- /dev/null
+++ b/test/aggregate_sig_test.cpp
@@ -0,0 +1,40 @@
+#include <cybozu/test.hpp>
+#include <mcl/aggregate_sig.hpp>
+
+using namespace mcl::bn_current;
+using namespace mcl::aggs;
+
+CYBOZU_TEST_AUTO(init)
+{
+ AGGS::init();
+ SecretKey sec;
+ sec.init();
+ PublicKey pub;
+ sec.getPublicKey(pub);
+ const std::string m = "abc";
+ Signature sig;
+ sec.sign(sig, m);
+ CYBOZU_TEST_ASSERT(pub.verify(sig, m));
+}
+
+CYBOZU_TEST_AUTO(aggregate)
+{
+ const std::string msgArray[] = { "abc", "12345", "xyz", "pqr", "aggregate signature" };
+ const size_t n = sizeof(msgArray) / sizeof(msgArray[0]);
+ std::vector<std::string> msgVec(n);
+ for (size_t i = 0; i < n; i++) {
+ msgVec[i] = msgArray[i];
+ }
+ std::vector<SecretKey> secVec(n);
+ std::vector<PublicKey> pubVec(n);
+ std::vector<Signature> sigVec(n);
+ Signature aggSig;
+ for (size_t i = 0; i < n; i++) {
+ secVec[i].init();
+ secVec[i].getPublicKey(pubVec[i]);
+ secVec[i].sign(sigVec[i], msgVec[i]);
+ CYBOZU_TEST_ASSERT(pubVec[i].verify(sigVec[i], msgVec[i]));
+ }
+ aggSig.aggregate(sigVec);
+ CYBOZU_TEST_ASSERT(aggSig.verify(msgVec, pubVec));
+}