diff --git a/library/ecdh.c b/library/ecdh.c
index cae3b29..b8a7dbf 100644
--- a/library/ecdh.c
+++ b/library/ecdh.c
@@ -126,9 +126,18 @@
  */
 void mbedtls_ecdh_init( mbedtls_ecdh_context *ctx )
 {
-    memset( ctx, 0, sizeof( mbedtls_ecdh_context ) );
+    mbedtls_ecp_group_init( &ctx->grp );
+    mbedtls_mpi_init( &ctx->d  );
+    mbedtls_ecp_point_init( &ctx->Q   );
+    mbedtls_ecp_point_init( &ctx->Qp  );
+    mbedtls_mpi_init( &ctx->z  );
+    ctx->point_format = MBEDTLS_ECP_PF_UNCOMPRESSED;
+    mbedtls_ecp_point_init( &ctx->Vi  );
+    mbedtls_ecp_point_init( &ctx->Vf  );
+    mbedtls_mpi_init( &ctx->_d );
 
 #if defined(MBEDTLS_ECP_RESTARTABLE)
+    ctx->restart_enabled = 0;
     mbedtls_ecp_restart_init( &ctx->rs );
 #endif
 }
@@ -142,17 +151,19 @@
         return;
 
     mbedtls_ecp_group_free( &ctx->grp );
+    mbedtls_mpi_free( &ctx->d  );
     mbedtls_ecp_point_free( &ctx->Q   );
     mbedtls_ecp_point_free( &ctx->Qp  );
+    mbedtls_mpi_free( &ctx->z  );
     mbedtls_ecp_point_free( &ctx->Vi  );
     mbedtls_ecp_point_free( &ctx->Vf  );
-    mbedtls_mpi_free( &ctx->d  );
-    mbedtls_mpi_free( &ctx->z  );
     mbedtls_mpi_free( &ctx->_d );
 
 #if defined(MBEDTLS_ECP_RESTARTABLE)
     mbedtls_ecp_restart_free( &ctx->rs );
 #endif
+
+    mbedtls_ecdh_init( ctx );
 }
 
 #if defined(MBEDTLS_ECP_RESTARTABLE)
diff --git a/library/ecdsa.c b/library/ecdsa.c
index 19d0004..f3b3cf2 100644
--- a/library/ecdsa.c
+++ b/library/ecdsa.c
@@ -69,7 +69,9 @@
  */
 static void ecdsa_restart_ver_init( mbedtls_ecdsa_restart_ver_ctx *ctx )
 {
-    memset( ctx, 0, sizeof( *ctx ) );
+    mbedtls_mpi_init( &ctx->u1 );
+    mbedtls_mpi_init( &ctx->u2 );
+    ctx->state = ecdsa_ver_init;
 }
 
 /*
@@ -83,7 +85,7 @@
     mbedtls_mpi_free( &ctx->u1 );
     mbedtls_mpi_free( &ctx->u2 );
 
-    memset( ctx, 0, sizeof( *ctx ) );
+    ecdsa_restart_ver_init( ctx );
 }
 
 /*
@@ -107,10 +109,11 @@
  */
 static void ecdsa_restart_sig_init( mbedtls_ecdsa_restart_sig_ctx *ctx )
 {
-    memset( ctx, 0, sizeof( *ctx ) );
-
+    ctx->sign_tries = 0;
+    ctx->key_tries = 0;
     mbedtls_mpi_init( &ctx->k );
     mbedtls_mpi_init( &ctx->r );
+    ctx->state = ecdsa_sig_init;
 }
 
 /*
@@ -124,7 +127,7 @@
     mbedtls_mpi_free( &ctx->k );
     mbedtls_mpi_free( &ctx->r );
 
-    memset( ctx, 0, sizeof( *ctx ) );
+    ecdsa_restart_sig_init( ctx );
 }
 
 #if defined(MBEDTLS_ECDSA_DETERMINISTIC)
@@ -145,9 +148,8 @@
  */
 static void ecdsa_restart_det_init( mbedtls_ecdsa_restart_det_ctx *ctx )
 {
-    memset( ctx, 0, sizeof( *ctx ) );
-
     mbedtls_hmac_drbg_init( &ctx->rng_ctx );
+    ctx->state = ecdsa_det_init;
 }
 
 /*
@@ -160,7 +162,7 @@
 
     mbedtls_hmac_drbg_free( &ctx->rng_ctx );
 
-    memset( ctx, 0, sizeof( *ctx ) );
+    ecdsa_restart_det_init( ctx );
 }
 #endif /* MBEDTLS_ECDSA_DETERMINISTIC */
 
