_ More...
Public Member Functions | |
void | Initialize (const Integer &n, const Integer &e) |
OID | GetAlgorithmID () const |
void | BERDecodePublicKey (BufferedTransformation &bt, bool parametersPresent, size_t size) |
decode subjectPublicKey part of subjectPublicKeyInfo, without the BIT STRING header | |
void | DEREncodePublicKey (BufferedTransformation &bt) const |
encode subjectPublicKey part of subjectPublicKeyInfo, without the BIT STRING header | |
bool | Validate (RandomNumberGenerator &rng, unsigned int level) const |
Check this object for errors. | |
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. | |
Integer | ApplyFunction (const Integer &x) const |
Applies the trapdoor. | |
Integer | PreimageBound () const |
Returns the maximum size of a message before the trapdoor function is applied. | |
Integer | ImageBound () const |
Returns the maximum size of a message after the trapdoor function is applied. | |
const Integer & | GetModulus () const |
const Integer & | GetPublicExponent () const |
void | SetModulus (const Integer &n) |
void | SetPublicExponent (const Integer &e) |
Integer | ApplyRandomizedFunction (RandomNumberGenerator &rng, const Integer &x) const |
Applies the trapdoor function. | |
bool | IsRandomized () const |
Determines if the encryption algorithm is randomized. | |
virtual Integer | MaxPreimage () const |
Returns the maximum size of a message before the trapdoor function is applied bound to a public key. | |
virtual Integer | MaxImage () const |
Returns the maximum size of a message after the trapdoor function is applied bound to a public key. | |
void | BERDecode (BufferedTransformation &bt) |
Decode this object from a BufferedTransformation. | |
void | DEREncode (BufferedTransformation &bt) const |
Encode this object into a BufferedTransformation. | |
virtual bool | BERDecodeAlgorithmParameters (BufferedTransformation &bt) |
virtual bool | DEREncodeAlgorithmParameters (BufferedTransformation &bt) const |
void | Save (BufferedTransformation &bt) const |
Saves a key to a BufferedTransformation. | |
void | Load (BufferedTransformation &bt) |
Loads a key from a BufferedTransformation. | |
virtual void | BEREncode (BufferedTransformation &bt) const |
Encode this object into a BufferedTransformation. | |
virtual void | ThrowIfInvalid (RandomNumberGenerator &rng, unsigned int level) const |
Check this object for errors. | |
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 |
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. | |
std::string | GetValueNames () const |
Get a list of value names that can be retrieved. | |
bool | GetIntValue (const char *name, int &value) const |
Get a named value with type int. | |
int | GetIntValueWithDefault (const char *name, int defaultValue) const |
Get a named value with type int, with default. | |
template<class T > | |
void | GetRequiredParameter (const char *className, const char *name, T &value) const |
Retrieves a required name/value pair. | |
void | GetRequiredIntParameter (const char *className, const char *name, int &value) const |
Retrieves a required name/value pair. | |
Static Public Member Functions | |
static void | ThrowIfTypeMismatch (const char *name, const std::type_info &stored, const std::type_info &retrieving) |
Ensures an expected name and type is present. |
_
Definition at line 22 of file rsa.h.
bool RSAFunction::Validate | ( | RandomNumberGenerator & | rng, | |
unsigned int | level | |||
) | const [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.
Implements CryptoMaterial.
Reimplemented in InvertibleRSAFunction.
Definition at line 70 of file rsa.cpp.
References Integer::One().
bool RSAFunction::GetVoidValue | ( | const char * | name, | |
const std::type_info & | valueType, | |||
void * | pValue | |||
) | const [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() retrives the value of name if it exists.
Implements NameValuePairs.
Reimplemented in InvertibleRSAFunction.
Definition at line 80 of file rsa.cpp.
References Modulus(), and PublicExponent().
void RSAFunction::AssignFrom | ( | const NameValuePairs & | source | ) | [virtual] |
Assign values to this object.
This function can be used to create a public key from a private key.
Implements CryptoMaterial.
Reimplemented in InvertibleRSAFunction.
Definition at line 88 of file rsa.cpp.
References Modulus(), and PublicExponent().
Applies the trapdoor.
x | the message on which the encryption function is applied |
x
encrypted under the public keyApplyFunction
is a generalization of encryption under a public key cryptosystem. Derived classes must implement it.
Implements TrapdoorFunction.
Reimplemented in RSAFunction_ISO.
Integer RSAFunction::PreimageBound | ( | ) | const [inline, virtual] |
Returns the maximum size of a message before the trapdoor function is applied.
Derived classes must implement PreimageBound()
.
Implements TrapdoorFunctionBounds.
Reimplemented in RSAFunction_ISO, and InvertibleRSAFunction_ISO.
Integer RSAFunction::ImageBound | ( | ) | const [inline, virtual] |
Returns the maximum size of a message after the trapdoor function is applied.
Derived classes must implement ImageBound()
.
Implements TrapdoorFunctionBounds.
Integer TrapdoorFunction::ApplyRandomizedFunction | ( | RandomNumberGenerator & | rng, | |
const Integer & | x | |||
) | const [inline, virtual, inherited] |
Applies the trapdoor function.
rng | a RandomNumberGenerator derived class | |
x | the message on which the encryption function is applied |
ApplyRandomizedFunction
is a generalization of encryption under a public key cryptosystem. The RandomNumberGenerator
may (or may not) be required.
Internally, ApplyRandomizedFunction()
calls ApplyFunction()
without the RandomNumberGenerator
.
Implements RandomizedTrapdoorFunction.
bool TrapdoorFunction::IsRandomized | ( | ) | const [inline, virtual, inherited] |
Determines if the encryption algorithm is randomized.
true
if the encryption algorithm is randomized, false
otherwiseIf IsRandomized()
returns false
, then NullRNG()
can be used.
Reimplemented from RandomizedTrapdoorFunction.
virtual Integer TrapdoorFunctionBounds::MaxPreimage | ( | ) | const [inline, virtual, inherited] |
Returns the maximum size of a message before the trapdoor function is applied bound to a public key.
The default implementation returns PreimageBound() - 1
.
virtual Integer TrapdoorFunctionBounds::MaxImage | ( | ) | const [inline, virtual, inherited] |
Returns the maximum size of a message after the trapdoor function is applied bound to a public key.
The default implementation returns ImageBound() - 1
.
Definition at line 89 of file pubkey.h.
Referenced by ESIGNFunction::ApplyFunction().
void X509PublicKey::BERDecode | ( | BufferedTransformation & | bt | ) | [virtual, inherited] |
Decode this object from a BufferedTransformation.
bt | BufferedTransformation object |
Uses Basic Encoding Rules (BER)
Implements ASN1Object.
Reimplemented in InvertibleRSAFunction.
Definition at line 524 of file asn.cpp.
References X509PublicKey::BERDecodePublicKey().
void X509PublicKey::DEREncode | ( | BufferedTransformation & | bt | ) | const [virtual, inherited] |
Encode this object into a BufferedTransformation.
bt | BufferedTransformation object |
Uses Distinguished Encoding Rules (DER)
Implements ASN1Object.
Reimplemented in InvertibleRSAFunction.
Definition at line 539 of file asn.cpp.
References X509PublicKey::DEREncodePublicKey(), and BufferedTransformation::Put().
void ASN1CryptoMaterial< PublicKey >::Save | ( | BufferedTransformation & | bt | ) | const [inline, virtual, inherited] |
Reimplemented from CryptoMaterial.
Reimplemented in InvertibleRSAFunction.
void ASN1CryptoMaterial< PublicKey >::Load | ( | BufferedTransformation & | bt | ) | [inline, virtual, inherited] |
Reimplemented from CryptoMaterial.
Reimplemented in InvertibleRSAFunction.
virtual void ASN1Object::BEREncode | ( | BufferedTransformation & | bt | ) | const [inline, virtual, inherited] |
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 2649 of file cryptlib.h.
virtual void CryptoMaterial::ThrowIfInvalid | ( | RandomNumberGenerator & | rng, | |
unsigned int | level | |||
) | const [inline, virtual, inherited] |
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 1939 of file cryptlib.h.
virtual bool CryptoMaterial::SupportsPrecomputation | ( | ) | const [inline, virtual, inherited] |
Determines whether the object supports precomputation.
Reimplemented in DL_GroupParameters< T >, DL_PrivateKeyImpl< GP >, DL_PublicKeyImpl< GP >, DL_GroupParameters< Integer >, DL_GroupParameters< typenameEcPrecomputation< EC >::Element >, DL_PrivateKeyImpl< DL_GroupParameters_EC< EC > >, and DL_PublicKeyImpl< DL_GroupParameters_EC< EC > >.
Definition at line 1973 of file cryptlib.h.
virtual void CryptoMaterial::Precompute | ( | unsigned int | precomputationStorage | ) | [inline, virtual, inherited] |
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_PrivateKeyImpl< GP >, DL_PublicKeyImpl< GP >, DL_GroupParameters< Integer >, DL_GroupParameters< typenameEcPrecomputation< EC >::Element >, DL_PrivateKeyImpl< DL_GroupParameters_EC< EC > >, and DL_PublicKeyImpl< DL_GroupParameters_EC< EC > >.
Definition at line 1982 of file cryptlib.h.
bool NameValuePairs::GetThisObject | ( | T & | object | ) | const [inline, inherited] |
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().
bool NameValuePairs::GetThisPointer | ( | T *& | ptr | ) | const [inline, inherited] |
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.
bool NameValuePairs::GetValue | ( | const char * | name, | |
T & | value | |||
) | const [inline, inherited] |
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(), DL_GroupParameters_IntegerBased::GenerateRandom(), DL_GroupParameters_DSA::GenerateRandom(), InvertibleESIGNFunction::GenerateRandom(), Inflator::IsolatedInitialize(), StringSinkTemplate< T >::IsolatedInitialize(), ArraySink::IsolatedInitialize(), FileSink::IsolatedInitialize(), and Grouper::IsolatedInitialize().
T NameValuePairs::GetValueWithDefault | ( | const char * | name, | |
T | defaultValue | |||
) | const [inline, inherited] |
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(), InvertibleRSAFunction::GenerateRandom(), InvertibleLUCFunction::GenerateRandom(), DL_GroupParameters_IntegerBased::GenerateRandom(), DL_GroupParameters_DSA::GenerateRandom(), InvertibleESIGNFunction::GenerateRandom(), Redirector::Initialize(), Deflator::IsolatedInitialize(), SignerFilter::IsolatedInitialize(), HashFilter::IsolatedInitialize(), FileSink::IsolatedInitialize(), and Base64URLEncoder::IsolatedInitialize().
std::string NameValuePairs::GetValueNames | ( | ) | const [inline, inherited] |
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.
bool NameValuePairs::GetIntValue | ( | const char * | name, | |
int & | value | |||
) | const [inline, inherited] |
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 InvertibleRWFunction::GenerateRandom(), InvertibleRSAFunction::GenerateRandom(), InvertibleRabinFunction::GenerateRandom(), InvertibleLUCFunction::GenerateRandom(), DL_GroupParameters_IntegerBased::GenerateRandom(), DL_GroupParameters_DSA::GenerateRandom(), and InvertibleESIGNFunction::GenerateRandom().
int NameValuePairs::GetIntValueWithDefault | ( | const char * | name, | |
int | defaultValue | |||
) | const [inline, inherited] |
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(), Redirector::Initialize(), Deflator::IsolatedInitialize(), ByteQueue::IsolatedInitialize(), HashFilter::IsolatedInitialize(), Grouper::IsolatedInitialize(), Base64URLEncoder::IsolatedInitialize(), VMAC_Base::UncheckedSetKey(), SAFER::Base::UncheckedSetKey(), and Weak1::ARC4_Base::UncheckedSetKey().
static void NameValuePairs::ThrowIfTypeMismatch | ( | const char * | name, | |
const std::type_info & | stored, | |||
const std::type_info & | retrieving | |||
) | [inline, static, inherited] |
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 DL_GroupParameters_EC< EC >::GetVoidValue().
void NameValuePairs::GetRequiredParameter | ( | const char * | className, | |
const char * | name, | |||
T & | value | |||
) | const [inline, inherited] |
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(), RandomNumberSink::IsolatedInitialize(), Grouper::IsolatedInitialize(), and BaseN_Decoder::IsolatedInitialize().
void NameValuePairs::GetRequiredIntParameter | ( | const char * | className, | |
const char * | name, | |||
int & | value | |||
) | const [inline, inherited] |
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.
Referenced by BaseN_Decoder::IsolatedInitialize().