- rc = pfilt_smallfactor(m);
- if (rc == PGEN_TRY) {
- rabin rn;
- grand *r = fibrand_create(0);
- unsigned n;
- mp *x = MP_NEW;
-
- r->ops->misc(r, GRAND_SEEDRAND, &rand_global);
- n = rabin_iters(mp_bits(m));
- rabin_create(&rn, m);
- do {
- x = mprand_range(x, m, r, 0);
- rc = rabin_test(&rn, x);
- n--;
- } while (n && rc == PGEN_PASS);
- rabin_destroy(&rn);
- mp_drop(x);
- r->ops->destroy(r);
- }
- if (rc != PGEN_FAIL)
- rc = 0;
- else
- rc = keycheck_report(kc, sev, "%s not prime", name);
+ if (pgen_primep(m, &rand_global)) rc = 0;
+ else rc = keycheck_report(kc, sev, "%s not prime", name);