InvertibleRSAFunction Class Reference

#include <rsa.h>

Inheritance diagram for InvertibleRSAFunction:

RSAFunction TrapdoorFunctionInverse PKCS8PrivateKey TrapdoorFunction X509PublicKey RandomizedTrapdoorFunctionInverse ASN1CryptoMaterial< PrivateKey > RandomizedTrapdoorFunction ASN1CryptoMaterial< PublicKey > ASN1Object PrivateKey TrapdoorFunctionBounds ASN1Object PublicKey GeneratableCryptoMaterial CryptoMaterial CryptoMaterial NameValuePairs NameValuePairs InvertibleRSAFunction_ISO List of all members.

Detailed Description

_

Definition at line 53 of file rsa.h.

Public Member Functions

void Initialize (RandomNumberGenerator &rng, unsigned int modulusBits, const Integer &e=17)
void Initialize (const Integer &n, const Integer &e, const Integer &d, const Integer &p, const Integer &q, const Integer &dp, const Integer &dq, const Integer &u)
void Initialize (const Integer &n, const Integer &e, const Integer &d)
 factor n given private exponent
void BERDecode (BufferedTransformation &bt)
 decode this object from a BufferedTransformation, using BER (Basic Encoding Rules)
void DEREncode (BufferedTransformation &bt) const
 encode this object into a BufferedTransformation, using DER (Distinguished Encoding Rules)
void Load (BufferedTransformation &bt)
 load key from a BufferedTransformation
void Save (BufferedTransformation &bt) const
 save key into a BufferedTransformation
OID GetAlgorithmID () const
void BERDecodePrivateKey (BufferedTransformation &bt, bool parametersPresent, size_t size)
 decode privateKey part of privateKeyInfo, without the OCTET STRING header
void DEREncodePrivateKey (BufferedTransformation &bt) const
 encode privateKey part of privateKeyInfo, without the OCTET STRING header
Integer CalculateInverse (RandomNumberGenerator &rng, const Integer &x) const
bool Validate (RandomNumberGenerator &rng, unsigned int level) const
 check this object for errors
void GenerateRandom (RandomNumberGenerator &rng, const NameValuePairs &alg)
bool GetVoidValue (const char *name, const std::type_info &valueType, void *pValue) const
 to be implemented by derived classes, users should use one of the above functions instead
void AssignFrom (const NameValuePairs &source)
 assign values from source to this object
const Integer & GetPrime1 () const
const Integer & GetPrime2 () const
const Integer & GetPrivateExponent () const
const Integer & GetModPrime1PrivateExponent () const
const Integer & GetModPrime2PrivateExponent () const
const Integer & GetMultiplicativeInverseOfPrime2ModPrime1 () const
void SetPrime1 (const Integer &p)
void SetPrime2 (const Integer &q)
void SetPrivateExponent (const Integer &d)
void SetModPrime1PrivateExponent (const Integer &dp)
void SetModPrime2PrivateExponent (const Integer &dq)
void SetMultiplicativeInverseOfPrime2ModPrime1 (const Integer &u)
void Initialize (const Integer &n, const Integer &e)
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
Integer ApplyFunction (const Integer &x) const
Integer PreimageBound () const
Integer ImageBound () const
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
bool IsRandomized () const
virtual Integer MaxPreimage () const
virtual Integer MaxImage () const
virtual bool BERDecodeAlgorithmParameters (BufferedTransformation &bt)
virtual bool DEREncodeAlgorithmParameters (BufferedTransformation &bt) const
virtual void BEREncode (BufferedTransformation &bt) const
 encode this object into a BufferedTransformation, using BER
Integer CalculateRandomizedInverse (RandomNumberGenerator &rng, const Integer &x) const
bool IsRandomized () const
virtual bool BERDecodeAlgorithmParameters (BufferedTransformation &bt)
virtual bool DEREncodeAlgorithmParameters (BufferedTransformation &bt) const
virtual void BERDecodeOptionalAttributes (BufferedTransformation &bt)
 decode optional attributes including context-specific tag
virtual void DEREncodeOptionalAttributes (BufferedTransformation &bt) const
 encode optional attributes including context-specific tag

Protected Attributes

Integer m_d
Integer m_p
Integer m_q
Integer m_dp
Integer m_dq
Integer m_u
Integer m_n
Integer m_e
ByteQueue m_optionalAttributes


Member Function Documentation

void InvertibleRSAFunction::Load ( BufferedTransformation &  bt  )  [inline, virtual]

load key from a BufferedTransformation

Exceptions:
KeyingErr if decode fails
Note:
Generally does not check that the key is valid. Call ValidateKey() or ThrowIfInvalidKey() to check that.

Reimplemented from ASN1CryptoMaterial< PrivateKey >.

Definition at line 69 of file rsa.h.

References PKCS8PrivateKey::BERDecode().

bool InvertibleRSAFunction::Validate ( RandomNumberGenerator &  rng,
unsigned int  level 
) const [virtual]

check this object for errors

Parameters:
level denotes the level of thoroughness: 0 - using this object won't cause a crash or exception (rng is ignored) 1 - this object will probably function (encrypt, sign, etc.) correctly (but may not check for weak keys and such) 2 - make sure this object will function correctly, and do reasonable security checks 3 - do checks that may take a long time
Returns:
true if the tests pass

Reimplemented from RSAFunction.

Definition at line 243 of file rsa.cpp.

References Integer::IsOdd(), Integer::IsPositive(), m_d, m_dp, m_dq, RSAFunction::m_e, RSAFunction::m_n, m_p, m_q, m_u, Integer::One(), and RSAFunction::Validate().

void InvertibleRSAFunction::GenerateRandom ( RandomNumberGenerator &  rng,
const NameValuePairs &  alg 
) [virtual]

parameters: (ModulusSize, PublicExponent (default 17))

Reimplemented from GeneratableCryptoMaterial.

Definition at line 104 of file rsa.cpp.

References Integer::GenerateRandom(), NameValuePairs::GetIntValue(), PrimeSelector::GetSelectorPointer(), NameValuePairs::GetValueWithDefault(), Integer::InverseMod(), Integer::IsEven(), Integer::IsPositive(), Name::KeySize(), m_d, m_dp, m_dq, RSAFunction::m_e, RSAFunction::m_n, m_p, m_q, m_u, Name::ModulusSize(), Name::PointerToPrimeSelector(), and Name::PublicExponent().

Referenced by Initialize().

void InvertibleRSAFunction::AssignFrom ( const NameValuePairs &  source  )  [virtual]

assign values from source to this object

Note:
This function can be used to create a public key from a private key.

Reimplemented from RSAFunction.

Definition at line 276 of file rsa.cpp.

virtual void ASN1Object::BEREncode ( BufferedTransformation &  bt  )  const [inline, virtual, inherited]

encode this object into a BufferedTransformation, using BER

this may be useful if DEREncode() would be too inefficient

Definition at line 1581 of file cryptlib.h.

Referenced by ASN1CryptoMaterial< PublicKey >::Save().

void PKCS8PrivateKey::BERDecodeOptionalAttributes ( BufferedTransformation &  bt  )  [virtual, inherited]

decode optional attributes including context-specific tag

/note default implementation stores attributes to be output in DEREncodeOptionalAttributes

Definition at line 583 of file asn.cpp.

References PKCS8PrivateKey::m_optionalAttributes.

Referenced by PKCS8PrivateKey::BERDecode().


The documentation for this class was generated from the following files:
Generated on Mon Jan 29 09:47:11 2007 for Crypto++ by  doxygen 1.5.1