X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/432c4e184d44704511a5991b80224a87cb1d4613..8404fd750e8d1a635ccb3895e4f0e155e5f5e3cf:/ec-test.c diff --git a/ec-test.c b/ec-test.c index 2f81015..de01ad8 100644 --- a/ec-test.c +++ b/ec-test.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: ec-test.c,v 1.3 2004/03/27 17:54:11 mdw Exp $ + * $Id: ec-test.c,v 1.5 2004/04/02 01:03:49 mdw Exp $ * * Code for testing elliptic-curve stuff * @@ -30,6 +30,16 @@ /*----- Revision history --------------------------------------------------* * * $Log: ec-test.c,v $ + * Revision 1.5 2004/04/02 01:03:49 mdw + * Miscellaneous constification. + * + * Revision 1.4 2004/04/01 12:50:09 mdw + * Add cyclic group abstraction, with test code. Separate off exponentation + * functions for better static linking. Fix a buttload of bugs on the way. + * Generally ensure that negative exponents do inversion correctly. Add + * table of standard prime-field subgroups. (Binary field subgroups are + * currently unimplemented but easy to add if anyone ever finds a good one.) + * * Revision 1.3 2004/03/27 17:54:11 mdw * Standard curves and curve checking. * @@ -110,8 +120,14 @@ static int ecCHECK(ec_curve *cc, const ec *p) return (EC_CHECK(c->real, p)); } -static ec_ops ecops = { - ecDESTROY, ecIN, ecOUT, ecFIX, +static int ecSAMEP(ec_curve *cc, ec_curve *dd) +{ + ecctx *c = (ecctx *)cc, *d = (ecctx *)dd; + return (ec_samep(c->real, d->real)); +} + +static const ec_ops ecops = { + ecDESTROY, ecSAMEP, ecIN, ecOUT, ecFIX, ecFIND, ecNEG, ecADD, ecSUB, ecDBL, ecCHECK }; @@ -120,6 +136,8 @@ static ec_curve *ec_cutout(ec_curve *real, const char *name) ecctx *c = CREATE(ecctx); c->c.f = real->f; c->c.ops = &ecops; + c->c.a = real->a; + c->c.b = real->b; c->magic = MAGIC; c->name = xstrdup(name); c->real = real; @@ -158,7 +176,7 @@ static void ecvdump(dstr *d, FILE *fp) fprintf(fp, "%s", ec_name(v)); } -test_type type_ecurve = { ecvcvt, ecvdump }; +const test_type type_ecurve = { ecvcvt, ecvdump }; static void eccvt(const char *p, dstr *d) {