MQV domain for performing authenticated key agreement. More...
Public Types | |
typedef GROUP_PARAMETERS | GroupParameters |
typedef GroupParameters::Element | Element |
typedef MQV_Domain < GROUP_PARAMETERS, COFACTOR_OPTION > | Domain |
Public Member Functions | |
MQV_Domain (const GroupParameters ¶ms) | |
MQV_Domain (BufferedTransformation &bt) | |
template<class T1 , class T2 > | |
MQV_Domain (T1 v1, T2 v2) | |
template<class T1 , class T2 , class T3 > | |
MQV_Domain (T1 v1, T2 v2, T3 v3) | |
template<class T1 , class T2 , class T3 , class T4 > | |
MQV_Domain (T1 v1, T2 v2, T3 v3, T4 v4) | |
const GroupParameters & | GetGroupParameters () const |
GroupParameters & | AccessGroupParameters () |
CryptoParameters & | AccessCryptoParameters () |
unsigned int | AgreedValueLength () const |
return length of agreed value produced | |
unsigned int | StaticPrivateKeyLength () const |
return length of static private keys in this domain | |
unsigned int | StaticPublicKeyLength () const |
return length of static public keys in this domain | |
void | GenerateStaticPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const |
generate static private key | |
void | GenerateStaticPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const |
generate static public key | |
unsigned int | EphemeralPrivateKeyLength () const |
return length of ephemeral private keys in this domain | |
unsigned int | EphemeralPublicKeyLength () const |
return length of ephemeral public keys in this domain | |
void | GenerateEphemeralPrivateKey (RandomNumberGenerator &rng, byte *privateKey) const |
Generate ephemeral private key. | |
void | GenerateEphemeralPublicKey (RandomNumberGenerator &rng, const byte *privateKey, byte *publicKey) const |
Generate ephemeral public key. | |
bool | Agree (byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const |
Derive agreed value. | |
virtual void | GenerateStaticKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
generate private/public key pair | |
virtual void | GenerateEphemeralKeyPair (RandomNumberGenerator &rng, byte *privateKey, byte *publicKey) const |
Generate private/public key pair. | |
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 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. |
MQV domain for performing authenticated key agreement.
GROUP_PARAMETERS | doamin parameters | |
COFACTOR_OPTION | cofactor option |
GROUP_PARAMETERS paramters include the curve coefcients and the base point. Binary curves use a polynomial to represent its characteristic, while prime curves use a prime number.
Definition at line 25 of file mqv.h.
void MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::GenerateStaticPrivateKey | ( | RandomNumberGenerator & | rng, | |
byte * | privateKey | |||
) | const [inline, virtual] |
generate static private key
Implements AuthenticatedKeyAgreementDomain.
Definition at line 61 of file mqv.h.
References Integer::Encode(), and Integer::One().
void MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::GenerateStaticPublicKey | ( | RandomNumberGenerator & | rng, | |
const byte * | privateKey, | |||
byte * | publicKey | |||
) | const [inline, virtual] |
generate static public key
re size of publicKey == PublicStaticKeyLength()
Implements AuthenticatedKeyAgreementDomain.
void MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::GenerateEphemeralPrivateKey | ( | RandomNumberGenerator & | rng, | |
byte * | privateKey | |||
) | const [inline, virtual] |
Generate ephemeral private key.
Implements AuthenticatedKeyAgreementDomain.
Definition at line 79 of file mqv.h.
References Integer::One().
void MQV_Domain< GROUP_PARAMETERS, COFACTOR_OPTION >::GenerateEphemeralPublicKey | ( | RandomNumberGenerator & | rng, | |
const byte * | privateKey, | |||
byte * | publicKey | |||
) | const [inline, virtual] |
Generate ephemeral public key.
Implements AuthenticatedKeyAgreementDomain.
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 [inline, 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.
Implements AuthenticatedKeyAgreementDomain.
Definition at line 94 of file mqv.h.
References Integer::BitCount(), Integer::Divide(), and Integer::Power2().
void AuthenticatedKeyAgreementDomain::GenerateStaticKeyPair | ( | RandomNumberGenerator & | rng, | |
byte * | privateKey, | |||
byte * | publicKey | |||
) | const [virtual, inherited] |
generate private/public key pair
Reimplemented in DH2.
Definition at line 927 of file cryptlib.cpp.
References AuthenticatedKeyAgreementDomain::GenerateStaticPrivateKey(), and AuthenticatedKeyAgreementDomain::GenerateStaticPublicKey().
void AuthenticatedKeyAgreementDomain::GenerateEphemeralKeyPair | ( | RandomNumberGenerator & | rng, | |
byte * | privateKey, | |||
byte * | publicKey | |||
) | const [virtual, inherited] |
Generate private/public key pair.
Reimplemented in DH2.
Definition at line 933 of file cryptlib.cpp.
References AuthenticatedKeyAgreementDomain::GenerateEphemeralPrivateKey(), and AuthenticatedKeyAgreementDomain::GenerateEphemeralPublicKey().
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.