Crypto++  5.6.3
Free C++ class library of cryptographic schemes
Public Member Functions | List of all members
SimpleKeyAgreementDomain Class Referenceabstract

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

+ 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...
 
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. More...
 
virtual ClonableClone () const
 Copies this object. More...
 

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

Referenced by FixedRNG::GenerateBlock().

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() re length of privateKey == PrivateKeyLength() re length of otherPublicKey == PublicKeyLength()

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

Referenced by DH2::Agree(), and FixedRNG::GenerateBlock().

virtual std::string Algorithm::AlgorithmName ( ) const
inlinevirtualinherited

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 AuthenticatedSymmetricCipher, SignatureVerificationFilter, SignerFilter, AuthenticatedDecryptionFilter, HashVerificationFilter, HashFilter, StreamTransformationFilter, ClassNullRNG, BitBucket, RDSEED, DH_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMAC< T >, RDRAND, CRC32, GCM_Base, Adler32, EAX_Base, CCM_Base, SHA3, and VMAC_Base.

Definition at line 488 of file cryptlib.h.

Referenced by VariableRounds< 6, 2 >::StaticGetDefaultRounds().

virtual Clonable* Clonable::Clone ( ) const
inlinevirtualinherited

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: