Crypto++ 8.6 Free C++ class library of cryptographic schemes

Public Types | Public Member Functions | List of all members
DL_GroupParameters_ElGamal Class Reference

ElGamal encryption for safe interop. More...

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< ModExpPrecomputation, DL_FixedBasePrecomputationImpl< typename ModExpPrecomputation ::Element >, DL_GroupParameters_IntegerBased >
typedef ModExpPrecomputation | GroupPrecomputation
typedef ModExpPrecomputation ::Element | Element
typedef DL_FixedBasePrecomputationImpl< typename ModExpPrecomputation ::Element > | BasePrecomputation
Public Types inherited from DL_GroupParameters< Integer >
typedef Integer | Element

## Public Member Functions
Integer | GetMaxExponent () const
Public Member Functions inherited from DL_GroupParameters_GFP
bool | IsIdentity (const Integer &element) const
| Determines if an element is an identity. More...
void | SimultaneousExponentiate (Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const
| Exponentiates a base to multiple exponents. More...
bool | GetVoidValue (const char *name, const std::type_info &valueType, void *pValue) const
| Get a named value. More...
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. More...
void | AssignFrom (const NameValuePairs &source)
| Initialize or reinitialize this key. More...
const DL_FixedBasePrecomputation< Element > & | GetBasePrecomputation () const
DL_FixedBasePrecomputation< Element > & | AccessBasePrecomputation ()
| Retrieves the group precomputation. More...
const Integer & | GetModulus () const
| Retrieve the modulus for the group. More...
const Integer & | GetGenerator () const
| Retrieves a reference to the group generator. More...
void | SetModulusAndSubgroupGenerator (const Integer &p, const Integer &g)
| Set group parameters. More...
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< ModExpPrecomputation, DL_FixedBasePrecomputationImpl< typename ModExpPrecomputation ::Element >, DL_GroupParameters_IntegerBased >
const DL_GroupPrecomputation< Element > & | GetGroupPrecomputation () const
| Retrieves the group precomputation. More...
const DL_FixedBasePrecomputation< Element > & | GetBasePrecomputation () const
| Retrieves the group precomputation. More...
DL_FixedBasePrecomputation< Element > & | AccessBasePrecomputation ()
| Retrieves the group precomputation. More...
Public Member Functions inherited from DL_GroupParameters_IntegerBased
void | Initialize (const DL_GroupParameters_IntegerBased &params)
| Initialize a group parameters over integers. More...
void | Initialize (RandomNumberGenerator &rng, unsigned int pbits)
| Create a group parameters over integers. More...
void | Initialize (const Integer &p, const Integer &g)
| Initialize a group parameters over integers. More...
void | Initialize (const Integer &p, const Integer &q, const Integer &g)
| Initialize a group parameters over integers. More...
void | BERDecode (BufferedTransformation &bt)
| Decode this object from a BufferedTransformation. More...
void | DEREncode (BufferedTransformation &bt) const
| Encode this object into a BufferedTransformation. More...
void | GenerateRandom (RandomNumberGenerator &rng, const NameValuePairs &alg)
| Generate a random key. More...
const Integer & | GetSubgroupOrder () const
Integer | GetGroupOrder () const
bool | ValidateGroup (RandomNumberGenerator &rng, unsigned int level) const
| Check the group for errors. More...
bool | ValidateElement (unsigned int level, const Integer &element, const DL_FixedBasePrecomputation< Integer > *precomp) const
| Check the element for errors. More...
bool | FastSubgroupCheckAvailable () const
| Determine if subgroup membership check is fast. More...
void | EncodeElement (bool reversible, const Element &element, byte *encoded) const
| Encodes the element. More...
unsigned int | GetEncodedElementSize (bool reversible) const
| Retrieve the encoded element's size. More...
Integer | DecodeElement (const byte *encoded, bool checkForGroupMembership) const
| Decodes the element. More...
Integer | ConvertElementToInteger (const Element &element) const
| Converts an element to an Integer. More...
Integer | GetMaxExponent () const
| Retrieve the maximum exponent for the group. More...
OID | GetAlgorithmID () const
| Retrieve the OID of the algorithm. More...
virtual const Integer & | GetModulus () const =0
| Retrieve the modulus for the group. More...
void | SetSubgroupOrder (const Integer &q)
| Set subgroup order. More...
Public Member Functions inherited from ASN1CryptoMaterial< DL_GroupParameters< Integer > >
void | Save (BufferedTransformation &bt) const
| DER encode ASN.1 object. More...
void | Load (BufferedTransformation &bt)
| BER decode ASN.1 object. More...
Public Member Functions inherited from ASN1Object
virtual void | BEREncode (BufferedTransformation &bt) const
| Encode this object into a BufferedTransformation. More...
Public Member Functions inherited from DL_GroupParameters< Integer >
bool | Validate (RandomNumberGenerator &rng, unsigned int level) const
| Check this object for errors. More...
bool | GetVoidValue (const char *name, const std::type_info &valueType, void *pValue) const
| Get a named value. More...
bool | SupportsPrecomputation () const
| Determines whether the object supports precomputation. More...
void | Precompute (unsigned int precomputationStorage=16)
| Perform precomputation. More...
void | LoadPrecomputation (BufferedTransformation &storedPrecomputation)
| Retrieve previously saved precomputation. More...
void | SavePrecomputation (BufferedTransformation &storedPrecomputation) const
| Save precomputation for later use. More...
virtual const Element & | GetSubgroupGenerator () const
| Retrieves the subgroup generator. More...
virtual void | SetSubgroupGenerator (const Element &base)
| Sets the subgroup generator. More...
virtual Element | ExponentiateBase (const Integer &exponent) const
| Exponentiates the base. More...
virtual Element | ExponentiateElement (const Element &base, const Integer &exponent) const
| Exponentiates an element. More...
virtual const Integer & | GetSubgroupOrder () const=0
| Retrieves the subgroup order. More...
virtual Integer | GetMaxExponent () const=0
| Retrieves the maximum exponent for the group. More...
virtual Integer | GetGroupOrder () const
| Retrieves the order of the group. More...
virtual Integer | GetCofactor () const
| Retrieves the cofactor. More...
virtual bool | FastSubgroupCheckAvailable () const=0
virtual void | SimultaneousExponentiate (Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const=0
| Exponentiates a base to multiple exponents. More...
Public Member Functions inherited from GeneratableCryptoMaterial
void | GenerateRandomWithKeySize (RandomNumberGenerator &rng, unsigned int keySize)
| Generate a random key or crypto parameters. More...
Public Member Functions inherited from CryptoMaterial
virtual void | ThrowIfInvalid (RandomNumberGenerator &rng, unsigned int level) const
| Check this object for errors. More...
virtual bool | SupportsPrecomputation () const
| Determines whether the object supports precomputation. More...
void | DoQuickSanityCheck () const
| Perform a quick sanity check. More...
Public Member Functions inherited from NameValuePairs
template<class T >
bool | GetThisObject (T &object) const
| Get a copy of this object or subobject. More...
template<class T >
bool | GetThisPointer (T *&ptr) const
| Get a pointer to this object. More...
template<class T >
bool | GetValue (const char *name, T &value) const
| Get a named value. More...
template<class T >
T | GetValueWithDefault (const char *name, T defaultValue) const
| Get a named value. More...
CRYPTOPP_DLL std::string | GetValueNames () const
| Get a list of value names that can be retrieved. More...
CRYPTOPP_DLL bool | GetIntValue (const char *name, int &value) const
| Get a named value with type int. More...
CRYPTOPP_DLL int | GetIntValueWithDefault (const char *name, int defaultValue) const
| Get a named value with type int, with default. More...
CRYPTOPP_DLL bool | GetWord64Value (const char *name, word64 &value) const
| Get a named value with type word64. More...
CRYPTOPP_DLL word64 | GetWord64ValueWithDefault (const char *name, word64 defaultValue) const
| Get a named value with type word64, with default. More...
template<class T >
void | GetRequiredParameter (const char *className, const char *name, T &value) const
| Retrieves a required name/value pair. More...
CRYPTOPP_DLL void | GetRequiredIntParameter (const char *className, const char *name, int &value) const
| Retrieves a required name/value pair. More...

## Additional Inherited Members
Static Public Member Functions inherited from DL_GroupParameters_IntegerBased
static std::string | StaticAlgorithmNamePrefix ()
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. More...

## 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.

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

- gfpcrypt.h