Security Scol plugin
|
Interface for crypto material. More...
#include <cryptlib.h>
Classes | |
class | InvalidMaterial |
Exception thrown when invalid crypto material is detected. More... | |
Public Member Functions | |
virtual void | AssignFrom (const NameValuePairs &source)=0 |
Assign values to this object. | |
virtual bool | Validate (RandomNumberGenerator &rng, unsigned int level) const =0 |
Check this object for errors. | |
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. | |
virtual bool | SupportsPrecomputation () const |
Determines whether the object supports precomputation. | |
virtual void | Precompute (unsigned int precomputationStorage) |
Perform precomputation. | |
virtual void | LoadPrecomputation (BufferedTransformation &storedPrecomputation) |
Retrieve previously saved precomputation. | |
virtual void | SavePrecomputation (BufferedTransformation &storedPrecomputation) const |
Save precomputation for later use. | |
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. | |
virtual CRYPTOPP_DLL bool | GetVoidValue (const char *name, const std::type_info &valueType, void *pValue) const =0 |
Get a named value. | |
Additional Inherited Members | |
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. | |
Interface for crypto material.
CryptoMaterial() is an interface for crypto material, such as public keys, private keys and crypto parameters. Derived classes generally do not offer public methods such as GenerateRandom() and GenerateRandomWithKeySize().
Definition at line 2389 of file cryptlib.h.
|
inlinevirtual |
Definition at line 2399 of file cryptlib.h.
|
pure virtual |
Assign values to this object.
This function can be used to create a public key from a private key.
Implemented in DL_GroupParameters_EC< EC >, ESIGNFunction, InvertibleESIGNFunction, DL_GroupParameters_IntegerBased, DL_GroupParameters_IntegerBasedImpl< GROUP_PRECOMP, BASE_PRECOMP >, DL_GroupParameters_IntegerBasedImpl< DL_GroupPrecomputation_LUC, DL_BasePrecomputation_LUC >, DL_GroupParameters_IntegerBasedImpl< ModExpPrecomputation >, LUCFunction, InvertibleLUCFunction, DL_PrivateKeyImpl< GP >, DL_PublicKeyImpl< GP >, RabinFunction, InvertibleRabinFunction, RSAFunction, InvertibleRSAFunction, RWFunction, InvertibleRWFunction, x25519, ed25519PrivateKey, ed25519PublicKey, and XTR_DH.
|
inline |
Perform a quick sanity check.
DoQuickSanityCheck() is for internal library use, and it should not be called by library users.
Definition at line 2493 of file cryptlib.h.
|
inlinevirtual |
Loads a key from a BufferedTransformation.
bt | the source BufferedTransformation |
KeyingErr |
Load() attempts to read material from a BufferedTransformation. If the material is a key that was generated outside the library, then the following usually applies:
"key info" means the key should have an object identifier with an algorithm id, like a subjectPublicKeyInfo.
To read a "raw" key without the "key info", then call the key's BERDecode() method.
Reimplemented in ASN1CryptoMaterial< DL_GroupParameters< Integer > >, ASN1CryptoMaterial< PrivateKey >, ASN1CryptoMaterial< PublicKey >, InvertibleESIGNFunction, InvertibleRSAFunction, RWFunction, InvertibleRWFunction, x25519, ed25519PrivateKey, and ed25519PublicKey.
Definition at line 2456 of file cryptlib.h.
|
inlinevirtual |
Retrieve previously saved precomputation.
storedPrecomputation | BufferedTransformation with the saved precomputation |
NotImplemented |
Reimplemented in DL_GroupParameters< T >, DL_GroupParameters< Integer >, DL_GroupParameters< typename GROUP_PRECOMP::Element >, DL_PrivateKeyImpl< GP >, DL_PublicKeyImpl< GP >, and InvertibleRWFunction.
Definition at line 2481 of file cryptlib.h.
|
inlinevirtual |
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 in DL_GroupParameters< T >, DL_GroupParameters< Integer >, DL_GroupParameters< typename GROUP_PRECOMP::Element >, DL_PrivateKeyImpl< GP >, DL_PublicKeyImpl< GP >, and InvertibleRWFunction.
Definition at line 2472 of file cryptlib.h.
|
inlinevirtual |
Saves a key to a BufferedTransformation.
bt | the destination BufferedTransformation |
NotImplemented |
Save() writes the material to a BufferedTransformation.
If the material is a key, then the key is written with ASN.1 DER encoding. The key includes an object identifier with an algorithm id, like a subjectPublicKeyInfo.
A "raw" key without the "key info" can be saved using a key's DEREncode() method.
If a derived class does not override Save(), then the base class throws NotImplemented().
Reimplemented in ASN1CryptoMaterial< DL_GroupParameters< Integer > >, ASN1CryptoMaterial< PrivateKey >, ASN1CryptoMaterial< PublicKey >, InvertibleESIGNFunction, InvertibleRSAFunction, RWFunction, InvertibleRWFunction, x25519, ed25519PrivateKey, and ed25519PublicKey.
Definition at line 2439 of file cryptlib.h.
|
inlinevirtual |
Save precomputation for later use.
storedPrecomputation | BufferedTransformation to write the precomputation |
NotImplemented |
Reimplemented in DL_GroupParameters< T >, DL_GroupParameters< Integer >, DL_GroupParameters< typename GROUP_PRECOMP::Element >, DL_PrivateKeyImpl< GP >, DL_PublicKeyImpl< GP >, and InvertibleRWFunction.
Definition at line 2488 of file cryptlib.h.
|
inlinevirtual |
Determines whether the object supports precomputation.
Reimplemented in DL_GroupParameters< T >, DL_GroupParameters< Integer >, DL_GroupParameters< typename GROUP_PRECOMP::Element >, DL_PrivateKeyImpl< GP >, DL_PublicKeyImpl< GP >, and InvertibleRWFunction.
Definition at line 2462 of file cryptlib.h.
|
inlinevirtual |
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 2427 of file cryptlib.h.
|
pure virtual |
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.
Implemented in ESIGNFunction, InvertibleESIGNFunction, LUCFunction, InvertibleLUCFunction, DL_GroupParameters< T >, DL_GroupParameters< Integer >, DL_GroupParameters< typename GROUP_PRECOMP::Element >, DL_PrivateKeyImpl< GP >, DL_PublicKeyImpl< GP >, RabinFunction, InvertibleRabinFunction, RSAFunction, InvertibleRSAFunction, RWFunction, InvertibleRWFunction, x25519, ed25519PrivateKey, ed25519PublicKey, and XTR_DH.