8 #include <botan/numthry.h>     9 #include <botan/parsing.h>    18                     size_t bits, 
const BigInt& coprime,
    19                     size_t equiv, 
size_t modulo)
    33    if(modulo % 2 == 1 || modulo == 0)
    35    if(equiv >= modulo || equiv % 2 == 0)
    47       if(p % modulo != equiv)
    48          p += (modulo - p % modulo) + equiv;
    53       for(
size_t j = 0; j != sieve.
size(); ++j)
    59          if(counter == 4096 || p.
bits() > bits)
    62          bool passes_sieve = 
true;
    69          for(
size_t j = 0; j != sieve.
size(); ++j)
    71             sieve[j] = (sieve[j] + modulo) % 
PRIMES[j];
    76          if(!passes_sieve || 
gcd(p - 1, coprime) != 1)
 const size_t PRIME_TABLE_SIZE
BigInt gcd(const BigInt &a, const BigInt &b)
std::invalid_argument Invalid_Argument
BigInt random_safe_prime(RandomNumberGenerator &rng, size_t bits)
std::string to_string(u64bit n, size_t min_len)
const u16bit BOTAN_DLL PRIMES[]
BigInt random_prime(RandomNumberGenerator &rng, size_t bits, const BigInt &coprime, size_t equiv, size_t modulo)
bool check_prime(const BigInt &n, RandomNumberGenerator &rng)