Crypto++
5.6.3
Free C++ class library of cryptographic schemes
|
DSA group parameters, these are GF(p) group parameters that are allowed by the DSA standard. More...
Public Types | |
enum | { MIN_PRIME_LENGTH = 1024, MAX_PRIME_LENGTH = 3072, PRIME_LENGTH_MULTIPLE = 1024 } |
typedef ModExpPrecomputation::Element | Element |
typedef ModExpPrecomputation | GroupPrecomputation |
typedef DL_FixedBasePrecomputationImpl< typename ModExpPrecomputation::Element > | BasePrecomputation |
Public Member Functions | |
bool | ValidateGroup (RandomNumberGenerator &rng, unsigned int level) const |
void | GenerateRandom (RandomNumberGenerator &rng, const NameValuePairs &alg) |
bool | IsIdentity (const Integer &element) const |
void | SimultaneousExponentiate (Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const |
virtual void | SimultaneousExponentiate (Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const =0 |
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 |
void | AssignFrom (const NameValuePairs &source) |
Assign values to this object. More... | |
const DL_FixedBasePrecomputation< Element > & | GetBasePrecomputation () const |
DL_FixedBasePrecomputation< Element > & | AccessBasePrecomputation () |
const Integer & | GetModulus () const |
const Integer & | GetGenerator () 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 |
const DL_GroupPrecomputation< Element > & | GetGroupPrecomputation () const |
void | Initialize (const DL_GroupParameters_IntegerBased ¶ms) |
void | Initialize (RandomNumberGenerator &rng, unsigned int pbits) |
void | Initialize (const Integer &p, const Integer &g) |
void | Initialize (const Integer &p, const Integer &q, const Integer &g) |
void | BERDecode (BufferedTransformation &bt) |
Decode this object from a BufferedTransformation. More... | |
void | DEREncode (BufferedTransformation &bt) const |
Encode this object into a BufferedTransformation. More... | |
const Integer & | GetSubgroupOrder () const |
Integer | GetGroupOrder () const |
bool | ValidateElement (unsigned int level, const Integer &element, const DL_FixedBasePrecomputation< Integer > *precomp) const |
bool | FastSubgroupCheckAvailable () const |
void | EncodeElement (bool reversible, const Element &element, byte *encoded) const |
unsigned int | GetEncodedElementSize (bool reversible) const |
Integer | DecodeElement (const byte *encoded, bool checkForGroupMembership) const |
Integer | ConvertElementToInteger (const Element &element) const |
Integer | GetMaxExponent () const |
OID | GetAlgorithmID () const |
void | SetSubgroupOrder (const Integer &q) |
void | Save (BufferedTransformation &bt) const |
void | Load (BufferedTransformation &bt) |
virtual void | BEREncode (BufferedTransformation &bt) const |
Encode this object into a BufferedTransformation. More... | |
bool | Validate (RandomNumberGenerator &rng, unsigned int level) const |
Check this object for errors. 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 | |
void | SavePrecomputation (BufferedTransformation &storedPrecomputation) const |
save precomputation for later use | |
virtual const Element & | GetSubgroupGenerator () const |
virtual void | SetSubgroupGenerator (const Element &base) |
virtual Element | ExponentiateBase (const Integer &exponent) const |
virtual Element | ExponentiateElement (const Element &base, const Integer &exponent) const |
virtual Integer | GetCofactor () const |
void | GenerateRandomWithKeySize (RandomNumberGenerator &rng, unsigned int keySize) |
Generate a random key or crypto parameters. More... | |
virtual void | ThrowIfInvalid (RandomNumberGenerator &rng, unsigned int level) const |
Check this object for errors. More... | |
void | DoQuickSanityCheck () const |
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... | |
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... | |
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 std::string | StaticAlgorithmNamePrefix () |
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... | |
DSA group parameters, these are GF(p) group parameters that are allowed by the DSA standard.
Definition at line 435 of file gfpcrypt.h.
|
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.
References Integer::BitCount(), BitsToBytes(), HashTransformation::DigestSize(), Integer::Encode(), Integer::One(), SaturatingSubtract(), STDMIN(), HashTransformation::TruncatedFinal(), VerifyPrime(), and Integer::Zero().
|
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.
References DL_GroupParameters_IntegerBased::GenerateRandom(), NameValuePairs::GetIntValue(), NameValuePairs::GetValue(), NameValuePairs::GetValueWithDefault(), MakeParameters(), and Name::SubgroupOrderSize().
|
inlinevirtualinherited |
Get a named value.
name | the name of the object or value to retrieve |
valueType | reference to a variable that receives the value |
pValue | void pointer to a variable that receives the value |
GetVoidValue() retrives the value of name if it exists.
Reimplemented from DL_GroupParameters_IntegerBased.
Definition at line 152 of file gfpcrypt.h.
|
inlinevirtualinherited |
Assign values to this object.
This function can be used to create a public key from a private key.
Reimplemented from DL_GroupParameters_IntegerBased.
Definition at line 116 of file gfpcrypt.h.
|
virtualinherited |
Decode this object from a BufferedTransformation.
bt | BufferedTransformation object |
Uses Basic Encoding Rules (BER)
Implements ASN1Object.
Definition at line 230 of file gfpcrypt.cpp.
References Integer::BERDecode().
|
virtualinherited |
Encode this object into a BufferedTransformation.
bt | BufferedTransformation object |
Uses Distinguished Encoding Rules (DER)
Implements ASN1Object.
Definition at line 249 of file gfpcrypt.cpp.
References Integer::DEREncode().
|
inlinevirtualinherited |
Encode this object into a BufferedTransformation.
bt | BufferedTransformation object |
Uses Basic Encoding Rules (BER).
This may be useful if DEREncode() would be too inefficient.
Definition at line 2647 of file cryptlib.h.
|
inlinevirtualinherited |
Check this object for errors.
rng | a RandomNumberGenerator for objects which use randomized testing |
level | the level of thoroughness |
There are four levels of thoroughness:
Level 0 does not require a RandomNumberGenerator. A NullRNG() can be used for level 0.
Level 1 may not check for weak keys and such.
Levels 2 and 3 are recommended.
Implements CryptoMaterial.
|
inlinevirtualinherited |
Determines whether the object supports precomputation.
Reimplemented from CryptoMaterial.
|
inlinevirtualinherited |
Perform precomputation.
precomputationStorage | the suggested number of objects for the precompute table |
NotImplemented |
The exact semantics of Precompute() varies, but it typically means calculate a table of n objects that can be used later to speed up computation.
If a derived class does not override Precompute, then the base class throws NotImplemented.
Reimplemented from CryptoMaterial.
|
inherited |
Generate a random key or crypto parameters.
rng | a RandomNumberGenerator to produce keying material |
keySize | the size of the key, in bits |
KeyingErr | if a key can't be generated or algorithm parameters are invalid |
GenerateRandomWithKeySize calls GenerateRandom with a NameValuePairs object with only "KeySize"
Definition at line 771 of file cryptlib.cpp.
References MakeParameters().
Referenced by FixedRNG::GenerateBlock().
|
inlinevirtualinherited |
Check this object for errors.
rng | a RandomNumberGenerator for objects which use randomized testing |
level | the level of thoroughness |
InvalidMaterial |
Internally, ThrowIfInvalid() calls Validate() and throws InvalidMaterial if validation fails.
Definition at line 1938 of file cryptlib.h.
|
inlineinherited |
Get a copy of this object or subobject.
T | class or type |
object | reference to a variable that receives the value |
Definition at line 297 of file cryptlib.h.
Referenced by DL_PrivateKeyImpl< DL_GroupParameters_EC< EC > >::GenerateRandom().
|
inlineinherited |
Get a pointer to this object.
T | class or type |
ptr | reference to a pointer to a variable that receives the value |
Definition at line 306 of file cryptlib.h.
|
inlineinherited |
Get a named value.
T | class or type |
name | the name of the object or value to retrieve |
value | reference to a variable that receives the value |
Definition at line 319 of file cryptlib.h.
Referenced by DL_GroupParameters_EC< EC >::AssignFrom(), KDF2_RNG::GenerateBlock(), DL_GroupParameters_IntegerBased::GenerateRandom(), InvertibleESIGNFunction::GenerateRandom(), GenerateRandom(), Store::GetNextMessage(), TestDataNameValuePairs::GetVoidValue(), FileSink::IsolatedInitialize(), Inflator::IsolatedInitialize(), Grouper::IsolatedInitialize(), StringSinkTemplate< T >::IsolatedInitialize(), ArraySink::IsolatedInitialize(), OAEP_Base::MaxUnpaddedLength(), and SimpleKeyingInterface::SetKeyWithIV().
|
inlineinherited |
Get a named value.
T | class or type |
name | the name of the object or value to retrieve |
defaultValue | the default value of the class or type if it does not exist |
Definition at line 332 of file cryptlib.h.
Referenced by DL_GroupParameters_EC< EC >::AssignFrom(), AuthenticatedDecryptionFilter::AuthenticatedDecryptionFilter(), KDF2_RNG::GenerateBlock(), DL_GroupParameters_IntegerBased::GenerateRandom(), InvertibleESIGNFunction::GenerateRandom(), InvertibleLUCFunction::GenerateRandom(), InvertibleRSAFunction::GenerateRandom(), GenerateRandom(), Redirector::Initialize(), Deflator::IsolatedInitialize(), FileSink::IsolatedInitialize(), Base64URLEncoder::IsolatedInitialize(), HashFilter::IsolatedInitialize(), SignerFilter::IsolatedInitialize(), CBC_CTS_Encryption::MinLastBlockSize(), HashFilter::Put2(), SignerFilter::Put2(), and ArrayXorSink::Put2().
|
inlineinherited |
Get a list of value names that can be retrieved.
the items in the list are delimited with a colon.
Definition at line 344 of file cryptlib.h.
Referenced by TestDataNameValuePairs::GetVoidValue().
|
inlineinherited |
Get a named value with type int.
name | the name of the value to retrieve |
value | the value retrieved upon success |
GetIntValue() is used to ensure we don't accidentally try to get an unsigned int or some other type when we mean int (which is the most common case)
Definition at line 355 of file cryptlib.h.
Referenced by KDF2_RNG::GenerateBlock(), DL_GroupParameters_IntegerBased::GenerateRandom(), InvertibleRabinFunction::GenerateRandom(), InvertibleRWFunction::GenerateRandom(), InvertibleESIGNFunction::GenerateRandom(), InvertibleLUCFunction::GenerateRandom(), InvertibleRSAFunction::GenerateRandom(), and GenerateRandom().
|
inlineinherited |
Get a named value with type int, with default.
name | the name of the value to retrieve |
defaultValue | the default value if the name does not exist |
Definition at line 364 of file cryptlib.h.
Referenced by DL_GroupParameters_IntegerBased::GenerateRandom(), TestDataNameValuePairs::GetVoidValue(), Redirector::Initialize(), ByteQueue::IsolatedInitialize(), Deflator::IsolatedInitialize(), Base64URLEncoder::IsolatedInitialize(), Grouper::IsolatedInitialize(), HashFilter::IsolatedInitialize(), HashFilter::Put2(), VariableRounds< 6, 2 >::StaticGetDefaultRounds(), SAFER::Base::UncheckedSetKey(), and VMAC_Base::UncheckedSetKey().
|
inlinestaticinherited |
Ensures an expected name and type is present.
name | the name of the value |
stored | the type that was stored for the name |
retrieving | the type that is being retrieved for the name |
ValueTypeMismatch |
ThrowIfTypeMismatch() effectively performs a type safety check. stored and retrieving are C++ mangled names for the type.
Definition at line 376 of file cryptlib.h.
Referenced by CombinedNameValuePairs::GetVoidValue().
|
inlineinherited |
Retrieves a required name/value pair.
T | class or type |
className | the name of the class |
name | the name of the value |
value | reference to a variable to receive the value |
InvalidArgument |
GetRequiredParameter() throws InvalidArgument if the name is not present or not of the expected type T.
Definition at line 390 of file cryptlib.h.
Referenced by DL_GroupParameters_EC< EC >::AssignFrom(), StringStore::CopyRangeTo2(), BaseN_Decoder::IsolatedInitialize(), Grouper::IsolatedInitialize(), and RandomNumberSink::IsolatedInitialize().
|
inlineinherited |
Retrieves a required name/value pair.
className | the name of the class |
name | the name of the value |
value | reference to a variable to receive the value |
InvalidArgument |
GetRequiredParameter() throws InvalidArgument if the name is not present or not of the expected type T.
Definition at line 405 of file cryptlib.h.
References g_nullNameValuePairs.
Referenced by StringStore::CopyRangeTo2(), and BaseN_Decoder::IsolatedInitialize().