8 #include <botan/elgamal.h> 9 #include <botan/numthry.h> 10 #include <botan/libstate.h> 11 #include <botan/keypair.h> 12 #include <botan/internal/workfactor.h> 83 const BigInt& p = mod_p.get_modulus();
92 BigInt a = powermod_g_p(k);
93 BigInt b = mod_p.multiply(m, powermod_y_p(k));
109 blinder =
Blinder(k, powermod_x_p(k), p);
115 const BigInt& p = mod_p.get_modulus();
117 const size_t p_bytes = p.
bytes();
119 if(msg_len != 2 * p_bytes)
123 BigInt b(msg + p_bytes, p_bytes);
128 a = blinder.blind(a);
void load_check(RandomNumberGenerator &rng) const
void binary_encode(byte buf[]) const
SecureVector< byte > encrypt(const byte msg[], size_t msg_len, RandomNumberGenerator &rng)
const BigInt & get_x() const
const BigInt & group_p() const
std::invalid_argument Invalid_Argument
static SecureVector< byte > encode(const BigInt &n, Base base=Binary)
ElGamal_Decryption_Operation(const ElGamal_PrivateKey &key)
bool check_key(RandomNumberGenerator &rng, bool) const
bool check_key(RandomNumberGenerator &rng, bool) const
endian little unaligned ok family x86< aliases > ia32 x86 ix86 i86pc x86pc bepc</aliases >< submodels > i386 i486 i586 i686 pentium2 pentium3 pentium4 pentium m prescott k6 athlon atom32</submodels >< submodel_aliases > pentium i586 pentiumpro i686 pentium_pro i686 pentium2 pentium2 pentiumii pentium2 pentium3 pentium3 pentiumiii pentium3 x86family5 i586 x86family6 i686 pentiumm pentium m intelpentiumm pentium m intelpentium4 pentium4 duron athlon athlon xp athlon k7 athlon p2 i686 p3 i686 p4 pentium4 intelcput2250 prescott intelcput2300 prescott intelcput2400 prescott intelcput2500 prescott intelcput2600 prescott intelcput2700 prescott</submodel_aliases >< isa_extn > pentium m
const BigInt & get_y() const
void randomize(RandomNumberGenerator &rng, size_t bitsize=0)
ElGamal_PrivateKey(const AlgorithmIdentifier &alg_id, const MemoryRegion< byte > &key_bits, RandomNumberGenerator &rng)
Library_State & global_state()
bool encryption_consistency_check(RandomNumberGenerator &rng, const Private_Key &key, const std::string &padding)
ElGamal_Encryption_Operation(const ElGamal_PublicKey &key)
BigInt inverse_mod(const BigInt &n, const BigInt &mod)
BigInt power_mod(const BigInt &base, const BigInt &exp, const BigInt &mod)
const BigInt & group_g() const
size_t dl_work_factor(size_t bits)
SecureVector< byte > decrypt(const byte msg[], size_t msg_len)
virtual void load_check(RandomNumberGenerator &rng) const