From 72f03798cf9ab0c13798a4c5a703f511a818bd7d Mon Sep 17 00:00:00 2001 From: MITSUNARI Shigeo Date: Wed, 20 Feb 2019 11:22:26 +0900 Subject: add trivial test of Share/Recover for k = 1 --- test/bls_c_test.hpp | 31 +++++++++++++++++++++++++++++++ test/bls_test.hpp | 10 ++++++++++ 2 files changed, 41 insertions(+) (limited to 'test') diff --git a/test/bls_c_test.hpp b/test/bls_c_test.hpp index 085c4bd..cb5c912 100644 --- a/test/bls_c_test.hpp +++ b/test/bls_c_test.hpp @@ -320,6 +320,36 @@ void blsAddSubTest() CYBOZU_TEST_ASSERT(blsSignatureIsEqual(&sig[2], &sig[0])); } +void blsTrivialShareTest() +{ + blsSecretKey sec1, sec2; + blsPublicKey pub1, pub2; + blsId id; + blsIdSetInt(&id, 123); + + blsSecretKeySetByCSPRNG(&sec1); + blsGetPublicKey(&pub1, &sec1); + int ret; + + memset(&sec2, 0, sizeof(sec2)); + ret = blsSecretKeyShare(&sec2, &sec1, 1, &id); + CYBOZU_TEST_EQUAL(ret, 0); + CYBOZU_TEST_ASSERT(blsSecretKeyIsEqual(&sec1, &sec2)); + memset(&sec2, 0, sizeof(sec2)); + ret = blsSecretKeyRecover(&sec2, &sec1, &id, 1); + CYBOZU_TEST_EQUAL(ret, 0); + CYBOZU_TEST_ASSERT(blsSecretKeyIsEqual(&sec1, &sec2)); + + memset(&pub2, 0, sizeof(pub2)); + ret = blsPublicKeyShare(&pub2, &pub1, 1, &id); + CYBOZU_TEST_EQUAL(ret, 0); + CYBOZU_TEST_ASSERT(blsPublicKeyIsEqual(&pub1, &pub2)); + memset(&pub2, 0, sizeof(pub2)); + ret = blsPublicKeyRecover(&pub2, &pub1, &id, 1); + CYBOZU_TEST_EQUAL(ret, 0); + CYBOZU_TEST_ASSERT(blsPublicKeyIsEqual(&pub1, &pub2)); +} + void blsBench() { blsSecretKey sec; @@ -377,6 +407,7 @@ CYBOZU_TEST_AUTO(all) blsSerializeTest(); if (tbl[i].curveType == MCL_BLS12_381) blsVerifyOrderTest(); blsAddSubTest(); + blsTrivialShareTest(); blsBench(); } } diff --git a/test/bls_test.hpp b/test/bls_test.hpp index ad91020..346fafe 100644 --- a/test/bls_test.hpp +++ b/test/bls_test.hpp @@ -259,6 +259,16 @@ void k_of_nTest() CYBOZU_TEST_ASSERT(sig != sig0); } } + // return same value if n = 1 + sigVec.resize(1); + idVec.resize(1); + sigVec[0] = allSigVec[0]; + idVec[0] = allIdVec[0]; + { + bls::Signature sig; + sig.recover(sigVec, idVec); + CYBOZU_TEST_EQUAL(sig, sigVec[0]); + } // share and recover publicKey { bls::PublicKeyVec pubVec(k); -- cgit v1.2.3