ECDH alternative implementation support

Add alternative implementation support for ECDH at the higher layer
diff --git a/ChangeLog b/ChangeLog
index 243bd6b..a2a2a36 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -36,6 +36,10 @@
    * Clarify ECDSA documentation and improve the sample code to avoid
      misunderstandings and potentially dangerous use of the API. Pointed out
      by Jean-Philippe Aumasson.
+   * Add support for alternative implementation for ECDH, controlled by new
+     configuration flag MBEDTLS_ECDH_ALT in config.h.
+     Alternative Ecdh is supported for implementation of `mbedtls_ecdh_gen_public`
+     and `mbedtls_ecdh_compute_shared`.
 
 = mbed TLS 2.5.0 branch released 2017-05-17
 
diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h
index c4b8995..a29312a 100644
--- a/include/mbedtls/config.h
+++ b/include/mbedtls/config.h
@@ -238,6 +238,7 @@
 //#define MBEDTLS_BLOWFISH_ALT
 //#define MBEDTLS_CAMELLIA_ALT
 //#define MBEDTLS_DES_ALT
+//#define MBEDTLS_ECDH_ALT
 //#define MBEDTLS_XTEA_ALT
 //#define MBEDTLS_MD2_ALT
 //#define MBEDTLS_MD4_ALT
diff --git a/library/ecdh.c b/library/ecdh.c
index c0a8147..b66cb58 100644
--- a/library/ecdh.c
+++ b/library/ecdh.c
@@ -38,6 +38,7 @@
 
 #include <string.h>
 
+#if !defined(MBEDTLS_ECDH_ALT)
 /*
  * Generate public key: simple wrapper around mbedtls_ecp_gen_keypair
  */
@@ -81,7 +82,7 @@
 
     return( ret );
 }
-
+#endif /* MBEDTLS_ECDH_ALT */
 /*
  * Initialize context
  */
diff --git a/library/version_features.c b/library/version_features.c
index 9f97c7b..7b08f04 100644
--- a/library/version_features.c
+++ b/library/version_features.c
@@ -93,6 +93,9 @@
 #if defined(MBEDTLS_DES_ALT)
     "MBEDTLS_DES_ALT",
 #endif /* MBEDTLS_DES_ALT */
+#if defined(MBEDTLS_ECDH_ALT)
+    "MBEDTLS_ECDH_ALT",
+#endif /* MBEDTLS_ECDH_ALT */
 #if defined(MBEDTLS_XTEA_ALT)
     "MBEDTLS_XTEA_ALT",
 #endif /* MBEDTLS_XTEA_ALT */