|
| MQV_Domain () |
| Construct a MQV domain.
|
|
| MQV_Domain (const GroupParameters ¶ms) |
| Construct a MQV domain.
|
|
| MQV_Domain (BufferedTransformation &bt) |
| Construct a MQV domain.
|
|
template<class T1 , class T2 > |
| MQV_Domain (T1 v1, T2 v2) |
| Construct a MQV domain.
|
|
template<class T1 , class T2 , class T3 > |
| MQV_Domain (T1 v1, T2 v2, T3 v3) |
| Construct a MQV domain.
|
|
template<class T1 , class T2 , class T3 , class T4 > |
| MQV_Domain (T1 v1, T2 v2, T3 v3, T4 v4) |
| Construct a MQV domain.
|
|
const GroupParameters & | GetGroupParameters () const |
| Retrieves the group parameters for this domain.
|
|
GroupParameters & | AccessGroupParameters () |
| Retrieves the group parameters for this domain.
|
|
CryptoParameters & | AccessCryptoParameters () |
| Retrieves the crypto parameters for this domain.
|
|
unsigned int | AgreedValueLength () const |
| Provides the size of the agreed value.
|
|
unsigned int | StaticPrivateKeyLength () const |
| Provides the size of the static private key.
|
|
unsigned int | StaticPublicKeyLength () const |
| Provides the size of the static public key.
|
|
void | GenerateStaticPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const |
| Generate static private key in this domain.
|
|
void | GenerateStaticPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const |
| Generate a static public key from a private key in this domain.
|
|
unsigned int | EphemeralPrivateKeyLength () const |
| Provides the size of the ephemeral private key.
|
|
unsigned int | EphemeralPublicKeyLength () const |
| Provides the size of the ephemeral public key.
|
|
void | GenerateEphemeralPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const |
| Generate ephemeral private key in this domain.
|
|
void | GenerateEphemeralPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const |
| Generate ephemeral public key from a private key in this domain.
|
|
bool | Agree (byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const |
| Derive agreed value or shared secret.
|
|
Public Member Functions inherited from AuthenticatedKeyAgreementDomain |
virtual void | GenerateStaticKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
| Generate a static private/public key pair.
|
|
virtual void | GenerateEphemeralKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
| Generate private/public key pair.
|
|
CryptoMaterial & | AccessMaterial () |
| Retrieves a reference to Crypto Parameters.
|
|
const CryptoMaterial & | GetMaterial () const |
| Retrieves a reference to Crypto Parameters.
|
|
virtual const CryptoParameters & | GetCryptoParameters () const |
| Retrieves a reference to Crypto Parameters.
|
|
| Algorithm (bool checkSelfTestStatus=true) |
| Interface for all crypto algorithms.
|
|
virtual std::string | AlgorithmName () const |
| Provides the name of this algorithm.
|
|
virtual std::string | AlgorithmProvider () const |
| Retrieve the provider of this algorithm.
|
|
virtual Clonable * | Clone () const |
| Copies this object.
|
|
template<class GROUP_PARAMETERS, class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption>
class MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >
MQV domain for performing authenticated key agreement.
- Template Parameters
-
GROUP_PARAMETERS | doamin parameters |
COFACTOR_OPTION | cofactor option |
GROUP_PARAMETERS parameters include the curve coefcients and the base point. Binary curves use a polynomial to represent its characteristic, while prime curves use a prime number.
- See also
- MQV, HMQV, FHMQV, and AuthenticatedKeyAgreementDomain
- Since
- Crypto++ 3.0
Definition at line 28 of file mqv.h.
template<class GROUP_PARAMETERS , class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption>
template<class T1 , class T2 , class T3 >
Construct a MQV domain.
- Template Parameters
-
T1 | template parameter used as a constructor parameter |
T2 | template parameter used as a constructor parameter |
T3 | template parameter used as a constructor parameter |
- Parameters
-
v1 | first parameter |
v2 | second parameter |
v3 | third parameter |
v1, v2 and v3 are passed directly to the GROUP_PARAMETERS object.
Definition at line 67 of file mqv.h.
template<class GROUP_PARAMETERS , class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption>
template<class T1 , class T2 , class T3 , class T4 >
Construct a MQV domain.
- Template Parameters
-
T1 | template parameter used as a constructor parameter |
T2 | template parameter used as a constructor parameter |
T3 | template parameter used as a constructor parameter |
T4 | template parameter used as a constructor parameter |
- Parameters
-
v1 | first parameter |
v2 | second parameter |
v3 | third parameter |
v4 | third parameter |
v1, v2, v3 and v4 are passed directly to the GROUP_PARAMETERS object.
Definition at line 81 of file mqv.h.
template<class GROUP_PARAMETERS , class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption>
bool MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::Agree |
( |
byte * |
agreedValue, |
|
|
const byte * |
staticPrivateKey, |
|
|
const byte * |
ephemeralPrivateKey, |
|
|
const byte * |
staticOtherPublicKey, |
|
|
const byte * |
ephemeralOtherPublicKey, |
|
|
bool |
validateStaticOtherPublicKey = true |
|
) |
| const |
|
inlinevirtual |
Derive agreed value or shared secret.
- Parameters
-
agreedValue | the shared secret |
staticPrivateKey | your long term private key |
ephemeralPrivateKey | your ephemeral private key |
staticOtherPublicKey | couterparty's long term public key |
ephemeralOtherPublicKey | couterparty's ephemeral public key |
validateStaticOtherPublicKey | flag indicating validation |
- Returns
- true upon success, false in case of failure
Agree() performs the authenticated key agreement. Agree() derives a shared secret from your private keys and couterparty's public keys. Each instance or run of the protocol should use a new ephemeral key pair.
The other's ephemeral public key will always be validated at Level 1 to ensure it is a point on the curve. validateStaticOtherPublicKey
determines how thoroughly other's static public key is validated. If you have previously validated the couterparty's static public key, then use validateStaticOtherPublicKey=false
to save time.
- Precondition
COUNTOF(agreedValue) == AgreedValueLength()
-
COUNTOF(staticPrivateKey) == StaticPrivateKeyLength()
-
COUNTOF(ephemeralPrivateKey) == EphemeralPrivateKeyLength()
-
COUNTOF(staticOtherPublicKey) == StaticPublicKeyLength()
-
COUNTOF(ephemeralOtherPublicKey) == EphemeralPublicKeyLength()
Implements AuthenticatedKeyAgreementDomain.
Definition at line 205 of file mqv.h.
template<class GROUP_PARAMETERS , class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption>
unsigned int MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::AgreedValueLength |
( |
| ) |
const |
|
inlinevirtual |
Provides the size of the agreed value.
- Returns
- size of agreed value produced in this domain
The length is calculated using GetEncodedElementSize(false)
, which means the element is encoded in a non-reversible format. A non-reversible format means its a raw byte array, and it lacks presentation format like an ASN.1 BIT_STRING or OCTET_STRING.
Implements AuthenticatedKeyAgreementDomain.
Definition at line 102 of file mqv.h.
template<class GROUP_PARAMETERS , class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption>
unsigned int MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::EphemeralPrivateKeyLength |
( |
| ) |
const |
|
inlinevirtual |
Provides the size of the ephemeral private key.
- Returns
- size of ephemeral private keys in this domain
An ephemeral private key is a private key and public key. The serialized size is different than a static private key.
Implements AuthenticatedKeyAgreementDomain.
Definition at line 150 of file mqv.h.
template<class GROUP_PARAMETERS , class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption>
unsigned int MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::EphemeralPublicKeyLength |
( |
| ) |
const |
|
inlinevirtual |
Provides the size of the ephemeral public key.
- Returns
- size of ephemeral public keys in this domain
An ephemeral public key is a public key. The serialized size is the same as a static public key.
Implements AuthenticatedKeyAgreementDomain.
Definition at line 156 of file mqv.h.
template<class GROUP_PARAMETERS , class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption>
Generate a static public key from a private key in this domain.
- Parameters
-
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 |
The public key is an element or point on the curve, and its stored in a revrsible format. A reversible format means it has a presentation format, and its an ANS.1 encoded element or point.
- Precondition
COUNTOF(publicKey) == PublicStaticKeyLength()
Implements AuthenticatedKeyAgreementDomain.
Definition at line 137 of file mqv.h.
template<class GROUP_PARAMETERS , class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption>
unsigned int MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::StaticPublicKeyLength |
( |
| ) |
const |
|
inlinevirtual |
Provides the size of the static public key.
- Returns
- size of static public keys in this domain
The length is calculated using GetEncodedElementSize(true)
, which means the element is encoded in a reversible format. A reversible format means it has a presentation format, and its an ANS.1 encoded element or point.
Implements AuthenticatedKeyAgreementDomain.
Definition at line 115 of file mqv.h.