Crypto++
Public Member Functions
SimpleKeyAgreementDomain Class Reference

interface for domains of simple key agreement protocols More...

#include <cryptlib.h>

Inheritance diagram for SimpleKeyAgreementDomain:
KeyAgreementAlgorithm AsymmetricAlgorithm Algorithm Clonable DL_SimpleKeyAgreementDomainBase< T > DL_SimpleKeyAgreementDomainBase< GROUP_PARAMETERS::Element > XTR_DH DH_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >

List of all members.

Public Member Functions

virtual unsigned int AgreedValueLength () const =0
 return length of agreed value produced
virtual unsigned int PrivateKeyLength () const =0
 return length of private keys in this domain
virtual unsigned int PublicKeyLength () const =0
 return length of public keys in this domain
virtual void GeneratePrivateKey (RandomNumberGenerator &rng, byte *privateKey) const =0
 generate private key
virtual void GeneratePublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0
 generate public key
virtual void GenerateKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const
 generate private/public key pair
virtual bool Agree (byte *agreedValue, const byte *privateKey, const byte *otherPublicKey, bool validateOtherPublicKey=true) const =0
 derive agreed value from your private key and couterparty's public key, 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

Detailed Description

interface for domains of simple key agreement protocols

A key agreement domain is a set of parameters that must be shared by two parties in a key agreement protocol, along with the algorithms for generating key pairs and deriving agreed values.

Definition at line 1430 of file cryptlib.h.


Member Function Documentation

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

generate private key

Precondition:
size of privateKey == PrivateKeyLength()

Implemented in DL_SimpleKeyAgreementDomainBase< T >, DL_SimpleKeyAgreementDomainBase< GROUP_PARAMETERS::Element >, and XTR_DH.

virtual void SimpleKeyAgreementDomain::GeneratePublicKey ( RandomNumberGenerator &  rng,
const byte *  privateKey,
byte *  publicKey 
) const [pure virtual]
virtual void SimpleKeyAgreementDomain::GenerateKeyPair ( RandomNumberGenerator &  rng,
byte *  privateKey,
byte *  publicKey 
) const [virtual]

generate private/public key pair

Note:
equivalent to calling GeneratePrivateKey() and then GeneratePublicKey()
virtual bool SimpleKeyAgreementDomain::Agree ( byte *  agreedValue,
const byte *  privateKey,
const byte *  otherPublicKey,
bool  validateOtherPublicKey = true 
) const [pure virtual]

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

Note:
If you have previously validated the public key, use validateOtherPublicKey=false to save time.
Precondition:
size of agreedValue == AgreedValueLength()
length of privateKey == PrivateKeyLength()
length of otherPublicKey == PublicKeyLength()

Implemented in DL_SimpleKeyAgreementDomainBase< T >, DL_SimpleKeyAgreementDomainBase< GROUP_PARAMETERS::Element >, and XTR_DH.


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