Crypto++ 8.8
Free C++ class library of cryptographic schemes
DL_GroupParameters_ElGamal Class Reference

ElGamal encryption for safe interop. More...

#include <gfpcrypt.h>

Inheritance diagram for DL_GroupParameters_ElGamal:

Public Types

typedef NoCofactorMultiplication DefaultCofactorOption
Public Types inherited from DL_GroupParameters_GFP_DefaultSafePrime
typedef NoCofactorMultiplication DefaultCofactorOption
Public Types inherited from DL_GroupParameters_IntegerBasedImpl< ModExpPrecomputation >
typedef ModExpPrecomputation::Element Element
Public Types inherited from DL_GroupParametersImpl< GROUP_PRECOMP, BASE_PRECOMP, BASE >
typedef GROUP_PRECOMP GroupPrecomputation
typedef GROUP_PRECOMP::Element Element
typedef BASE_PRECOMP BasePrecomputation
Public Types inherited from DL_GroupParameters< T >
typedef T Element

Public Member Functions

Integer GetMaxExponent () const
 Retrieves the maximum exponent for the group.
Public Member Functions inherited from DL_GroupParameters_GFP
bool IsIdentity (const Integer &element) const
 Determines if an element is an identity.
void SimultaneousExponentiate (Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const
 Exponentiates a base to multiple exponents.
bool GetVoidValue (const char *name, const std::type_info &valueType, void *pValue) const
 Get a named value.
Element MultiplyElements (const Element &a, const Element &b) const
Element CascadeExponentiate (const Element &element1, const Integer &exponent1, const Element &element2, const Integer &exponent2) const
Public Member Functions inherited from DL_GroupParameters_IntegerBasedImpl< ModExpPrecomputation >
bool GetVoidValue (const char *name, const std::type_info &valueType, void *pValue) const
 Get a named value.
void AssignFrom (const NameValuePairs &source)
 Assign values to this object.
const DL_FixedBasePrecomputation< Element > & GetBasePrecomputation () const
 Retrieves the group precomputation.
DL_FixedBasePrecomputation< Element > & AccessBasePrecomputation ()
 Retrieves the group precomputation.
const IntegerGetModulus () const
 Retrieve the modulus for the group.
const IntegerGetGenerator () const
 Retrieves a reference to the group generator.
void SetModulusAndSubgroupGenerator (const Integer &p, const Integer &g)
bool operator== (const DL_GroupParameters_IntegerBasedImpl< ModExpPrecomputation, DL_FixedBasePrecomputationImpl< typename ModExpPrecomputation::Element > > &rhs) const
bool operator!= (const DL_GroupParameters_IntegerBasedImpl< ModExpPrecomputation, DL_FixedBasePrecomputationImpl< typename ModExpPrecomputation::Element > > &rhs) const
Public Member Functions inherited from DL_GroupParametersImpl< GROUP_PRECOMP, BASE_PRECOMP, BASE >
const DL_GroupPrecomputation< Element > & GetGroupPrecomputation () const
 Retrieves the group precomputation.
const DL_FixedBasePrecomputation< Element > & GetBasePrecomputation () const
 Retrieves the group precomputation.
DL_FixedBasePrecomputation< Element > & AccessBasePrecomputation ()
 Retrieves the group precomputation.
Public Member Functions inherited from DL_GroupParameters< T >
bool Validate (RandomNumberGenerator &rng, unsigned int level) const
 Check this object for errors.
bool SupportsPrecomputation () const
 Determines whether the object supports precomputation.
void Precompute (unsigned int precomputationStorage=16)
 Perform precomputation.
void LoadPrecomputation (BufferedTransformation &storedPrecomputation)
 Retrieve previously saved precomputation.
void SavePrecomputation (BufferedTransformation &storedPrecomputation) const
 Save precomputation for later use.
virtual const Element & GetSubgroupGenerator () const
 Retrieves the subgroup generator.
virtual void SetSubgroupGenerator (const Element &base)
 Sets the subgroup generator.
virtual Element ExponentiateBase (const Integer &exponent) const
 Exponentiates the base.
virtual Element ExponentiateElement (const Element &base, const Integer &exponent) const
 Exponentiates an element.
virtual const IntegerGetSubgroupOrder () const =0
 Retrieves the subgroup order.
virtual Integer GetGroupOrder () const
 Retrieves the order of the group.
virtual Integer GetCofactor () const
 Retrieves the cofactor.
virtual unsigned int GetEncodedElementSize (bool reversible) const =0
 Retrieves the encoded element's size.
virtual void EncodeElement (bool reversible, const Element &element, byte *encoded) const =0
 Encodes the element.
virtual Element DecodeElement (const byte *encoded, bool checkForGroupMembership) const =0
 Decodes the element.
virtual Integer ConvertElementToInteger (const Element &element) const =0
 Converts an element to an Integer.
virtual bool ValidateGroup (RandomNumberGenerator &rng, unsigned int level) const =0
 Check the group for errors.
virtual bool ValidateElement (unsigned int level, const Element &element, const DL_FixedBasePrecomputation< Element > *precomp) const =0
 Check the element for errors.
virtual bool FastSubgroupCheckAvailable () const =0
virtual bool IsIdentity (const Element &element) const =0
 Determines if an element is an identity.
virtual void SimultaneousExponentiate (Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const =0
 Exponentiates a base to multiple exponents.
Public Member Functions inherited from GeneratableCryptoMaterial
virtual void GenerateRandom (RandomNumberGenerator &rng, const NameValuePairs &params=g_nullNameValuePairs)
 Generate a random key or crypto parameters.
void GenerateRandomWithKeySize (RandomNumberGenerator &rng, unsigned int keySize)
 Generate a random key or crypto parameters.
Public Member Functions inherited from CryptoMaterial
virtual void ThrowIfInvalid (RandomNumberGenerator &rng, unsigned int level) const
 Check this object for errors.
virtual void Save (BufferedTransformation &bt) const
 Saves a key to a BufferedTransformation.
virtual void Load (BufferedTransformation &bt)
 Loads a key from a BufferedTransformation.
void DoQuickSanityCheck () const
 Perform a quick sanity check.
Public Member Functions inherited from NameValuePairs
template<class T>
bool GetThisObject (T &object) const
 Get a copy of this object or subobject.
template<class T>
bool GetThisPointer (T *&ptr) const
 Get a pointer to this object.
template<class T>
bool GetValue (const char *name, T &value) const
 Get a named value.
template<class T>
GetValueWithDefault (const char *name, T defaultValue) const
 Get a named value.
CRYPTOPP_DLL std::string GetValueNames () const
 Get a list of value names that can be retrieved.
CRYPTOPP_DLL bool GetIntValue (const char *name, int &value) const
 Get a named value with type int.
CRYPTOPP_DLL int GetIntValueWithDefault (const char *name, int defaultValue) const
 Get a named value with type int, with default.
CRYPTOPP_DLL bool GetWord64Value (const char *name, word64 &value) const
 Get a named value with type word64.
CRYPTOPP_DLL word64 GetWord64ValueWithDefault (const char *name, word64 defaultValue) const
 Get a named value with type word64, with default.
template<class T>
void GetRequiredParameter (const char *className, const char *name, T &value) const
 Retrieves a required name/value pair.
CRYPTOPP_DLL void GetRequiredIntParameter (const char *className, const char *name, int &value) const
 Retrieves a required name/value pair.

Additional Inherited Members

Static Public Member Functions inherited from NameValuePairs
static CRYPTOPP_DLL void ThrowIfTypeMismatch (const char *name, const std::type_info &stored, const std::type_info &retrieving)
 Ensures an expected name and type is present.

Detailed Description

ElGamal encryption for safe interop.

See also
On the (in)security of ElGamal in OpenPGP, Issue 1059, CVE-2021-40530
Since
Crypto++ 8.6

Definition at line 291 of file gfpcrypt.h.

Member Typedef Documentation

◆ DefaultCofactorOption

Constructor & Destructor Documentation

◆ ~DL_GroupParameters_ElGamal()

virtual DL_GroupParameters_ElGamal::~DL_GroupParameters_ElGamal ( )
inlinevirtual

Definition at line 296 of file gfpcrypt.h.

Member Function Documentation

◆ GetMaxExponent()

Integer DL_GroupParameters_ElGamal::GetMaxExponent ( ) const
inlinevirtual

Retrieves the maximum exponent for the group.

Returns
the maximum exponent for the group

Implements DL_GroupParameters< T >.

Definition at line 298 of file gfpcrypt.h.


The documentation for this class was generated from the following file: