diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2018-02-06 15:39:35 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2018-02-06 15:39:35 +0800 |
commit | 94926b3e3fcfced2e7b052e944dfc6355f6ad19e (patch) | |
tree | 8e672c0f944776810d0caf78efe2bb3d77ee3d20 | |
parent | 521f98cf5402c73ad52502714c6ad5019dc637b3 (diff) | |
download | tangerine-mcl-94926b3e3fcfced2e7b052e944dfc6355f6ad19e.tar.gz tangerine-mcl-94926b3e3fcfced2e7b052e944dfc6355f6ad19e.tar.zst tangerine-mcl-94926b3e3fcfced2e7b052e944dfc6355f6ad19e.zip |
[she] add serialize/deserialize for ZkpBin
-rw-r--r-- | include/mcl/she.h | 2 | ||||
-rw-r--r-- | src/she_c_impl.hpp | 10 | ||||
-rw-r--r-- | test/she_c_test.hpp | 9 |
3 files changed, 21 insertions, 0 deletions
diff --git a/include/mcl/she.h b/include/mcl/she.h index 1c328bc..6c11050 100644 --- a/include/mcl/she.h +++ b/include/mcl/she.h @@ -81,6 +81,7 @@ MCLSHE_DLL_API mclSize shePublicKeySerialize(void *buf, mclSize maxBufSize, cons MCLSHE_DLL_API mclSize sheCipherTextG1Serialize(void *buf, mclSize maxBufSize, const sheCipherTextG1 *c); MCLSHE_DLL_API mclSize sheCipherTextG2Serialize(void *buf, mclSize maxBufSize, const sheCipherTextG2 *c); MCLSHE_DLL_API mclSize sheCipherTextGTSerialize(void *buf, mclSize maxBufSize, const sheCipherTextGT *c); +MCLSHE_DLL_API mclSize sheZkpBinSerialize(void *buf, mclSize maxBufSize, const sheZkpBin *zkp); // return read byte size if sucess else 0 MCLSHE_DLL_API mclSize sheSecretKeyDeserialize(sheSecretKey* sec, const void *buf, mclSize bufSize); @@ -88,6 +89,7 @@ MCLSHE_DLL_API mclSize shePublicKeyDeserialize(shePublicKey* pub, const void *bu MCLSHE_DLL_API mclSize sheCipherTextG1Deserialize(sheCipherTextG1* c, const void *buf, mclSize bufSize); MCLSHE_DLL_API mclSize sheCipherTextG2Deserialize(sheCipherTextG2* c, const void *buf, mclSize bufSize); MCLSHE_DLL_API mclSize sheCipherTextGTDeserialize(sheCipherTextGT* c, const void *buf, mclSize bufSize); +MCLSHE_DLL_API mclSize sheZkpBinDeserialize(sheZkpBin* zkp, const void *buf, mclSize bufSize); /* set secretKey if system has /dev/urandom or CryptGenRandom diff --git a/src/she_c_impl.hpp b/src/she_c_impl.hpp index d9a6593..c6ed603 100644 --- a/src/she_c_impl.hpp +++ b/src/she_c_impl.hpp @@ -120,6 +120,11 @@ mclSize sheCipherTextGTSerialize(void *buf, mclSize maxBufSize, const sheCipherT return serialize(buf, maxBufSize, c); } +mclSize sheZkpBinSerialize(void *buf, mclSize maxBufSize, const sheZkpBin *zkp) +{ + return serialize(buf, maxBufSize, zkp); +} + template<class T> mclSize deserialize(T *x, const void *buf, mclSize bufSize) try @@ -155,6 +160,11 @@ mclSize sheCipherTextGTDeserialize(sheCipherTextGT* c, const void *buf, mclSize return deserialize(c, buf, bufSize); } +mclSize sheZkpBinDeserialize(sheZkpBin* zkp, const void *buf, mclSize bufSize) +{ + return deserialize(zkp, buf, bufSize); +} + int sheSecretKeySetByCSPRNG(sheSecretKey *sec) try { diff --git a/test/she_c_test.hpp b/test/she_c_test.hpp index 01fafa6..77bf893 100644 --- a/test/she_c_test.hpp +++ b/test/she_c_test.hpp @@ -283,6 +283,15 @@ void ZkpBinTest(const sheSecretKey *sec, const PK *pub, encWithZkpFunc encWithZk CYBOZU_TEST_EQUAL(dec(&mDec, sec, &c), 0); CYBOZU_TEST_EQUAL(mDec, m); CYBOZU_TEST_EQUAL(verify(pub, &c, &zkp), 1); + { + char buf[2048]; + size_t n = sheZkpBinSerialize(buf, sizeof(buf), &zkp); + CYBOZU_TEST_EQUAL(n, mclBn_getOpUnitSize() * 8 * 4); + sheZkpBin zkp2; + size_t r = sheZkpBinDeserialize(&zkp2, buf, n); + CYBOZU_TEST_EQUAL(r, n); + CYBOZU_TEST_ASSERT(memcmp(&zkp, &zkp2, n) == 0); + } zkp.d[0].d[0]++; CYBOZU_TEST_EQUAL(verify(pub, &c, &zkp), 0); } |