summaryrefslogtreecommitdiff
path: root/src/LibgmpDHKeyExchange.cc
diff options
context:
space:
mode:
authorNils Maier <maierman@web.de>2014-04-13 18:01:05 +0200
committerNils Maier <maierman@web.de>2014-04-13 18:51:06 +0200
commitaa02545fbaa4a2d2a8e341d0776636059a3000ef (patch)
tree023efde8c6310e36dd392a399bac71735151a408 /src/LibgmpDHKeyExchange.cc
parentead6685b1825938222e39a5f65fcdb0c35497ced (diff)
Use mpz_pown_sec where available
Diffstat (limited to 'src/LibgmpDHKeyExchange.cc')
-rw-r--r--src/LibgmpDHKeyExchange.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/LibgmpDHKeyExchange.cc b/src/LibgmpDHKeyExchange.cc
index a8f9810d..b4b9d55b 100644
--- a/src/LibgmpDHKeyExchange.cc
+++ b/src/LibgmpDHKeyExchange.cc
@@ -86,7 +86,11 @@ void DHKeyExchange::init
void DHKeyExchange::generatePublicKey()
{
+#if HAVE_GMP_SEC
+ mpz_powm_sec(publicKey_, generator_, privateKey_, prime_);
+#else // HAVE_GMP_SEC
mpz_powm(publicKey_, generator_, privateKey_, prime_);
+#endif // HAVE_GMP_SEC
}
size_t DHKeyExchange::getPublicKey(unsigned char* out, size_t outLength) const
@@ -126,7 +130,13 @@ size_t DHKeyExchange::computeSecret
mpz_import(peerPublicKey, peerPublicKeyLength, 1, 1, 1, 0, peerPublicKeyData);
mpz_t secret;
mpz_init(secret);
+
+#if HAVE_GMP_SEC
+ mpz_powm_sec(secret, peerPublicKey, privateKey_, prime_);
+#else // HAVE_GMP_SEC
mpz_powm(secret, peerPublicKey, privateKey_, prime_);
+#endif // HAVE_GMP_SEC
+
mpz_clear(peerPublicKey);
memset(out, 0, outLength);