Update elliptic.h

This commit is contained in:
paul-wu
2015-05-18 15:51:53 +08:00
parent 75c7a7a530
commit 9d77552284

View File

@ -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);