aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2017-06-06 23:16:33 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2017-06-06 23:16:33 +0800
commit708637d333d46c505cef0dc9c61301edc8575c74 (patch)
treed13003a8538ff67e29b91ede4c1567f5ebce2ab0
parentd91d4dd8b692900a284f5c58923d9a487639099e (diff)
downloadtangerine-mcl-708637d333d46c505cef0dc9c61301edc8575c74.tar.gz
tangerine-mcl-708637d333d46c505cef0dc9c61301edc8575c74.tar.zst
tangerine-mcl-708637d333d46c505cef0dc9c61301edc8575c74.zip
use new api
-rw-r--r--sample/pairing_c.c58
-rw-r--r--test/glv_test.cpp24
2 files changed, 53 insertions, 29 deletions
diff --git a/sample/pairing_c.c b/sample/pairing_c.c
index e37baf1..3337afe 100644
--- a/sample/pairing_c.c
+++ b/sample/pairing_c.c
@@ -1,7 +1,7 @@
-#define BN256_DEFINE_STRUCT
-#define BN_MAX_FP_UNIT_SIZE 4
-#include <mcl/bn.h>
#include <stdio.h>
+#include <string.h>
+#define MCLBN_FP_UNIT_SIZE 4
+#include <mcl/bn.h>
int g_err = 0;
#define ASSERT(x) { if (!(x)) { printf("err %s:%d\n", __FILE__, __LINE__); g_err++; } }
@@ -9,40 +9,40 @@ int g_err = 0;
int main()
{
char buf[1024];
- const char *aStr = "1234567788234243234234";
- const char *bStr = "239482098243";
- BN256_init();
- BN256_Fr a, b, ab;
- BN256_G1 P, aP;
- BN256_G2 Q, bQ;
- BN256_GT e, e1, e2;
- BN256_Fr_setStr(&a, aStr);
- BN256_Fr_setStr(&b, bStr);
- BN256_Fr_mul(&ab, &a, &b);
- BN256_Fr_getStr(buf, sizeof(buf), &ab);
+ const char *aStr = "123";
+ const char *bStr = "456";
+ mclBn_init(mclBn_CurveFp254BNb, MCLBN_FP_UNIT_SIZE);
+ mclBnFr a, b, ab;
+ mclBnG1 P, aP;
+ mclBnG2 Q, bQ;
+ mclBnGT e, e1, e2;
+ mclBnFr_setStr(&a, aStr, strlen(aStr), 10);
+ mclBnFr_setStr(&b, bStr, strlen(bStr), 10);
+ mclBnFr_mul(&ab, &a, &b);
+ mclBnFr_getStr(buf, sizeof(buf), &ab, 10);
printf("%s x %s = %s\n", aStr, bStr, buf);
- ASSERT(!BN256_G1_setStr(&P, "1 -1 1")); // "1 <x> <y>"
- ASSERT(!BN256_G2_hashAndMapTo(&Q, "1"));
- BN256_G1_getStr(buf, sizeof(buf), &P);
+ ASSERT(!mclBnG1_hashAndMapTo(&P, "this", 4));
+ ASSERT(!mclBnG2_hashAndMapTo(&Q, "that", 4));
+ mclBnG1_getStr(buf, sizeof(buf), &P, 16);
printf("P = %s\n", buf);
- BN256_G2_getStr(buf, sizeof(buf), &Q);
+ mclBnG2_getStr(buf, sizeof(buf), &Q, 16);
printf("Q = %s\n", buf);
- BN256_G1_mul(&aP, &P, &a);
- BN256_G2_mul(&bQ, &Q, &b);
+ mclBnG1_mul(&aP, &P, &a);
+ mclBnG2_mul(&bQ, &Q, &b);
- BN256_pairing(&e, &P, &Q);
- BN256_GT_getStr(buf, sizeof(buf), &e);
+ mclBn_pairing(&e, &P, &Q);
+ mclBnGT_getStr(buf, sizeof(buf), &e, 16);
printf("e = %s\n", buf);
- BN256_GT_pow(&e1, &e, &a);
- BN256_pairing(&e2, &aP, &Q);
- ASSERT(BN256_GT_isEqual(&e1, &e2));
+ mclBnGT_pow(&e1, &e, &a);
+ mclBn_pairing(&e2, &aP, &Q);
+ ASSERT(mclBnGT_isEqual(&e1, &e2));
- BN256_GT_pow(&e1, &e, &b);
- BN256_pairing(&e2, &P, &bQ);
- ASSERT(BN256_GT_isEqual(&e1, &e2));
- ASSERT(BN256_setErrFile("") == 0);
+ mclBnGT_pow(&e1, &e, &b);
+ mclBn_pairing(&e2, &P, &bQ);
+ ASSERT(mclBnGT_isEqual(&e1, &e2));
+ ASSERT(mclBn_setErrFile("") == 0);
if (g_err) {
printf("err %d\n", g_err);
return 1;
diff --git a/test/glv_test.cpp b/test/glv_test.cpp
index b2df070..15a677b 100644
--- a/test/glv_test.cpp
+++ b/test/glv_test.cpp
@@ -153,8 +153,32 @@ void testGLV(const mcl::bn::CurveParam& cp)
CYBOZU_BENCH_C("Ec::glv", 100, P1 = P0; s.setRand(rg); glv.mul, P2, P1, s.getMpz());
}
+void testGLV2(const mcl::bn::CurveParam& cp)
+{
+ bn384init(cp);
+ G2::setCompressedExpression(false);
+ G2 Q0, Q1;
+ const mpz_class& z = BN::param.z;
+ mpz_class lambda = 6 * z * z;
+ lambda *= lambda;
+ lambda -= 1;
+ std::cout << std::hex;
+ Fp2 t;
+ for (int i = 1; i < 10; i++) {
+ BN::mapToG2(Q0, i);
+ G2::mul(Q1, Q0, lambda);
+ printf("i=%d\n", i);
+ Q0.normalize();
+ Q1.normalize();
+ PUT(Q0);
+ PUT(Q1);
+
+ }
+}
+
CYBOZU_TEST_AUTO(glv)
{
+// testGLV2(mcl::bn::CurveFp254BNb);
testGLV(mcl::bn::CurveFp254BNb);
testGLV(mcl::bn::CurveFp382_1);
testGLV(mcl::bn::CurveFp382_2);