aboutsummaryrefslogtreecommitdiffstats
path: root/include/mcl
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2018-04-04 13:34:00 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2018-04-04 13:34:00 +0800
commite07a7eba6202202405a17e4774821d0a24918aed (patch)
tree9b20e4f5b98e6f92e2f45a95f5baf690943f59d8 /include/mcl
parentaaab06e142ce93cf5348a502ad65257e228952b5 (diff)
downloadtangerine-mcl-e07a7eba6202202405a17e4774821d0a24918aed.tar.gz
tangerine-mcl-e07a7eba6202202405a17e4774821d0a24918aed.tar.zst
tangerine-mcl-e07a7eba6202202405a17e4774821d0a24918aed.zip
add mclBn_verifyOrderG1/G2
Diffstat (limited to 'include/mcl')
-rw-r--r--include/mcl/bn.h9
-rw-r--r--include/mcl/bn.hpp3
2 files changed, 12 insertions, 0 deletions
diff --git a/include/mcl/bn.h b/include/mcl/bn.h
index f4dddce..b141f5e 100644
--- a/include/mcl/bn.h
+++ b/include/mcl/bn.h
@@ -85,6 +85,8 @@ typedef struct {
*/
MCLBN_DLL_API int mclBn_setErrFile(const char *name);
+#include <mcl/curve_type.h>
+// for backword compatibility
enum {
mclBn_CurveFp254BNb = 0,
mclBn_CurveFp382_1 = 1,
@@ -324,6 +326,13 @@ MCLBN_DLL_API int mclBn_FrEvaluatePolynomial(mclBnFr *out, const mclBnFr *cVec,
MCLBN_DLL_API int mclBn_G1EvaluatePolynomial(mclBnG1 *out, const mclBnG1 *cVec, mclSize cSize, const mclBnFr *x);
MCLBN_DLL_API int mclBn_G2EvaluatePolynomial(mclBnG2 *out, const mclBnG2 *cVec, mclSize cSize, const mclBnFr *x);
+/*
+ verify whether a point of an elliptic curve has order r
+ This api affetcs setStr(), deserialize() for G2 on BN or G1/G2 on BLS12
+ @param doVerify [in] does not verify if zero(default 1)
+*/
+MCLBN_DLL_API void mclBn_verifyOrderG1(int doVerify);
+MCLBN_DLL_API void mclBn_verifyOrderG2(int doVerify);
#ifdef __cplusplus
}
diff --git a/include/mcl/bn.hpp b/include/mcl/bn.hpp
index 93e8f8d..f8c5b85 100644
--- a/include/mcl/bn.hpp
+++ b/include/mcl/bn.hpp
@@ -915,6 +915,9 @@ struct ParamT {
twist_b_type = tb_generic;
}
G1::init(0, cp.b, mcl::ec::Proj);
+ if (isBLS12) {
+ G1::setOrder(r);
+ }
G2::init(0, twist_b, mcl::ec::Proj);
G2::setOrder(r);