|
Crypto++
8.4
Free C++ class library of cryptographic schemes
|
Interface for domains of authenticated key agreement protocols. More...
Inheritance diagram for AuthenticatedKeyAgreementDomain:Public Member Functions | |
| virtual unsigned int | AgreedValueLength () const =0 |
| Provides the size of the agreed value. More... | |
| virtual unsigned int | StaticPrivateKeyLength () const =0 |
| Provides the size of the static private key. More... | |
| virtual unsigned int | StaticPublicKeyLength () const =0 |
| Provides the size of the static public key. More... | |
| virtual void | GenerateStaticPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const =0 |
| Generate static private key in this domain. More... | |
| virtual void | GenerateStaticPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0 |
| Generate a static public key from a private key in this domain. More... | |
| virtual void | GenerateStaticKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
| Generate a static private/public key pair. More... | |
| virtual unsigned int | EphemeralPrivateKeyLength () const =0 |
| Provides the size of ephemeral private key. More... | |
| virtual unsigned int | EphemeralPublicKeyLength () const =0 |
| Provides the size of ephemeral public key. More... | |
| virtual void | GenerateEphemeralPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const =0 |
| Generate ephemeral private key. More... | |
| virtual void | GenerateEphemeralPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const =0 |
| Generate ephemeral public key. More... | |
| virtual void | GenerateEphemeralKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
| Generate private/public key pair. More... | |
| 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. More... | |
Public Member Functions inherited from KeyAgreementAlgorithm | |
| CryptoMaterial & | AccessMaterial () |
| Retrieves a reference to Crypto Parameters. More... | |
| const CryptoMaterial & | GetMaterial () const |
| Retrieves a reference to Crypto Parameters. More... | |
| virtual CryptoParameters & | AccessCryptoParameters ()=0 |
| Retrieves a reference to Crypto Parameters. More... | |
| virtual const CryptoParameters & | GetCryptoParameters () const |
| Retrieves a reference to Crypto Parameters. More... | |
Public Member Functions inherited from Algorithm | |
| Algorithm (bool checkSelfTestStatus=true) | |
| Interface for all crypto algorithms. More... | |
| virtual std::string | AlgorithmName () const |
| Provides the name of this algorithm. More... | |
| virtual std::string | AlgorithmProvider () const |
| Retrieve the provider of this algorithm. More... | |
Public Member Functions inherited from Clonable | |
| virtual Clonable * | Clone () const |
| Copies this object. More... | |
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 3054 of file cryptlib.h.
|
pure virtual |
Provides the size of the agreed value.
Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.
|
pure virtual |
Provides the size of the static private key.
Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.
|
pure virtual |
Provides the size of the static public key.
Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.
|
pure virtual |
Generate static private key in this domain.
| rng | a RandomNumberGenerator derived class |
| privateKey | a byte buffer for the generated private key in this domain |
COUNTOF(privateKey) == PrivateStaticKeyLength() Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.
|
pure virtual |
Generate a static public key from a private key in this domain.
| rng | a RandomNumberGenerator derived class |
| privateKey | a byte buffer with the previously generated private key |
| publicKey | a byte buffer for the generated public key in this domain |
COUNTOF(publicKey) == PublicStaticKeyLength() Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.
|
virtual |
Generate a static private/public key pair.
| rng | a RandomNumberGenerator derived class |
| privateKey | a byte buffer for the generated private key in this domain |
| publicKey | a byte buffer for the generated public key in this domain GenerateStaticKeyPair() is equivalent to calling GenerateStaticPrivateKey() and then GenerateStaticPublicKey(). |
COUNTOF(privateKey) == PrivateStaticKeyLength() COUNTOF(publicKey) == PublicStaticKeyLength() Reimplemented in DH2.
|
pure virtual |
Provides the size of ephemeral private key.
Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.
|
pure virtual |
Provides the size of ephemeral public key.
Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.
|
pure virtual |
Generate ephemeral private key.
| rng | a RandomNumberGenerator derived class |
| privateKey | a byte buffer for the generated private key in this domain |
COUNTOF(privateKey) == PrivateEphemeralKeyLength() Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.
|
pure virtual |
Generate ephemeral public key.
| rng | a RandomNumberGenerator derived class |
| privateKey | a byte buffer for the generated private key in this domain |
| publicKey | a byte buffer for the generated public key in this domain |
COUNTOF(publicKey) == PublicEphemeralKeyLength() Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.
|
virtual |
Generate private/public key pair.
| rng | a RandomNumberGenerator derived class |
| privateKey | a byte buffer for the generated private key in this domain |
| publicKey | a byte buffer for the generated public key in this domain GenerateEphemeralKeyPair() is equivalent to calling GenerateEphemeralPrivateKey() and then GenerateEphemeralPublicKey() |
Reimplemented in DH2.
|
pure virtual |
Derive agreed value.
| agreedValue | a byte buffer for the shared secret |
| staticPrivateKey | a byte buffer with your static private key in this domain |
| ephemeralPrivateKey | a byte buffer with your ephemeral private key in this domain |
| staticOtherPublicKey | a byte buffer with the other party's static public key in this domain |
| ephemeralOtherPublicKey | a byte buffer with the other party's ephemeral public key in this domain |
| validateStaticOtherPublicKey | a flag indicating if the other party's public key should be validated |
validateStaticOtherPublicKey=false to save time. COUNTOF(agreedValue) == AgreedValueLength() COUNTOF(staticPrivateKey) == StaticPrivateKeyLength() COUNTOF(ephemeralPrivateKey) == EphemeralPrivateKeyLength() COUNTOF(staticOtherPublicKey) == StaticPublicKeyLength() COUNTOF(ephemeralOtherPublicKey) == EphemeralPublicKeyLength() Implemented in MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >, HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, FHMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >, and DH2.