with the following hack to OpenVPN's ssl.c code:
--- ssl.c 2011-06-24 08:13:39.000000000 +0200
+++ /home/janjust/src/openvpn-2.2.1/ssl.c 2011-09-08 00:04:37.000000000 +0200
@@ -1588,6 +1588,7 @@
DH *dh;
BIO *bio;
bool using_cert_file = false;
+ EC_KEY *ecdh=NULL;
ERR_clear_error ();
@@ -1622,6 +1623,16 @@
msg (D_TLS_DEBUG_LOW, "Diffie-Hellman initialized with %d bit key",
8 * DH_size (dh));
DH_free (dh);
+
+ ecdh = EC_KEY_new_by_curve_name(NID_secp224r1);
+
+ if (ecdh == NULL)
+ msg (M_SSLERR, "Unable to create curve (NID_secp224r1)");
+
+ if (!SSL_CTX_set_tmp_ecdh(ctx, ecdh))
+ msg (M_SSLERR, "SSL_CTX_set_tmp_ecdh");
+
+ EC_KEY_free(ecdh);
}
else /* if client */
{
I can use the ecdsa-with-SHA512 signed certificates ; the 'no shared cipher' message is gone and the TLS control channel is now encrypted using
Sep 8 12:49:57 2011 us=360534 X.X.X.X:60345 Control Channel: TLSv1, cipher TLSv1/SSLv3 ECDHE-ECDSA-AES256-SHA
I am not sure how to test whether the
data channel , which uses a separate cipher and digest (signing) algorithm, is also signed using ECDSA enabled keys.