SimpleKeyAgreementDomain Class Referenceabstract

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

`#include <cryptlib.h>`

Inheritance diagram for SimpleKeyAgreementDomain:

## 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...
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

generate public key

Precondition
  size of publicKey == PublicKeyLength()

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

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:

- cryptlib.h