diff --git a/library/ecp.c b/library/ecp.c
index 365372a..6675c47 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -138,7 +138,11 @@
  */
 static void ecp_restart_mul_init( mbedtls_ecp_restart_mul_ctx *ctx )
 {
-    memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) );
+    mbedtls_ecp_point_init( &ctx->R );
+    ctx->i = 0;
+    ctx->T = NULL;
+    ctx->T_size = 0;
+    ctx->state = ecp_rsm_init;
 }
 
 /*
@@ -160,7 +164,7 @@
         mbedtls_free( ctx->T );
     }
 
-    memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) );
+    ecp_restart_mul_init( ctx );
 }
 
 /*
@@ -183,7 +187,9 @@
  */
 static void ecp_restart_muladd_init( mbedtls_ecp_restart_muladd_ctx *ctx )
 {
-    memset( ctx, 0, sizeof( *ctx ) );
+    mbedtls_ecp_point_init( &ctx->mP );
+    mbedtls_ecp_point_init( &ctx->R );
+    ctx->state = ecp_rsma_mul1;
 }
 
 /*
@@ -197,7 +203,7 @@
     mbedtls_ecp_point_free( &ctx->mP );
     mbedtls_ecp_point_free( &ctx->R );
 
-    memset( ctx, 0, sizeof( *ctx ) );
+    ecp_restart_muladd_init( ctx );
 }
 
 /*
@@ -205,7 +211,10 @@
  */
 void mbedtls_ecp_restart_init( mbedtls_ecp_restart_ctx *ctx )
 {
-    memset( ctx, 0, sizeof( *ctx ) );
+    ctx->ops_done = 0;
+    ctx->depth = 0;
+    ctx->rsm = NULL;
+    ctx->ma = NULL;
 }
 
 /*
@@ -216,16 +225,13 @@
     if( ctx == NULL )
         return;
 
-    ctx->ops_done = 0;
-    ctx->depth = 0;
-
     ecp_restart_mul_free( ctx->rsm );
     mbedtls_free( ctx->rsm );
-    ctx->rsm = NULL;
 
     ecp_restart_muladd_free( ctx->ma );
     mbedtls_free( ctx->ma );
-    ctx->ma = NULL;
+
+    mbedtls_ecp_restart_init( ctx );
 }
 
 /*
@@ -463,7 +469,21 @@
     if( grp == NULL )
         return;
 
-    memset( grp, 0, sizeof( mbedtls_ecp_group ) );
+    grp->id = 0;
+    mbedtls_mpi_init( &grp->P );
+    mbedtls_mpi_init( &grp->A );
+    mbedtls_mpi_init( &grp->B );
+    mbedtls_ecp_point_init( &grp->G );
+    mbedtls_mpi_init( &grp->N );
+    grp->pbits = 0;
+    grp->nbits = 0;
+    grp->h = 0;
+    grp->modp = NULL;
+    grp->t_pre = NULL;
+    grp->t_post = NULL;
+    grp->t_data = NULL;
+    grp->T = NULL;
+    grp->T_size = 0;
 }
 
 /*
@@ -986,6 +1006,9 @@
     if( ( c = mbedtls_calloc( T_size, sizeof( mbedtls_mpi ) ) ) == NULL )
         return( MBEDTLS_ERR_ECP_ALLOC_FAILED );
 
+    for( i = 0; i < T_size; i++ )
+        mbedtls_mpi_init( &c[i] );
+
     mbedtls_mpi_init( &u ); mbedtls_mpi_init( &Zi ); mbedtls_mpi_init( &ZZi );
 
     /*
@@ -1906,6 +1929,9 @@
             ret = MBEDTLS_ERR_ECP_ALLOC_FAILED;
             goto cleanup;
         }
+
+        for( i = 0; i < T_size; i++ )
+            mbedtls_ecp_point_init( &T[i] );
     }
 
     /* Compute table (or finish computing it) if not done already */
