Interface for domains of authenticated key agreement protocols. More...
Public Member Functions | |
virtual unsigned int | AgreedValueLength () const =0 |
return length of agreed value produced | |
virtual unsigned int | StaticPrivateKeyLength () const =0 |
return length of static private keys in this domain | |
virtual unsigned int | StaticPublicKeyLength () const =0 |
return length of static public keys in this domain | |
virtual void | GenerateStaticPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const =0 |
generate static private key | |
virtual void | GenerateStaticPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0 |
generate static public key | |
virtual void | GenerateStaticKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
generate private/public key pair | |
virtual unsigned int | EphemeralPrivateKeyLength () const =0 |
return length of ephemeral private keys in this domain | |
virtual unsigned int | EphemeralPublicKeyLength () const =0 |
return length of ephemeral public keys in this domain | |
virtual void | GenerateEphemeralPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const =0 |
Generate ephemeral private key. | |
virtual void | GenerateEphemeralPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0 |
Generate ephemeral public key. | |
virtual void | GenerateEphemeralKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
Generate private/public key pair. | |
virtual bool | Agree (byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const =0 |
Derive agreed value. | |
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 |
Provides the name of this algorithm. | |
virtual Clonable * | Clone () const |
Copies this object. |
Interface for domains of authenticated key agreement protocols.
In an authenticated key agreement protocol, each party has two key pairs. The long-lived key pair is called the static key pair, and the short-lived key pair is called the ephemeral key pair.
Definition at line 2445 of file cryptlib.h.
virtual void AuthenticatedKeyAgreementDomain::GenerateStaticPrivateKey | ( | RandomNumberGenerator & | rng, | |
byte * | privateKey | |||
) | const [pure virtual] |
generate static private key
Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.
Referenced by GenerateStaticKeyPair().
virtual void AuthenticatedKeyAgreementDomain::GenerateStaticPublicKey | ( | RandomNumberGenerator & | rng, | |
const byte * | privateKey, | |||
byte * | publicKey | |||
) | const [pure virtual] |
generate static public key
re size of publicKey == PublicStaticKeyLength()
Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.
Referenced by GenerateStaticKeyPair().
void AuthenticatedKeyAgreementDomain::GenerateStaticKeyPair | ( | RandomNumberGenerator & | rng, | |
byte * | privateKey, | |||
byte * | publicKey | |||
) | const [virtual] |
generate private/public key pair
Reimplemented in DH2.
Definition at line 927 of file cryptlib.cpp.
References GenerateStaticPrivateKey(), and GenerateStaticPublicKey().
virtual void AuthenticatedKeyAgreementDomain::GenerateEphemeralPrivateKey | ( | RandomNumberGenerator & | rng, | |
byte * | privateKey | |||
) | const [pure virtual] |
Generate ephemeral private key.
Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.
Referenced by GenerateEphemeralKeyPair().
virtual void AuthenticatedKeyAgreementDomain::GenerateEphemeralPublicKey | ( | RandomNumberGenerator & | rng, | |
const byte * | privateKey, | |||
byte * | publicKey | |||
) | const [pure virtual] |
Generate ephemeral public key.
Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.
Referenced by GenerateEphemeralKeyPair().
void AuthenticatedKeyAgreementDomain::GenerateEphemeralKeyPair | ( | RandomNumberGenerator & | rng, | |
byte * | privateKey, | |||
byte * | publicKey | |||
) | const [virtual] |
Generate private/public key pair.
Reimplemented in DH2.
Definition at line 933 of file cryptlib.cpp.
References GenerateEphemeralPrivateKey(), and GenerateEphemeralPublicKey().
virtual bool AuthenticatedKeyAgreementDomain::Agree | ( | byte * | agreedValue, | |
const byte * | staticPrivateKey, | |||
const byte * | ephemeralPrivateKey, | |||
const byte * | staticOtherPublicKey, | |||
const byte * | ephemeralOtherPublicKey, | |||
bool | validateStaticOtherPublicKey = true | |||
) | const [pure virtual] |
Derive agreed value.
Agree() derives an agreed value from your private keys and couterparty's public keys
The ephemeral public key will always be validated. If you have previously validated the static public key, use validateStaticOtherPublicKey=false to save time.
Implemented in DH2, and MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >.
virtual std::string Algorithm::AlgorithmName | ( | ) | const [inline, virtual, inherited] |
Provides the name of this algorithm.
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.
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.
NotImplemented |
Definition at line 464 of file cryptlib.h.