SimpleKeyAgreementDomain Class Reference

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

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
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
 Provides the name of this algorithm.
virtual ClonableClone () const
 Copies this object.

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 2403 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 >, XTR_DH, and DL_SimpleKeyAgreementDomainBase< GROUP_PARAMETERS::Element >.

Referenced by GenerateKeyPair().

virtual void SimpleKeyAgreementDomain::GeneratePublicKey ( RandomNumberGenerator rng,
const byte *  privateKey,
byte *  publicKey 
) const [pure 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()

Definition at line 921 of file cryptlib.cpp.

References GeneratePrivateKey(), and 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. re size of agreedValue == AgreedValueLength()
Precondition:
length of privateKey == PrivateKeyLength()
length of otherPublicKey == PublicKeyLength()

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

Referenced by DH2::Agree().

virtual std::string Algorithm::AlgorithmName (  )  const [inline, virtual, inherited]

Provides the name of this algorithm.

Returns:
the standard algorithm name

The standard algorithm name can be a name like AES or AES/GCM. Some algorithms do not have standard names yet. For example, there is no standard algorithm name for Shoup's ECIES.

Note:
AlgorithmName is not universally implemented yet

Reimplemented in Adler32, CCM_Base, CRC32, ClassNullRNG, AuthenticatedSymmetricCipher, DH_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, EAX_Base, StreamTransformationFilter, HashFilter, HashVerificationFilter, AuthenticatedDecryptionFilter, SignerFilter, SignatureVerificationFilter, GCM_Base, HMAC< T >, RDRAND, RDSEED, SHA3, BitBucket, and VMAC_Base.

Definition at line 488 of file cryptlib.h.

Referenced by BufferedTransformation::ChannelCreatePutSpace(), BufferedTransformation::ChannelFlush(), BufferedTransformation::ChannelMessageSeriesEnd(), BufferedTransformation::ChannelPut2(), TF_DecryptorBase::Decrypt(), TF_EncryptorBase::Encrypt(), StreamTransformation::ProcessLastBlock(), and PK_DefaultDecryptionFilter::Put2().

virtual Clonable* Clonable::Clone (  )  const [inline, virtual, inherited]

Copies this object.

Returns:
a copy of this object
Exceptions:
NotImplemented 
Note:
this is not implemented by most classes
See also:
NotCopyable

Definition at line 464 of file cryptlib.h.


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

Generated on 24 Mar 2016 for Crypto++ by  doxygen 1.6.1