8 #ifndef BOTAN_NUMBER_THEORY_H_
9 #define BOTAN_NUMBER_THEORY_H_
11 #include <botan/bigint.h>
15 class RandomNumberGenerator;
46 BigInt BOTAN_PUBLIC_API(2,0)
mul_sub(const BigInt& a,
77 BigInt BOTAN_PUBLIC_API(2,0)
square(const BigInt& x);
86 BigInt BOTAN_PUBLIC_API(2,0)
inverse_mod(const BigInt& x,
87 const BigInt& modulus);
97 const BigInt& modulus);
129 int32_t BOTAN_PUBLIC_API(2,0)
jacobi(const BigInt& a, const BigInt& n);
138 BigInt BOTAN_PUBLIC_API(2,0)
power_mod(const BigInt& b,
150 BigInt BOTAN_PUBLIC_API(2,0)
ressol(const BigInt& x, const BigInt& p);
175 bool BOTAN_PUBLIC_API(2,0)
is_prime(const BigInt& n,
176 RandomNumberGenerator& rng,
178 bool is_random = false);
211 const BigInt& coprime = 0,
213 size_t equiv_mod = 2,
226 RandomNumberGenerator& prime_test_rng,
228 const BigInt& coprime,
249 std::vector<uint8_t> BOTAN_PUBLIC_API(2,0)
251 BigInt& p_out, BigInt& q_out,
252 size_t pbits,
size_t qbits);
266 bool BOTAN_PUBLIC_API(2,0)
268 BigInt& p_out, BigInt& q_out,
269 size_t pbits,
size_t qbits,
270 const
std::vector<uint8_t>& seed,
281 extern const uint16_t BOTAN_PUBLIC_API(2,0)
PRIMES[];
const size_t PRIME_TABLE_SIZE
BigInt mul_add(const BigInt &a, const BigInt &b, const BigInt &c)
size_t low_zero_bits(const BigInt &n)
BigInt gcd(const BigInt &a, const BigInt &b)
BigInt power_mod(const BigInt &base, const BigInt &exp, const BigInt &mod)
BigInt inverse_euclid(const BigInt &n, const BigInt &mod)
BigInt mul_sub(const BigInt &a, const BigInt &b, const BigInt &c)
bool quick_check_prime(const BigInt &n, RandomNumberGenerator &rng)
#define BOTAN_PUBLIC_API(maj, min)
BigInt ct_inverse_mod_odd_modulus(const BigInt &n, const BigInt &mod)
BigInt normalized_montgomery_inverse(const BigInt &a, const BigInt &p)
bool is_prime(const BigInt &n, RandomNumberGenerator &rng, size_t prob, bool is_random)
BigInt ressol(const BigInt &x, const BigInt &p)
BigInt sub_mul(const BigInt &a, const BigInt &b, const BigInt &c)
bool generate_dsa_primes(RandomNumberGenerator &rng, BigInt &p, BigInt &q, size_t pbits, size_t qbits, const std::vector< uint8_t > &seed_c, size_t offset)
BigInt abs(const BigInt &n)
BigInt lcm(const BigInt &a, const BigInt &b)
bool verify_prime(const BigInt &n, RandomNumberGenerator &rng)
BigInt random_safe_prime(RandomNumberGenerator &rng, size_t bits)
BigInt is_perfect_square(const BigInt &C)
BigInt inverse_mod(const BigInt &n, const BigInt &mod)
BigInt square(const BigInt &x)
BigInt random_prime(RandomNumberGenerator &rng, size_t bits, const BigInt &coprime, size_t equiv, size_t modulo, size_t prob)
word monty_inverse(word a)
size_t almost_montgomery_inverse(BigInt &result, const BigInt &a, const BigInt &p)
BigInt generate_rsa_prime(RandomNumberGenerator &keygen_rng, RandomNumberGenerator &prime_test_rng, size_t bits, const BigInt &coprime, size_t prob)
int32_t jacobi(const BigInt &a, const BigInt &n)
bool check_prime(const BigInt &n, RandomNumberGenerator &rng)