8 #ifndef BOTAN_NUMBER_THEORY_H__
9 #define BOTAN_NUMBER_THEORY_H__
11 #include <botan/bigint.h>
12 #include <botan/pow_mod.h>
13 #include <botan/rng.h>
24 BigInt BOTAN_DLL
mul_add(
const BigInt& a,
35 BigInt BOTAN_DLL
sub_mul(
const BigInt& a,
46 BigInt BOTAN_DLL
mul_sub(
const BigInt& a,
63 BigInt BOTAN_DLL
gcd(
const BigInt& x,
const BigInt& y);
71 BigInt BOTAN_DLL
lcm(
const BigInt& x,
const BigInt& y);
77 BigInt BOTAN_DLL
square(
const BigInt& x);
87 const BigInt& modulus);
119 int32_t BOTAN_DLL
jacobi(
const BigInt& a,
129 BigInt BOTAN_DLL
power_mod(
const BigInt& b,
141 BigInt BOTAN_DLL
ressol(
const BigInt& x,
const BigInt& p);
166 bool BOTAN_DLL
is_prime(
const BigInt& n,
167 RandomNumberGenerator& rng,
169 bool is_random =
false);
191 BigInt BOTAN_DLL
random_prime(RandomNumberGenerator& rng,
192 size_t bits,
const BigInt& coprime = 1,
193 size_t equiv = 1,
size_t equiv_mod = 2);
213 std::vector<uint8_t> BOTAN_DLL
215 BigInt& p_out, BigInt& q_out,
216 size_t pbits,
size_t qbits);
232 BigInt& p_out, BigInt& q_out,
233 size_t pbits,
size_t qbits,
234 const std::vector<uint8_t>& seed,
245 extern const uint16_t BOTAN_DLL
PRIMES[];
const size_t PRIME_TABLE_SIZE
BigInt normalized_montgomery_inverse(const BigInt &a, const BigInt &p)
const uint16_t BOTAN_DLL PRIMES[]
bool is_prime(const BigInt &n, RandomNumberGenerator &rng, size_t prob, bool is_random)
BigInt gcd(const BigInt &a, const BigInt &b)
bool quick_check_prime(const BigInt &n, RandomNumberGenerator &rng)
BigInt BOTAN_DLL ressol(const BigInt &x, const BigInt &p)
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)
size_t almost_montgomery_inverse(BigInt &result, const BigInt &a, const BigInt &p)
bool verify_prime(const BigInt &n, RandomNumberGenerator &rng)
BigInt ct_inverse_mod_odd_modulus(const BigInt &n, const BigInt &mod)
BigInt random_safe_prime(RandomNumberGenerator &rng, size_t bits)
size_t low_zero_bits(const BigInt &n)
BigInt inverse_mod(const BigInt &n, const BigInt &mod)
BigInt sub_mul(const BigInt &a, const BigInt &b, const BigInt &c)
BigInt square(const BigInt &x)
BigInt power_mod(const BigInt &base, const BigInt &exp, const BigInt &mod)
word monty_inverse(word input)
int32_t jacobi(const BigInt &a, const BigInt &n)
BigInt lcm(const BigInt &a, const BigInt &b)
BigInt mul_add(const BigInt &a, const BigInt &b, const BigInt &c)
BigInt mul_sub(const BigInt &a, const BigInt &b, const BigInt &c)
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)