summaryrefslogtreecommitdiff
path: root/mqv.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2019-08-05 03:51:58 -0400
committerGitHub <noreply@github.com>2019-08-05 03:51:58 -0400
commitc9ef9420e762b91cc06463d349cf06e04c749b9d (patch)
tree69a074fcf855a9f8b04d12b359904217e9ea618f /mqv.cpp
parentb3eb4c6a690d6dfb342856f2a66a71dcec8c429b (diff)
downloadcryptopp-git-c9ef9420e762b91cc06463d349cf06e04c749b9d.tar.gz
Fix ECP leakage in Add() and Double() (GH #869, PR #871)
This check-in provides the fix for leaks in ECP's Add() and Double(). The fixes were taken from Joost Renes, Craig Costello, and Lejla Batina's [Complete addition formulas for prime order elliptic curves](https://eprint.iacr.org/2015/1060.pdf). The Pull Request includes two additional changes that were related to testing the primary fix. First, an `AuthenticatedKeyAgreementWithRolesValidate` interface was added. It allows us to test key agreement when roles are involved. Roles are "client", "server", "initiator", "recipient", etc. Second, `SetGlobalSeed` was added to `test.cpp` to help with reproducible results. We had code in two different places that set the seed value for the random number generator. But it was sloppy and doing a poor job since results could not be reproduced under some circumstances.
Diffstat (limited to 'mqv.cpp')
-rw-r--r--mqv.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/mqv.cpp b/mqv.cpp
index 1189dfb1..ef886251 100644
--- a/mqv.cpp
+++ b/mqv.cpp
@@ -7,6 +7,7 @@
#include "mqv.h"
#include "hmqv.h"
#include "fhmqv.h"
+#include "eccrypto.h"
// Squash MS LNK4221 and libtool warnings
extern const char MQV_FNAME[] = __FILE__;
@@ -16,17 +17,29 @@ NAMESPACE_BEGIN(CryptoPP)
#if defined(CRYPTOPP_DEBUG) && !defined(CRYPTOPP_DOXYGEN_PROCESSING)
void TestInstantiations_MQV()
{
- MQV mqv;
+ MQV mqv;
+ ECMQV<ECP> ecmqv;
+
+ CRYPTOPP_UNUSED(mqv);
+ CRYPTOPP_UNUSED(ecmqv);
}
void TestInstantiations_HMQV()
{
HMQV hmqv;
+ ECHMQV<ECP> echmqv;
+
+ CRYPTOPP_UNUSED(hmqv);
+ CRYPTOPP_UNUSED(echmqv);
}
void TestInstantiations_FHMQV()
{
FHMQV fhmqv;
+ ECFHMQV<ECP> ecfhmqv;
+
+ CRYPTOPP_UNUSED(fhmqv);
+ CRYPTOPP_UNUSED(ecfhmqv);
}
#endif