Crypto++
Public Member Functions | List of all members
SimpleKeyAgreementDomain Class Referenceabstract

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 >

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 More...
 
virtual void GeneratePublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0
 generate public key More...
 
virtual void GenerateKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const
 generate private/public key pair More...
 
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 More...
 
CryptoMaterialAccessMaterial ()
 returns a reference to the crypto material used by this object
 
const CryptoMaterialGetMaterial () const
 returns a const reference to the crypto material used by this object
 
virtual CryptoParametersAccessCryptoParameters ()=0
 
virtual const CryptoParametersGetCryptoParameters () 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 ClonableClone () 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: