Fabcoin Core
0.16.2
P2P Digital Currency
|
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 EcPrecomputation< EC >::Element | Element |
typedef DL_FixedBasePrecomputationImpl< typename EcPrecomputation< EC >::Element > | BasePrecomputation |
Public Types inherited from DL_GroupParameters< typename EcPrecomputation< EC >::Element > | |
typedef typename EcPrecomputation< EC >::Element | Element |
Public Member Functions | |
virtual | ~DL_GroupParameters_EC () |
DL_GroupParameters_EC () | |
Construct an EC GroupParameters. More... | |
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 |
Public Member Functions inherited from DL_GroupParametersImpl< EcPrecomputation< EC > > | |
virtual | ~DL_GroupParametersImpl () |
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< typename EcPrecomputation< EC >::Element > | |
virtual | ~DL_GroupParameters () |
DL_GroupParameters () | |
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) |
Set the subgroup generator. More... | |
virtual Element | ExponentiateBase (const Integer &exponent) const |
Retrieves the subgroup generator. 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... | |
Public Member Functions inherited from GeneratableCryptoMaterial | |
virtual | ~GeneratableCryptoMaterial () |
void | GenerateRandomWithKeySize (RandomNumberGenerator &rng, unsigned int keySize) |
Generate a random key or crypto parameters. More... | |
Public Member Functions inherited from CryptoMaterial | |
virtual | ~CryptoMaterial () |
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... | |
Public Member Functions inherited from NameValuePairs | |
virtual | ~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... | |
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... | |
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. More... | |
Protected Member Functions | |
unsigned int | FieldElementLength () const |
unsigned int | ExponentLength () const |
Protected Member Functions inherited from DL_GroupParameters< typename EcPrecomputation< EC >::Element > | |
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 EcPrecomputation< EC >::Element > | m_gpc |
Private Types | |
typedef DL_GroupParameters_EC< EC > | ThisClass |
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 32 of file eccrypto.h.
typedef IncompatibleCofactorMultiplication DL_GroupParameters_EC< EC >::DefaultCofactorOption |
Definition at line 40 of file eccrypto.h.
typedef Point DL_GroupParameters_EC< EC >::Element |
Definition at line 39 of file eccrypto.h.
typedef EC DL_GroupParameters_EC< EC >::EllipticCurve |
Definition at line 37 of file eccrypto.h.
typedef EllipticCurve::Point DL_GroupParameters_EC< EC >::Point |
Definition at line 38 of file eccrypto.h.
|
private |
Definition at line 34 of file eccrypto.h.
|
inlinevirtual |
Definition at line 42 of file eccrypto.h.
|
inline |
Construct an EC GroupParameters.
Definition at line 45 of file eccrypto.h.
|
inline |
Construct an EC GroupParameters.
oid | the OID of a curve |
Definition at line 49 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 57 of file eccrypto.h.
|
inline |
Construct an EC GroupParameters.
bt | BufferedTransformation with group parameters |
Definition at line 62 of file eccrypto.h.
|
inlinevirtual |
Retrieves the group precomputation.
Implements DL_GroupParameters< typename EcPrecomputation< EC >::Element >.
Definition at line 95 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 486 of file eccrypto.cpp.
void DL_GroupParameters_EC< EC >::BERDecode | ( | BufferedTransformation & | bt | ) |
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 636 of file eccrypto.cpp.
Integer DL_GroupParameters_EC< EC >::ConvertElementToInteger | ( | const Element & | element | ) | const |
|
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 115 of file eccrypto.h.
void DL_GroupParameters_EC< EC >::DEREncode | ( | BufferedTransformation & | bt | ) | const |
Definition at line 549 of file eccrypto.cpp.
|
inline |
Definition at line 101 of file eccrypto.h.
|
inlineprotected |
Definition at line 164 of file eccrypto.h.
|
inlinevirtual |
Implements DL_GroupParameters< typename EcPrecomputation< EC >::Element >.
Definition at line 100 of file eccrypto.h.
|
inlineprotected |
Definition at line 163 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 507 of file eccrypto.cpp.
OID DL_GroupParameters_EC< EC >::GetAlgorithmID | ( | ) | const |
Definition at line 642 of file eccrypto.cpp.
|
inlinevirtual |
Retrieves the group precomputation.
Implements DL_GroupParameters< typename EcPrecomputation< EC >::Element >.
Definition at line 94 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 567 of file eccrypto.cpp.
|
inline |
|
inline |
Definition at line 149 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 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 108 of file eccrypto.h.
|
inlinevirtual |
Retrieves the maximum exponent for the group.
Implements DL_GroupParameters< typename EcPrecomputation< EC >::Element >.
Definition at line 125 of file eccrypto.h.
|
static |
Definition at line 434 of file eccrypto.cpp.
|
inline |
Definition at line 146 of file eccrypto.h.
|
inlinevirtual |
Retrieves the subgroup order.
Implements DL_GroupParameters< typename EcPrecomputation< EC >::Element >.
Definition at line 96 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.
Implements NameValuePairs.
Definition at line 469 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 71 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 442 of file eccrypto.cpp.
|
inline |
Definition at line 126 of file eccrypto.h.
DL_GroupParameters_EC< EC >::Element DL_GroupParameters_EC< EC >::MultiplyElements | ( | const Element & | a, |
const Element & | b | ||
) | const |
Definition at line 630 of file eccrypto.cpp.
|
inline |
|
inline |
Definition at line 148 of file eccrypto.h.
|
inline |
Definition at line 145 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 624 of file eccrypto.cpp.
|
inlinestatic |
Definition at line 128 of file eccrypto.h.
bool DL_GroupParameters_EC< EC >::ValidateElement | ( | unsigned int | level, |
const Element & | element, | ||
const DL_FixedBasePrecomputation< Element > * | precomp | ||
) | const |
|
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 586 of file eccrypto.cpp.
|
mutableprotected |
Definition at line 169 of file eccrypto.h.
|
mutableprotected |
Definition at line 169 of file eccrypto.h.
|
mutableprotected |
Definition at line 168 of file eccrypto.h.
|
protected |
Definition at line 167 of file eccrypto.h.
|
protected |
Definition at line 166 of file eccrypto.h.