8 #include <botan/pow_mod.h>
9 #include <botan/libstate.h>
10 #include <botan/engine.h>
32 core = other.core->
copy();
43 core = other.core->
copy();
69 core = engine->mod_exp(n, hints);
76 throw Lookup_Error(
"Power_Mod: Unable to find a working engine");
122 static const size_t wsize[][2] = {
135 for(
size_t j = 0; wsize[j][0]; ++j)
137 if(exp_bits >= wsize[j][0])
139 window_bits += wsize[j][1];
164 const size_t b_bits = b.
bits();
165 const size_t n_bits = n.
bits();
167 if(b_bits < n_bits / 32)
169 if(b_bits > n_bits / 4)
180 const size_t e_bits = e.bits();
181 const size_t n_bits = n.bits();
183 if(e_bits < n_bits / 32)
185 if(e_bits > n_bits / 4)
virtual void set_exponent(const BigInt &)=0
virtual void set_base(const BigInt &)=0
std::invalid_argument Invalid_Argument
virtual BigInt execute() const =0
Fixed_Exponent_Power_Mod()
virtual Modular_Exponentiator * copy() const =0
Power_Mod & operator=(const Power_Mod &)
Library_State & global_state()
void set_base(const BigInt &) const
static size_t window_bits(size_t exp_bits, size_t base_bits, Power_Mod::Usage_Hints hints)
Power_Mod(const BigInt &=0, Usage_Hints=NO_HINTS)
void set_exponent(const BigInt &) const
void set_modulus(const BigInt &, Usage_Hints=NO_HINTS) const