From 48a73206e83cb0901deaab594340b2711a4430b5 Mon Sep 17 00:00:00 2001 From: MITSUNARI Shigeo Date: Mon, 17 Sep 2018 22:26:05 +0900 Subject: add verifyAggregatedHashes --- test/bls_test.hpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'test') diff --git a/test/bls_test.hpp b/test/bls_test.hpp index d713118..bb58ad2 100644 --- a/test/bls_test.hpp +++ b/test/bls_test.hpp @@ -4,6 +4,11 @@ #include #include #include +#ifdef MCL_DONT_USE_OPENSSL +#include +#else +#include +#endif template void streamTest(const T& t) @@ -421,6 +426,38 @@ void dataTest() } } +void verifyAggregateTest() +{ + const size_t n = 10; + bls::SecretKey secs[n]; + bls::PublicKey pubs[n]; + bls::Signature sigs[n], sig; + const size_t sizeofHash = 32; + std::vector h(n); + for (size_t i = 0; i < n; i++) { + char msg[128]; + CYBOZU_SNPRINTF(msg, sizeof(msg), "abc-%d", (int)i); + const size_t msgSize = strlen(msg); +#ifdef MCL_DONT_USE_OPENSSL + cybozu::Sha256(msg, msgSize).get(h[i]); +#else + cybozu::crypto::Hash::digest(h[i], cybozu::crypto::Hash::N_SHA256, msg, msgSize); +#endif + secs[i].init(); + secs[i].getPublicKey(pubs[i]); + secs[i].signHash(sigs[i], h[i], sizeofHash); + } + sig = sigs[0]; + for (size_t i = 1; i < n; i++) { + sig.add(sigs[i]); + } + CYBOZU_TEST_ASSERT(sig.verifyAggregatedHashes(pubs, h.data(), sizeofHash, n)); + bls::Signature invalidSig = sigs[0] + sigs[1]; + CYBOZU_TEST_ASSERT(!invalidSig.verifyAggregatedHashes(pubs, h.data(), sizeofHash, n)); + h[0][0]++; + CYBOZU_TEST_ASSERT(!sig.verifyAggregatedHashes(pubs, h.data(), sizeofHash, n)); +} + void testAll() { blsTest(); @@ -429,6 +466,7 @@ void testAll() addTest(); dataTest(); aggregateTest(); + verifyAggregateTest(); } CYBOZU_TEST_AUTO(all) { -- cgit v1.2.3