Security Scol plugin
|
Elliptic Curve Parameters. More...
#include <eccrypto.h>
Public Types | |
typedef EC | EllipticCurve |
typedef EllipticCurve::Point | Point |
typedef Point | Element |
typedef IncompatibleCofactorMultiplication | DefaultCofactorOption |
Public Types inherited from DL_GroupParametersImpl< EcPrecomputation< EC > > | |
typedef EcPrecomputation< EC > | GroupPrecomputation |
typedef GROUP_PRECOMP::Element | Element |
typedef DL_FixedBasePrecomputationImpl< typename GROUP_PRECOMP::Element > | BasePrecomputation |
Public Types inherited from DL_GroupParameters< T > | |
typedef T | Element |
Public Member Functions | |
DL_GroupParameters_EC () | |
Construct an EC GroupParameters. | |
DL_GroupParameters_EC (const OID &oid) | |
Construct an EC GroupParameters. | |
DL_GroupParameters_EC (const EllipticCurve &ec, const Point &G, const Integer &n, const Integer &k=Integer::Zero()) | |
Construct an EC GroupParameters. | |
DL_GroupParameters_EC (BufferedTransformation &bt) | |
Construct an EC GroupParameters. | |
void | Initialize (const EllipticCurve &ec, const Point &G, const Integer &n, const Integer &k=Integer::Zero()) |
Initialize an EC GroupParameters using {EC,G,n,k}. | |
void | Initialize (const OID &oid) |
Initialize a DL_GroupParameters_EC {EC,G,n,k}. | |
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. | |
void | GenerateRandom (RandomNumberGenerator &rng, const NameValuePairs &alg) |
this implementation doesn't actually generate a curve, it just initializes the parameters with existing values | |
const DL_FixedBasePrecomputation< Element > & | GetBasePrecomputation () const |
Retrieves the group precomputation. | |
DL_FixedBasePrecomputation< Element > & | AccessBasePrecomputation () |
Retrieves the group precomputation. | |
const Integer & | GetSubgroupOrder () const |
Retrieves the subgroup order. | |
Integer | GetCofactor () const |
Retrieves the cofactor. | |
bool | ValidateGroup (RandomNumberGenerator &rng, unsigned int level) const |
Check the group for errors. | |
bool | ValidateElement (unsigned int level, const Element &element, const DL_FixedBasePrecomputation< Element > *precomp) const |
bool | FastSubgroupCheckAvailable () const |
void | EncodeElement (bool reversible, const Element &element, byte *encoded) const |
virtual unsigned int | GetEncodedElementSize (bool reversible) const |
Retrieves the encoded element's size. | |
Element | DecodeElement (const byte *encoded, bool checkForGroupMembership) const |
Decodes the element. | |
Integer | ConvertElementToInteger (const Element &element) const |
Integer | GetMaxExponent () const |
Retrieves the maximum exponent for the group. | |
bool | IsIdentity (const Element &element) const |
void | SimultaneousExponentiate (Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const |
OID | GetAlgorithmID () const |
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 | BERDecode (BufferedTransformation &bt) |
void | DEREncode (BufferedTransformation &bt) const |
void | SetPointCompression (bool compress) |
bool | GetPointCompression () const |
void | SetEncodeAsOID (bool encodeAsOID) |
bool | GetEncodeAsOID () const |
const EllipticCurve & | GetCurve () const |
bool | operator== (const ThisClass &rhs) const |
Public Member Functions inherited from DL_GroupParametersImpl< EcPrecomputation< EC > > | |
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 Integer | GetGroupOrder () const |
Retrieves the order of the group. | |
virtual void | EncodeElement (bool reversible, const Element &element, byte *encoded) const =0 |
Encodes the element. | |
virtual Integer | ConvertElementToInteger (const Element &element) const =0 |
Converts an element to an Integer. | |
virtual bool | ValidateElement (unsigned int level, const Element &element, const DL_FixedBasePrecomputation< Element > *precomp) const =0 |
Check the element for errors. | |
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 | |
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 > | |
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. | |
Static Public Member Functions | |
static std::string CRYPTOPP_API | StaticAlgorithmNamePrefix () |
static OID CRYPTOPP_API | GetNextRecommendedParametersOID (const OID &oid) |
Static Public Member Functions inherited from NameValuePairs | |
static CRYPTOPP_DLL void CRYPTOPP_API | ThrowIfTypeMismatch (const char *name, const std::type_info &stored, const std::type_info &retrieving) |
Ensures an expected name and type is present. | |
Protected Member Functions | |
unsigned int | FieldElementLength () const |
unsigned int | ExponentLength () const |
Protected Member Functions inherited from DL_GroupParameters< T > | |
void | ParametersChanged () |
Protected Attributes | |
OID | m_oid |
Integer | m_n |
Integer | m_k |
bool | m_compress |
bool | m_encodeAsOID |
Protected Attributes inherited from DL_GroupParametersImpl< EcPrecomputation< EC > > | |
EcPrecomputation< EC > | m_groupPrecomputation |
DL_FixedBasePrecomputationImpl< typename GROUP_PRECOMP::Element > | m_gpc |
Elliptic Curve Parameters.
EC | elliptic curve field |
This class corresponds to the ASN.1 sequence of the same name in ANSI X9.62 and SEC 1. EC is currently defined for ECP and EC2N.
Definition at line 39 of file eccrypto.h.
typedef IncompatibleCofactorMultiplication DL_GroupParameters_EC< EC >::DefaultCofactorOption |
Definition at line 47 of file eccrypto.h.
typedef Point DL_GroupParameters_EC< EC >::Element |
Definition at line 46 of file eccrypto.h.
typedef EC DL_GroupParameters_EC< EC >::EllipticCurve |
Definition at line 44 of file eccrypto.h.
typedef EllipticCurve::Point DL_GroupParameters_EC< EC >::Point |
Definition at line 45 of file eccrypto.h.
|
inlinevirtual |
Definition at line 49 of file eccrypto.h.
|
inline |
Construct an EC GroupParameters.
Definition at line 52 of file eccrypto.h.
|
inline |
Construct an EC GroupParameters.
oid | the OID of a curve |
Definition at line 56 of file eccrypto.h.
|
inline |
Construct an EC GroupParameters.
ec | the elliptic curve |
G | the base point |
n | the order of the base point |
k | the cofactor |
Definition at line 64 of file eccrypto.h.
|
inline |
Construct an EC GroupParameters.
bt | BufferedTransformation with group parameters |
Definition at line 69 of file eccrypto.h.
|
inlinevirtual |
Retrieves the group precomputation.
Implements DL_GroupParameters< T >.
Definition at line 102 of file eccrypto.h.
|
virtual |
Assign values to this object.
This function can be used to create a public key from a private key.
Implements CryptoMaterial.
Definition at line 514 of file eccrypto.cpp.
void DL_GroupParameters_EC< EC >::BERDecode | ( | BufferedTransformation & | bt | ) |
Definition at line 549 of file eccrypto.cpp.
DL_GroupParameters_EC< EC >::Element DL_GroupParameters_EC< EC >::CascadeExponentiate | ( | const Element & | element1, |
const Integer & | exponent1, | ||
const Element & | element2, | ||
const Integer & | exponent2 | ||
) | const |
Definition at line 678 of file eccrypto.cpp.
Integer DL_GroupParameters_EC< EC >::ConvertElementToInteger | ( | const Element & | element | ) | const |
Definition at line 608 of file eccrypto.cpp.
|
inlinevirtual |
Decodes the element.
encoded | byte array with the encoded element |
checkForGroupMembership | flag indicating if the element should be validated |
DecodeElement() must be implemented in a derived class.
COUNTOF(encoded) == GetEncodedElementSize()
Implements DL_GroupParameters< T >.
Definition at line 122 of file eccrypto.h.
void DL_GroupParameters_EC< EC >::DEREncode | ( | BufferedTransformation & | bt | ) | const |
Definition at line 577 of file eccrypto.cpp.
|
inline |
Definition at line 108 of file eccrypto.h.
|
inlineprotected |
Definition at line 165 of file eccrypto.h.
|
inlinevirtual |
Implements DL_GroupParameters< T >.
Definition at line 107 of file eccrypto.h.
|
inlineprotected |
Definition at line 164 of file eccrypto.h.
|
virtual |
this implementation doesn't actually generate a curve, it just initializes the parameters with existing values
parameters: (Curve, SubgroupGenerator, SubgroupOrder, Cofactor (optional)), or (GroupOID)
Reimplemented from GeneratableCryptoMaterial.
Definition at line 535 of file eccrypto.cpp.
OID DL_GroupParameters_EC< EC >::GetAlgorithmID | ( | ) | const |
Definition at line 684 of file eccrypto.cpp.
|
inlinevirtual |
Retrieves the group precomputation.
Implements DL_GroupParameters< T >.
Definition at line 101 of file eccrypto.h.
|
virtual |
Retrieves the cofactor.
Either GetGroupOrder() or GetCofactor() must be overridden in a derived class.
Reimplemented from DL_GroupParameters< T >.
Definition at line 595 of file eccrypto.cpp.
|
inline |
Definition at line 158 of file eccrypto.h.
|
inline |
Definition at line 156 of file eccrypto.h.
|
inlinevirtual |
Retrieves the encoded element's size.
reversible | flag indicating the encoding format |
The format of the encoded element varies by the underlying type of the element and the reversible flag. GetEncodedElementSize() must be implemented in a derived class.
Implements DL_GroupParameters< T >.
Definition at line 115 of file eccrypto.h.
|
inlinevirtual |
Retrieves the maximum exponent for the group.
Implements DL_GroupParameters< T >.
Definition at line 132 of file eccrypto.h.
|
static |
Definition at line 462 of file eccrypto.cpp.
|
inline |
Definition at line 153 of file eccrypto.h.
|
inlinevirtual |
Retrieves the subgroup order.
Implements DL_GroupParameters< T >.
Definition at line 103 of file eccrypto.h.
|
virtual |
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() retrieves the value of name if it exists.
Reimplemented from DL_GroupParameters< T >.
Definition at line 497 of file eccrypto.cpp.
|
inline |
Initialize an EC GroupParameters using {EC,G,n,k}.
ec | the elliptic curve |
G | the base point |
n | the order of the base point |
k | the cofactor |
This Initialize() function overload initializes group parameters from existing parameters.
Definition at line 78 of file eccrypto.h.
void DL_GroupParameters_EC< EC >::Initialize | ( | const OID & | oid | ) |
Initialize a DL_GroupParameters_EC {EC,G,n,k}.
oid | the OID of a curve |
This Initialize() function overload initializes group parameters from existing parameters.
Definition at line 470 of file eccrypto.cpp.
|
inline |
Definition at line 133 of file eccrypto.h.
DL_GroupParameters_EC< EC >::Element DL_GroupParameters_EC< EC >::MultiplyElements | ( | const Element & | a, |
const Element & | b | ||
) | const |
Definition at line 672 of file eccrypto.cpp.
|
inline |
Definition at line 160 of file eccrypto.h.
|
inline |
Definition at line 155 of file eccrypto.h.
|
inline |
Definition at line 152 of file eccrypto.h.
void DL_GroupParameters_EC< EC >::SimultaneousExponentiate | ( | Element * | results, |
const Element & | base, | ||
const Integer * | exponents, | ||
unsigned int | exponentsCount | ||
) | const |
Definition at line 666 of file eccrypto.cpp.
|
inlinestatic |
Definition at line 135 of file eccrypto.h.
bool DL_GroupParameters_EC< EC >::ValidateElement | ( | unsigned int | level, |
const Element & | element, | ||
const DL_FixedBasePrecomputation< Element > * | precomp | ||
) | const |
Definition at line 640 of file eccrypto.cpp.
|
virtual |
Check the group for errors.
rng | RandomNumberGenerator for objects which use randomized testing |
level | 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.
ValidateGroup() must be implemented in a derived class.
Implements DL_GroupParameters< T >.
Definition at line 614 of file eccrypto.cpp.
|
mutableprotected |
Definition at line 170 of file eccrypto.h.
|
protected |
Definition at line 170 of file eccrypto.h.
|
mutableprotected |
Definition at line 169 of file eccrypto.h.
|
protected |
Definition at line 168 of file eccrypto.h.
|
protected |
Definition at line 167 of file eccrypto.h.