Fabcoin Core
0.16.2
P2P Digital Currency
|
Hashed Menezes-Qu-Vanstone in GF(p) More...
#include <hmqv.h>
Public Types | |
typedef GROUP_PARAMETERS | GroupParameters |
typedef GroupParameters::Element | Element |
typedef HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH > | Domain |
Public Member Functions | |
virtual | ~HMQV_Domain () |
HMQV_Domain (bool clientRole=true) | |
HMQV_Domain (const GroupParameters ¶ms, bool clientRole=true) | |
HMQV_Domain (BufferedTransformation &bt, bool clientRole=true) | |
template<class T1 > | |
HMQV_Domain (T1 v1, bool clientRole=true) | |
template<class T1 , class T2 > | |
HMQV_Domain (T1 v1, T2 v2, bool clientRole=true) | |
template<class T1 , class T2 , class T3 > | |
HMQV_Domain (T1 v1, T2 v2, T3 v3, bool clientRole=true) | |
template<class T1 , class T2 , class T3 , class T4 > | |
HMQV_Domain (T1 v1, T2 v2, T3 v3, T4 v4, bool clientRole=true) | |
const GroupParameters & | GetGroupParameters () const |
GroupParameters & | AccessGroupParameters () |
CryptoParameters & | AccessCryptoParameters () |
Retrieves a reference to Crypto Parameters. More... | |
unsigned int | AgreedValueLength () const |
return length of agreed value produced More... | |
unsigned int | StaticPrivateKeyLength () const |
return length of static private keys in this domain More... | |
unsigned int | StaticPublicKeyLength () const |
return length of static public keys in this domain More... | |
void | GenerateStaticPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const |
generate static private key More... | |
void | GenerateStaticPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const |
generate static public key More... | |
unsigned int | EphemeralPrivateKeyLength () const |
Provides the size of ephemeral private key. More... | |
unsigned int | EphemeralPublicKeyLength () const |
Provides the size of ephemeral public key. More... | |
void | GenerateEphemeralPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const |
return length of ephemeral private keys in this domain More... | |
void | GenerateEphemeralPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const |
return length of ephemeral public keys in this domain More... | |
bool | Agree (byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const |
derive agreed value from your private keys and couterparty's public keys, return false in case of failure More... | |
Public Member Functions inherited from AuthenticatedKeyAgreementDomain | |
virtual | ~AuthenticatedKeyAgreementDomain () |
virtual void | GenerateStaticKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
Generate a static private/public key pair. More... | |
virtual void | GenerateEphemeralKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
Generate private/public key pair. More... | |
Public Member Functions inherited from KeyAgreementAlgorithm | |
virtual | ~KeyAgreementAlgorithm () |
CryptoMaterial & | AccessMaterial () |
Retrieves a reference to Crypto Parameters. More... | |
const CryptoMaterial & | GetMaterial () const |
Retrieves a reference to Crypto Parameters. More... | |
virtual const CryptoParameters & | GetCryptoParameters () const |
Retrieves a reference to Crypto Parameters. More... | |
Public Member Functions inherited from AsymmetricAlgorithm | |
virtual | ~AsymmetricAlgorithm () |
void | BERDecode (BufferedTransformation &bt) |
Loads this object from a BufferedTransformation. More... | |
void | DEREncode (BufferedTransformation &bt) const |
Saves this object to a BufferedTransformation. More... | |
Public Member Functions inherited from Algorithm | |
virtual | ~Algorithm () |
Algorithm (bool checkSelfTestStatus=true) | |
Interface for all crypto algorithms. More... | |
virtual std::string | AlgorithmName () const |
Provides the name of this algorithm. More... | |
Public Member Functions inherited from Clonable | |
virtual | ~Clonable () |
virtual Clonable * | Clone () const |
Copies this object. More... | |
Protected Member Functions | |
void | Hash (const Element *sigma, const byte *e1, size_t e1len, const byte *s1, size_t s1len, byte *digest, size_t dlen) const |
Private Types | |
enum | KeyAgreementRole { RoleServer = 1, RoleClient } |
Private Member Functions | |
DL_GroupParameters< Element > & | AccessAbstractGroupParameters () |
const DL_GroupParameters< Element > & | GetAbstractGroupParameters () const |
Private Attributes | |
GroupParameters | m_groupParameters |
KeyAgreementRole | m_role |
Hashed Menezes-Qu-Vanstone in GF(p)
This implementation follows Hugo Krawczyk's HMQV: A High-Performance Secure Diffie-Hellman Protocol. Note: this implements HMQV only. HMQV-C with Key Confirmation is not provided.
typedef HMQV_Domain<GROUP_PARAMETERS, COFACTOR_OPTION, HASH> HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >::Domain |
typedef GroupParameters::Element HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >::Element |
typedef GROUP_PARAMETERS HMQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION, HASH >::GroupParameters |
|
private |
|
inlinevirtual |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineprivate |
|
inlinevirtual |
Retrieves a reference to Crypto Parameters.
Implements KeyAgreementAlgorithm.
|
inline |
|
inlinevirtual |
derive agreed value from your private keys and couterparty's public keys, return false in case of failure
Implements AuthenticatedKeyAgreementDomain.
Definition at line 123 of file hmqv.h.
|
inlinevirtual |
return length of agreed value produced
Implements AuthenticatedKeyAgreementDomain.
Definition at line 69 of file hmqv.h.
|
inlinevirtual |
Provides the size of ephemeral private key.
Implements AuthenticatedKeyAgreementDomain.
Definition at line 94 of file hmqv.h.
|
inlinevirtual |
Provides the size of ephemeral public key.
Implements AuthenticatedKeyAgreementDomain.
Definition at line 95 of file hmqv.h.
|
inlinevirtual |
return length of ephemeral private keys in this domain
Implements AuthenticatedKeyAgreementDomain.
Definition at line 98 of file hmqv.h.
|
inlinevirtual |
return length of ephemeral public keys in this domain
Implements AuthenticatedKeyAgreementDomain.
Definition at line 108 of file hmqv.h.
|
inlinevirtual |
generate static private key
Implements AuthenticatedKeyAgreementDomain.
Definition at line 77 of file hmqv.h.
|
inlinevirtual |
generate static public key
Implements AuthenticatedKeyAgreementDomain.
Definition at line 85 of file hmqv.h.
|
inlineprivate |
|
inline |
|
inlineprotected |
|
inlinevirtual |
return length of static private keys in this domain
Implements AuthenticatedKeyAgreementDomain.
Definition at line 71 of file hmqv.h.
|
inlinevirtual |
return length of static public keys in this domain
Implements AuthenticatedKeyAgreementDomain.
Definition at line 73 of file hmqv.h.
|
private |
|
private |