Crypto++  8.0
Free C++ class library of cryptographic schemes
Public Types | Public Member Functions | Static Public Member Functions | List of all members
DL_GroupParameters_DSA Class Reference

DSA group parameters. More...

+ Inheritance diagram for DL_GroupParameters_DSA:

Public Types

enum  { MIN_PRIME_LENGTH = 1024, MAX_PRIME_LENGTH = 3072, PRIME_LENGTH_MULTIPLE = 1024 }
 
- 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 ::ElementBasePrecomputation
 
- Public Types inherited from DL_GroupParameters< Integer >
typedef Integer Element
 

Public Member Functions

bool ValidateGroup (RandomNumberGenerator &rng, unsigned int level) const
 
void GenerateRandom (RandomNumberGenerator &rng, const NameValuePairs &alg)
 
- 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
 
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)
 Assign values to this object. More...
 
const DL_FixedBasePrecomputation< Element > & GetBasePrecomputation () const
 Retrieves the group precomputation. More...
 
DL_FixedBasePrecomputation< Element > & AccessBasePrecomputation ()
 Retrieves the group precomputation. More...
 
const IntegerGetModulus () const
 
const IntegerGetGenerator () const
 
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< 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...
 
const IntegerGetSubgroupOrder () const
 Retrieves the subgroup order. More...
 
Integer GetGroupOrder () const
 Retrieves the order of the group. More...
 
bool ValidateElement (unsigned int level, const Integer &element, const DL_FixedBasePrecomputation< Integer > *precomp) const
 Check the element for errors. More...
 
bool FastSubgroupCheckAvailable () const
 
void EncodeElement (bool reversible, const Element &element, byte *encoded) const
 
unsigned int GetEncodedElementSize (bool reversible) const
 Retrieves 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
 Retrieves the maximum exponent for the group. More...
 
OID GetAlgorithmID () const
 
void SetSubgroupOrder (const Integer &q)
 
- 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 ElementGetSubgroupGenerator () 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 Integer GetCofactor () const
 Retrieves the cofactor. More...
 
virtual void EncodeElement (bool reversible, const Element &element, byte *encoded) const=0
 Encodes the element. More...
 
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...
 
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 >
GetValueWithDefault (const char *name, T defaultValue) const
 Get a named value. More...
 
std::string GetValueNames () const
 Get a list of value names that can be retrieved. More...
 
bool GetIntValue (const char *name, int &value) const
 Get a named value with type int. More...
 
int GetIntValueWithDefault (const char *name, int defaultValue) const
 Get a named value with type int, with default. More...
 
bool GetWord64Value (const char *name, word64 &value) const
 Get a named value with type word64. More...
 
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...
 
void GetRequiredIntParameter (const char *className, const char *name, int &value) const
 Retrieves a required name/value pair. More...
 

Static Public Member Functions

static bool IsValidPrimeLength (unsigned int pbits)
 
- Static Public Member Functions inherited from DL_GroupParameters_IntegerBased
static std::string StaticAlgorithmNamePrefix ()
 
- Static Public Member Functions inherited from NameValuePairs
static 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

DSA group parameters.

These are GF(p) group parameters that are allowed by the DSA standard

See also
DL_Keys_DSA

Definition at line 601 of file gfpcrypt.h.

Member Function Documentation

◆ ValidateGroup()

bool DL_GroupParameters_DSA::ValidateGroup ( RandomNumberGenerator rng,
unsigned int  level 
) const
virtual

also checks that the lengths of p and q are allowed by the DSA standard

Reimplemented from DL_GroupParameters_IntegerBased.

Definition at line 70 of file gfpcrypt.cpp.

◆ GenerateRandom()

void DL_GroupParameters_DSA::GenerateRandom ( RandomNumberGenerator rng,
const NameValuePairs alg 
)
virtual

parameters: (ModulusSize), or (Modulus, SubgroupOrder, SubgroupGenerator)

ModulusSize must be between DSA::MIN_PRIME_LENGTH and DSA::MAX_PRIME_LENGTH, and divisible by DSA::PRIME_LENGTH_MULTIPLE

Reimplemented from DL_GroupParameters_IntegerBased.

Definition at line 37 of file gfpcrypt.cpp.


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