8 #include <botan/pow_mod.h>
9 #include <botan/internal/def_powm.h>
29 m_core = other.m_core->
copy();
43 m_core = other.m_core->
copy();
70 if(n.
is_odd() && disable_monty ==
false)
120 static const size_t wsize[][2] = {
133 for(
size_t j = 0; wsize[j][0]; ++j)
135 if(exp_bits >= wsize[j][0])
137 window_bits += wsize[j][1];
162 const size_t b_bits = b.
bits();
163 const size_t n_bits = n.
bits();
165 if(b_bits < n_bits / 32)
167 if(b_bits > n_bits / 4)
178 const size_t e_bits = e.bits();
179 const size_t n_bits = n.bits();
181 if(e_bits < n_bits / 32)
183 if(e_bits > n_bits / 4)
virtual void set_exponent(const BigInt &)=0
void set_modulus(const BigInt &modulus, Usage_Hints=NO_HINTS, bool disable_montgomery_arith=false) const
virtual void set_base(const BigInt &)=0
virtual BigInt execute() const =0
Power_Mod(const BigInt &modulus=0, Usage_Hints hints=NO_HINTS, bool disable_montgomery_arith=false)
Fixed_Base_Power_Mod()=default
virtual Modular_Exponentiator * copy() const =0
Power_Mod & operator=(const Power_Mod &)
void set_exponent(const BigInt &exponent) const
static size_t window_bits(size_t exp_bits, size_t base_bits, Power_Mod::Usage_Hints hints)
Fixed_Exponent_Power_Mod()=default
void set_base(const BigInt &base) const