Lines Matching defs:rnd
22 static int probable_prime(BIGNUM *rnd, int bits, int safe, prime_t *mods,
24 static int probable_prime_dh(BIGNUM *rnd, int bits, int safe, prime_t *mods,
474 * The probably prime is saved in |rnd|.
478 static int probable_prime(BIGNUM *rnd, int bits, int safe, prime_t *mods,
487 if (!BN_priv_rand_ex(rnd, bits, BN_RAND_TOP_TWO, BN_RAND_BOTTOM_ODD, 0,
490 if (safe && !BN_set_bit(rnd, 1))
492 /* we now have a random number 'rnd' to test. */
494 BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]);
503 * check that rnd is a prime and also that
504 * gcd(rnd-1,primes) == 1 (except for 2)
507 * we check only the primes up to sqrt(rnd)
510 && square(primes[i]) > BN_get_word(rnd) + delta)
520 if (!BN_add_word(rnd, delta))
522 if (BN_num_bits(rnd) != bits)
524 bn_check_top(rnd);
529 * Generate a random number |rnd| of |bits| bits that is probably prime
530 * and satisfies |rnd| % |add| == |rem| by sieving.
536 static int probable_prime_dh(BIGNUM *rnd, int bits, int safe, prime_t *mods,
554 if (!BN_rand_ex(rnd, bits, BN_RAND_TOP_ONE, BN_RAND_BOTTOM_ODD, 0, ctx))
557 /* we need ((rnd-rem) % add) == 0 */
559 if (!BN_mod(t1, rnd, add, ctx))
561 if (!BN_sub(rnd, rnd, t1))
564 if (!BN_add_word(rnd, safe ? 3u : 1u))
567 if (!BN_add(rnd, rnd, rem))
571 if (BN_num_bits(rnd) < bits
572 || BN_get_word(rnd) < (safe ? 5u : 3u)) {
573 if (!BN_add(rnd, rnd, add))
577 /* we now have a random number 'rnd' to test. */
579 BN_ULONG mod = BN_mod_word(rnd, (BN_ULONG)primes[i]);
587 /* check that rnd is a prime */
589 && square(primes[i]) > BN_get_word(rnd) + delta)
591 /* rnd mod p == 1 implies q = (rnd-1)/2 is divisible by p */
600 if (!BN_add_word(rnd, delta))
606 bn_check_top(rnd);