diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2018-01-03 21:07:09 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2018-01-03 21:07:09 +0800 |
commit | e4e5c2051b1893a4183f99318945044a905c244f (patch) | |
tree | 5f4103ecc80654af47e75c265fb2debf86449f65 | |
parent | 280d7c84204b3eb1a08993fb20dcddebbf8e2b40 (diff) | |
download | tangerine-mcl-e4e5c2051b1893a4183f99318945044a905c244f.tar.gz tangerine-mcl-e4e5c2051b1893a4183f99318945044a905c244f.tar.zst tangerine-mcl-e4e5c2051b1893a4183f99318945044a905c244f.zip |
[she] add sheDecGiViaGT
-rw-r--r-- | include/mcl/she.h | 6 | ||||
-rw-r--r-- | src/she_c_impl.hpp | 26 | ||||
-rw-r--r-- | test/she_c_test.hpp | 6 |
3 files changed, 36 insertions, 2 deletions
diff --git a/include/mcl/she.h b/include/mcl/she.h index b97cae1..962f990 100644 --- a/include/mcl/she.h +++ b/include/mcl/she.h @@ -144,6 +144,12 @@ MCLSHE_DLL_API int sheEncGT(sheCipherTextGT *c, const shePublicKey *pub, mclInt MCLSHE_DLL_API int sheDecG1(mclInt *m, const sheSecretKey *sec, const sheCipherTextG1 *c); MCLSHE_DLL_API int sheDecG2(mclInt *m, const sheSecretKey *sec, const sheCipherTextG2 *c); MCLSHE_DLL_API int sheDecGT(mclInt *m, const sheSecretKey *sec, const sheCipherTextGT *c); +/* + decode c via GT and set m + return 0 if success +*/ +MCLSHE_DLL_API int sheDecG1ViaGT(mclInt *m, const sheSecretKey *sec, const sheCipherTextG1 *c); +MCLSHE_DLL_API int sheDecG2ViaGT(mclInt *m, const sheSecretKey *sec, const sheCipherTextG2 *c); /* return 1 if dec(c) == 0 diff --git a/src/she_c_impl.hpp b/src/she_c_impl.hpp index 1f5237d..9d29c67 100644 --- a/src/she_c_impl.hpp +++ b/src/she_c_impl.hpp @@ -202,7 +202,7 @@ void sheUseDecG1ViaGT(int use) { SHE::useDecG1ViaGT(use != 0); } -void sheDecG2ViaGT(int use) +void sheUseDecG2ViaGT(int use) { SHE::useDecG2ViaGT(use != 0); } @@ -282,7 +282,7 @@ template<class CT> int decT(mclInt *m, const sheSecretKey *sec, const CT *c) try { - *m = cast(sec)->dec(*cast(c)); + *m = (cast(sec)->dec)(*cast(c)); return 0; } catch (std::exception& e) { fprintf(stderr, "err %s\n", e.what()); @@ -305,6 +305,28 @@ int sheDecGT(mclInt *m, const sheSecretKey *sec, const sheCipherTextGT *c) } template<class CT> +int decViaGTT(mclInt *m, const sheSecretKey *sec, const CT *c) + try +{ + *m = (cast(sec)->decViaGT)(*cast(c)); + return 0; +} catch (std::exception& e) { + fprintf(stderr, "err %s\n", e.what()); + return -1; +} + +int sheDecG1ViaGT(mclInt *m, const sheSecretKey *sec, const sheCipherTextG1 *c) +{ + return decViaGTT(m, sec, c); +} + +int sheDecG2ViaGT(mclInt *m, const sheSecretKey *sec, const sheCipherTextG2 *c) +{ + return decViaGTT(m, sec, c); +} + + +template<class CT> int isZeroT(const sheSecretKey *sec, const CT *c) try { diff --git a/test/she_c_test.hpp b/test/she_c_test.hpp index e7c0cb3..651fd04 100644 --- a/test/she_c_test.hpp +++ b/test/she_c_test.hpp @@ -43,9 +43,15 @@ CYBOZU_TEST_AUTO(encDec) CYBOZU_TEST_EQUAL(sheDecG1(&dec, &sec, &c1), 0); CYBOZU_TEST_EQUAL(dec, m); dec = 0; + CYBOZU_TEST_EQUAL(sheDecG1ViaGT(&dec, &sec, &c1), 0); + CYBOZU_TEST_EQUAL(dec, m); + dec = 0; CYBOZU_TEST_EQUAL(sheDecG2(&dec, &sec, &c2), 0); CYBOZU_TEST_EQUAL(dec, m); dec = 0; + CYBOZU_TEST_EQUAL(sheDecG2ViaGT(&dec, &sec, &c2), 0); + CYBOZU_TEST_EQUAL(dec, m); + dec = 0; CYBOZU_TEST_EQUAL(sheDecGT(&dec, &sec, &ct), 0); CYBOZU_TEST_EQUAL(dec, m); |