Crypto++
8.0
Free C++ class library of cryptographic schemes
|
Elliptic Curve Parameters. More...
Public Types | |
typedef EC | EllipticCurve |
typedef EllipticCurve::Point | Point |
typedef Point | Element |
typedef IncompatibleCofactorMultiplication | DefaultCofactorOption |
![]() | |
typedef EcPrecomputation< EC > | GroupPrecomputation |
typedef EcPrecomputation< EC > ::Element | Element |
typedef DL_FixedBasePrecomputationImpl< typename EcPrecomputation< EC > ::Element > | BasePrecomputation |
![]() | |
typedef typename EcPrecomputation< EC > ::Element | Element |
Public Member Functions | |
DL_GroupParameters_EC () | |
Construct an EC GroupParameters. | |
DL_GroupParameters_EC (const OID &oid) | |
Construct an EC GroupParameters. More... | |
DL_GroupParameters_EC (const EllipticCurve &ec, const Point &G, const Integer &n, const Integer &k=Integer::Zero()) | |
Construct an EC GroupParameters. More... | |
DL_GroupParameters_EC (BufferedTransformation &bt) | |
Construct an EC GroupParameters. More... | |
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}. More... | |
void | Initialize (const OID &oid) |
Initialize a DL_GroupParameters_EC {EC,G,n,k}. More... | |
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... | |
void | GenerateRandom (RandomNumberGenerator &rng, const NameValuePairs &alg) |
this implementation doesn't actually generate a curve, it just initializes the parameters with existing values More... | |
const DL_FixedBasePrecomputation< Element > & | GetBasePrecomputation () const |
Retrieves the group precomputation. More... | |
DL_FixedBasePrecomputation< Element > & | AccessBasePrecomputation () |
Retrieves the group precomputation. More... | |
const Integer & | GetSubgroupOrder () const |
Retrieves the subgroup order. More... | |
Integer | GetCofactor () const |
Retrieves the cofactor. More... | |
bool | ValidateGroup (RandomNumberGenerator &rng, unsigned int level) const |
Check the group for errors. More... | |
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. More... | |
Element | DecodeElement (const byte *encoded, bool checkForGroupMembership) const |
Decodes the element. More... | |
Integer | ConvertElementToInteger (const Element &element) const |
Integer | GetMaxExponent () const |
Retrieves the maximum exponent for the group. More... | |
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 |
![]() | |
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... | |
![]() | |
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 Integer | GetGroupOrder () const |
Retrieves the order of the group. More... | |
virtual void | EncodeElement (bool reversible, const Element &element, byte *encoded) const=0 |
Encodes the element. More... | |
virtual Integer | ConvertElementToInteger (const Element &element) const=0 |
Converts an element to an Integer. More... | |
virtual bool | ValidateElement (unsigned int level, const Element &element, const DL_FixedBasePrecomputation< Element > *precomp) const=0 |
Check the element for errors. More... | |
virtual bool | IsIdentity (const Element &element) const=0 |
Determines if an element is an identity. More... | |
virtual void | SimultaneousExponentiate (Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const=0 |
Exponentiates a base to multiple exponents. More... | |
![]() | |
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... | |
virtual void | Save (BufferedTransformation &bt) const |
Saves a key to a BufferedTransformation. More... | |
virtual void | Load (BufferedTransformation &bt) |
Loads a key from a BufferedTransformation. More... | |
void | DoQuickSanityCheck () const |
Perform a quick sanity check. More... | |
![]() | |
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... | |
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 std::string | StaticAlgorithmNamePrefix () |
static OID | GetNextRecommendedParametersOID (const OID &oid) |
![]() | |
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... | |
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 37 of file eccrypto.h.
|
inline |
Construct an EC GroupParameters.
oid | the OID of a curve |
Definition at line 54 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 62 of file eccrypto.h.
|
inline |
Construct an EC GroupParameters.
bt | BufferedTransformation with group parameters |
Definition at line 67 of file eccrypto.h.
|
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 76 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 467 of file eccrypto.cpp.
|
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.
Implements NameValuePairs.
Definition at line 494 of file eccrypto.cpp.
|
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 511 of file eccrypto.cpp.
|
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 532 of file eccrypto.cpp.
|
inlinevirtual |
Retrieves the group precomputation.
Implements DL_GroupParameters< typename EcPrecomputation< EC > ::Element >.
Definition at line 99 of file eccrypto.h.
|
inlinevirtual |
Retrieves the group precomputation.
Implements DL_GroupParameters< typename EcPrecomputation< EC > ::Element >.
Definition at line 100 of file eccrypto.h.
|
inlinevirtual |
Retrieves the subgroup order.
Implements DL_GroupParameters< typename EcPrecomputation< EC > ::Element >.
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< typename EcPrecomputation< EC > ::Element >.
Definition at line 592 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< typename EcPrecomputation< EC > ::Element >.
Definition at line 611 of file eccrypto.cpp.
|
inlinevirtual |
Retrieves the encoded element's size.
reversible | flag indicating the encoding format |
The format of the encoded element varies by the underlyinhg type of the element and the reversible flag. GetEncodedElementSize() must be implemented in a derived class.
Implements DL_GroupParameters< typename EcPrecomputation< EC > ::Element >.
Definition at line 113 of file eccrypto.h.
|
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< typename EcPrecomputation< EC > ::Element >.
Definition at line 120 of file eccrypto.h.
|
inlinevirtual |
Retrieves the maximum exponent for the group.
Implements DL_GroupParameters< typename EcPrecomputation< EC > ::Element >.
Definition at line 130 of file eccrypto.h.