X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/052b36d05a622a93733b735acce2de865b14627b..4b536f423c90ba7ca41d3f95f31b17729152a403:/dsa-gen.c diff --git a/dsa-gen.c b/dsa-gen.c index 40454d8..2d89115 100644 --- a/dsa-gen.c +++ b/dsa-gen.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: dsa-gen.c,v 1.5 2000/02/12 18:21:02 mdw Exp $ + * $Id: dsa-gen.c,v 1.7 2000/08/15 21:45:05 mdw Exp $ * * Generate DSA shared parameters * @@ -30,6 +30,14 @@ /*----- Revision history --------------------------------------------------* * * $Log: dsa-gen.c,v $ + * Revision 1.7 2000/08/15 21:45:05 mdw + * Use the new trial division equipment in pfilt. This gives a 10% + * performance improvement in dsa-gen.t. + * + * Revision 1.6 2000/07/29 10:00:14 mdw + * Rename `dsa_seed' to `dsa_gen' for consistency with other parameter- + * generation interfaces. + * * Revision 1.5 2000/02/12 18:21:02 mdw * Overhaul of key management (again). * @@ -96,15 +104,7 @@ static int next(pgen_event *ev, dsa_stepctx *d) /* --- Do the trial division --- */ - { - mp *g = MP_NEW; - mp_gcd(&g, 0, 0, m, primorial); - if (MP_CMP(g, ==, MP_ONE) || MP_CMP(g, ==, m)) - rc = PGEN_TRY; - else - rc = PGEN_FAIL; - mp_drop(g); - } + rc = pfilt_smallfactor(m); /* --- Return the result --- */ @@ -130,7 +130,7 @@ int dsa_step(int rq, pgen_event *ev, void *p) /*----- Glue code ---------------------------------------------------------*/ -/* --- @dsa_seed@ --- * +/* --- @dsa_gen@ --- * * * Arguments: @dsa_param *dp@ = where to store parameters * @unsigned ql@ = length of @q@ in bits @@ -158,8 +158,8 @@ int dsa_step(int rq, pgen_event *ev, void *p) * %$l$%. Neither limitation applies to this implementation. */ -int dsa_seed(dsa_param *dp, unsigned ql, unsigned pl, unsigned steps, - const void *k, size_t sz, pgen_proc *event, void *ectx) +int dsa_gen(dsa_param *dp, unsigned ql, unsigned pl, unsigned steps, + const void *k, size_t sz, pgen_proc *event, void *ectx) { dsa_stepctx s; prim_ctx p; @@ -199,7 +199,7 @@ int dsa_seed(dsa_param *dp, unsigned ql, unsigned pl, unsigned steps, mpmont_create(&p.mm, dp->p); qc = MP_NEW; mp_div(&qc, 0, dp->p, dp->q); i = 0; - p.f = qc; + p.exp = qc; p.n = 0; if ((dp->g = pgen("g", MP_NEW, MP_NEW, event, ectx, 0, prim_step, &i, 1, prim_test, &p)) == 0) @@ -239,7 +239,7 @@ static int verify(dstr *v) int ok = 1; int rc; - rc = dsa_seed(&dp, 160, l, 1, v[0].buf, v[0].len, pgen_evspin, 0); + rc = dsa_gen(&dp, 160, l, 1, v[0].buf, v[0].len, pgen_evspin, 0); if (rc || MP_CMP(q, !=, dp.q) || MP_CMP(p, !=, dp.p) || MP_CMP(g, !=, dp.g)) { fputs("\n*** gen failed", stderr); @@ -261,7 +261,7 @@ static int verify(dstr *v) if (!rc) { mp_drop(dp.q); mp_drop(dp.p); mp_drop(dp.g); } - assert(mparena_count(MPARENA_GLOBAL) == 1); /* Primorial! */ + assert(mparena_count(MPARENA_GLOBAL) == 0); return (ok); }