AuthenticatedKeyAgreementDomain Class Reference

#include <cryptlib.h>

Inheritance diagram for AuthenticatedKeyAgreementDomain:

KeyAgreementAlgorithm AsymmetricAlgorithm Algorithm Clonable DH2 MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >

List of all members.


Detailed Description

interface for domains of authenticated key agreement protocols

In an authenticated key agreement protocol, each party has two key pairs. The long-lived key pair is called the static key pair, and the short-lived key pair is called the ephemeral key pair.

Definition at line 1423 of file cryptlib.h.


Public Member Functions

virtual unsigned int AgreedValueLength () const =0
 return length of agreed value produced
virtual unsigned int StaticPrivateKeyLength () const =0
 return length of static private keys in this domain
virtual unsigned int StaticPublicKeyLength () const =0
 return length of static public keys in this domain
virtual void GenerateStaticPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const =0
 generate static private key
virtual void GenerateStaticPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0
 generate static public key
virtual void GenerateStaticKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const
 generate private/public key pair
virtual unsigned int EphemeralPrivateKeyLength () const =0
 return length of ephemeral private keys in this domain
virtual unsigned int EphemeralPublicKeyLength () const =0
 return length of ephemeral public keys in this domain
virtual void GenerateEphemeralPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const =0
 generate ephemeral private key
virtual void GenerateEphemeralPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0
 generate ephemeral public key
virtual void GenerateEphemeralKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const
 generate private/public key pair
virtual bool Agree (byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const =0
 derive agreed value from your private keys and couterparty's public keys, return false in case of failure
CryptoMaterial & AccessMaterial ()
 returns a reference to the crypto material used by this object
const CryptoMaterial & GetMaterial () const
 returns a const reference to the crypto material used by this object
virtual CryptoParameters & AccessCryptoParameters ()=0
virtual const CryptoParameters & GetCryptoParameters () const
void BERDecode (BufferedTransformation &bt)
 for backwards compatibility, calls AccessMaterial().Load(bt)
void DEREncode (BufferedTransformation &bt) const
 for backwards compatibility, calls GetMaterial().Save(bt)
virtual std::string AlgorithmName () const
 returns name of this algorithm, not universally implemented yet
virtual Clonable * Clone () const
 this is not implemented by most classes yet

Member Function Documentation

virtual void AuthenticatedKeyAgreementDomain::GenerateStaticPrivateKey ( RandomNumberGenerator &  rng,
byte *  privateKey 
) const [pure virtual]

generate static private key

Precondition:
size of privateKey == PrivateStaticKeyLength()

Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.

Referenced by GenerateStaticKeyPair().

virtual void AuthenticatedKeyAgreementDomain::GenerateStaticPublicKey ( RandomNumberGenerator &  rng,
const byte *  privateKey,
byte *  publicKey 
) const [pure virtual]

generate static public key

Precondition:
size of publicKey == PublicStaticKeyLength()

Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.

Referenced by GenerateStaticKeyPair().

void AuthenticatedKeyAgreementDomain::GenerateStaticKeyPair ( RandomNumberGenerator &  rng,
byte *  privateKey,
byte *  publicKey 
) const [virtual]

generate private/public key pair

Note:
equivalent to calling GenerateStaticPrivateKey() and then GenerateStaticPublicKey()

Reimplemented in DH2.

Definition at line 707 of file cryptlib.cpp.

References GenerateStaticPrivateKey(), and GenerateStaticPublicKey().

virtual void AuthenticatedKeyAgreementDomain::GenerateEphemeralPrivateKey ( RandomNumberGenerator &  rng,
byte *  privateKey 
) const [pure virtual]

generate ephemeral private key

Precondition:
size of privateKey == PrivateEphemeralKeyLength()

Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.

Referenced by GenerateEphemeralKeyPair().

virtual void AuthenticatedKeyAgreementDomain::GenerateEphemeralPublicKey ( RandomNumberGenerator &  rng,
const byte *  privateKey,
byte *  publicKey 
) const [pure virtual]

generate ephemeral public key

Precondition:
size of publicKey == PublicEphemeralKeyLength()

Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.

Referenced by GenerateEphemeralKeyPair().

void AuthenticatedKeyAgreementDomain::GenerateEphemeralKeyPair ( RandomNumberGenerator &  rng,
byte *  privateKey,
byte *  publicKey 
) const [virtual]

generate private/public key pair

Note:
equivalent to calling GenerateEphemeralPrivateKey() and then GenerateEphemeralPublicKey()

Reimplemented in DH2.

Definition at line 713 of file cryptlib.cpp.

References GenerateEphemeralPrivateKey(), and GenerateEphemeralPublicKey().

virtual bool AuthenticatedKeyAgreementDomain::Agree ( byte *  agreedValue,
const byte *  staticPrivateKey,
const byte *  ephemeralPrivateKey,
const byte *  staticOtherPublicKey,
const byte *  ephemeralOtherPublicKey,
bool  validateStaticOtherPublicKey = true 
) const [pure virtual]

derive agreed value from your private keys and couterparty's public keys, return false in case of failure

Note:
The ephemeral public key will always be validated. If you have previously validated the static public key, use validateStaticOtherPublicKey=false to save time.
Precondition:
size of agreedValue == AgreedValueLength()

length of staticPrivateKey == StaticPrivateKeyLength()

length of ephemeralPrivateKey == EphemeralPrivateKeyLength()

length of staticOtherPublicKey == StaticPublicKeyLength()

length of ephemeralOtherPublicKey == EphemeralPublicKeyLength()

Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.


The documentation for this class was generated from the following files:

Generated on Mon Oct 27 02:39:10 2008 for Crypto++ by  doxygen 1.5.6