It's unnecessary. It was a bad idea because it biases q quite heavily,
but now `strongprime' generates primes in the right interval so that
getting the right bit length isn't a problem.
pgen_jumpctx j;
pgen_gcdstepctx g;
unsigned nb = nbits/2;
pgen_jumpctx j;
pgen_gcdstepctx g;
unsigned nb = nbits/2;
- mp *x = MP_NEWSEC, *t = MP_NEW;
/* --- Generate @p@ --- */
/* --- Generate @p@ --- */
g.r = mp_lsr(MP_NEW, bp->p, 1);
g.g = MP_NEW;
g.max = MP_ONE;
g.r = mp_lsr(MP_NEW, bp->p, 1);
g.g = MP_NEW;
g.max = MP_ONE;
- t = mp_lsl(t, MP_ONE, nbits - 1);
- mp_div(&t, 0, t, bp->p);
- if (MP_CMP(x, <, t)) x = mp_leastcongruent(x, t, x, g.jp.m);
bp->q = pgen("q", MP_NEWSEC, x, event, ectx, n, pgen_gcdstep, &g,
rabin_iters(nb), pgen_test, &rb);
pfilt_destroy(&g.jp);
mp_drop(g.r);
mp_drop(g.g);
bp->q = pgen("q", MP_NEWSEC, x, event, ectx, n, pgen_gcdstep, &g,
rabin_iters(nb), pgen_test, &rb);
pfilt_destroy(&g.jp);
mp_drop(g.r);
mp_drop(g.g);
if (!bp->q) goto fail_q;
/* --- Compute @n@ --- */
if (!bp->q) goto fail_q;
/* --- Compute @n@ --- */
- mp *t = MP_NEW, *u = MP_NEW;
rabin rb;
if ((q = strongprime_setup("q", MP_NEWSEC, &g.jp, nbits / 2,
r, n, event, ectx)) == 0)
goto fail_q;
rabin rb;
if ((q = strongprime_setup("q", MP_NEWSEC, &g.jp, nbits / 2,
r, n, event, ectx)) == 0)
goto fail_q;
- t = mp_lsl(t, MP_ONE, nbits - 1);
- mp_div(&t, &u, t, rp->p);
- if (!MP_ZEROP(u)) t = mp_add(t, t, MP_ONE);
- if (MP_CMP(q, <, t)) q = mp_leastcongruent(q, t, q, g.jp.m);
- mp_drop(t);
g.r = mp_lsr(MP_NEW, rp->p, 1);
g.g = MP_NEW;
g.r = mp_lsr(MP_NEW, rp->p, 1);
g.g = MP_NEW;