From 9d77552284c3167f3cee03d9757b76f792f358a1 Mon Sep 17 00:00:00 2001 From: paul-wu Date: Mon, 18 May 2015 15:51:53 +0800 Subject: [PATCH] Update elliptic.h --- elliptic.h | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/elliptic.h b/elliptic.h index 62fd3d6..28c2ba0 100644 --- a/elliptic.h +++ b/elliptic.h @@ -14,6 +14,7 @@ typedef struct fpoint{ //define curve typedef struct curve{ FPOINT * A, * B; + lint p; }CURVE; @@ -22,14 +23,23 @@ typedef struct point{ FPOINT * x, * y; }POINT; -FPOINT * ZERO, * ONE;//zero element in field -POINT * O;//infinte point +void init(); + +lint modsquareroot(lint a, lint p); + +bool testpoint(POINT * p, CURVE * c, lint p1); + +POINT * randompoint(CURVE * c, lint p); + +CURVE * curveassign(CURVE * a, CURVE * b); + +POINT * phi(POINT * a, lint p, POINT * result); FPOINT * newfpoint(lint x, lint y); POINT * newpoint(lint a, lint b, lint c, lint d); -CURVE * newcurve(FPOINT * A, FPOINT * B); +CURVE * newcurve(lint A, lint B); void freepoint(POINT * a); @@ -39,6 +49,8 @@ lint gcdEx(lint a, lint b, lint *x, lint *y); lint inver(lint a, lint p); +lint randonsafeprime(lint n); + bool equl(FPOINT * a, FPOINT * b); bool equln(FPOINT * a, FPOINT * b, lint p); @@ -77,4 +89,17 @@ POINT * ppower(POINT * a, lint n, CURVE * c, lint p, POINT * result); bool millerrabin(lint n, lint r); +lint findorder(POINT * po, CURVE * c, lint p); + +bool evaluelinedivi(POINT * a, POINT * b, POINT * in, CURVE * c, lint p, FPOINT * result); + +bool evaluelinedivi(POINT * a, POINT * b, POINT * in, CURVE * c, lint p, FPOINT * result); + +bool miller(POINT * a, POINT * b, CURVE * c, lint p, lint m, FPOINT * f); + +lint findorder(POINT * po, CURVE * c, lint p); + +bool weilpairing(POINT * a, POINT * b, CURVE * c, lint p, lint n ,FPOINT * result); + +