X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/f46efa79cd2bb9adc81541f1218965f85a6b2eef..1589affab225db500965e2cb869c534d6860e6bd:/f-niceprime.c diff --git a/f-niceprime.c b/f-niceprime.c index c34e24e..4ffc028 100644 --- a/f-niceprime.c +++ b/f-niceprime.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: f-niceprime.c,v 1.1 2004/03/27 00:04:46 mdw Exp $ + * $Id: f-niceprime.c,v 1.3 2004/04/01 12:50:09 mdw Exp $ * * Prime fields with efficient reduction for special-form primes * @@ -30,6 +30,16 @@ /*----- Revision history --------------------------------------------------* * * $Log: f-niceprime.c,v $ + * Revision 1.3 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.2 2004/03/27 17:54:11 mdw + * Standard curves and curve checking. + * * Revision 1.1 2004/03/27 00:04:46 mdw * Implement efficient reduction for pleasant-looking primes. * @@ -180,7 +190,7 @@ static mp *fhlv(field *ff, mp *d, mp *x) static field_ops fops = { FTY_PRIME, "niceprime", - fdestroy, frand, + fdestroy, frand, field_stdsamep, freduce, field_id, fzerop, fneg, fadd, fsub, fmul, fsqr, finv, freduce, fsqrt, 0, @@ -203,7 +213,10 @@ field *field_niceprime(mp *p) f->f.ops = &fops; f->f.zero = MP_ZERO; f->f.one = MP_ONE; + f->f.nbits = mp_bits(p); + f->f.noctets = (f->f.nbits + 7) >> 3; mpreduce_create(&f->r, p); + f->f.m = f->r.p; return (&f->f); }