From ed22931396c81bd562f1ce7dc85a86ea4dd49cd2 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sat, 11 Feb 2006 15:21:43 +0000 Subject: [PATCH] dh-gen: Use new simultaneous prime search. I'm trying to expunge the old `safe prime' search. This seems to work now. --- dh-gen.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/dh-gen.c b/dh-gen.c index 6e77ea7..03995f3 100644 --- a/dh-gen.c +++ b/dh-gen.c @@ -29,6 +29,8 @@ /*----- Header files ------------------------------------------------------*/ +#include + #include "dh.h" #include "grand.h" #include "mp.h" @@ -71,15 +73,22 @@ int dh_gen(dh_param *dp, unsigned ql, unsigned pl, unsigned steps, grand *r, /* --- If @ql@ is zero, do the time consuming safe-prime thing --- */ if (!ql) { - pgen_safetestctx c; - - mp *m = mprand(MP_NEW, pl, r, 3); - dp->p = pgen("p", MP_NEW, m, event, ectx, steps, pgen_safestep, &c.c, - rabin_iters(pl), pgen_safetest, &c); + pgen_simulprime sp[2]; + pgen_simulctx ss; + + mp *m = mprand(MP_NEW, pl - 1, r, 1); + ss.step = MP_TWO; + sp[0].mul = MP_ONE; sp[0].add = MP_ZERO; sp[0].f = 0; + sp[1].mul = MP_TWO; sp[1].add = MP_ONE; sp[1].f = PGENF_KEEP; + ss.v = sp; ss.n = N(sp); + dp->q = pgen("p", MP_NEW, m, event, ectx, steps, pgen_simulstep, &ss, + rabin_iters(pl), pgen_simultest, &ss); mp_drop(m); - if (!dp->p) + if (!dp->q) { + mp_drop(sp[1].u.x); return (PGEN_ABORT); - dp->q = mp_lsr(MP_NEW, dp->p, 1); + } + dp->p = sp[1].u.x; dp->g = MP_FOUR; return (PGEN_DONE); } -- 2.11.0