Add ecp_genkey(), prettier wrapper
diff --git a/include/polarssl/ecp.h b/include/polarssl/ecp.h
index 33c09fc..7342f45 100644
--- a/include/polarssl/ecp.h
+++ b/include/polarssl/ecp.h
@@ -536,6 +536,20 @@
                      void *p_rng );
 
 /**
+ * \brief           Generate a keypair
+ *
+ * \param grp_id    ECP group identifier
+ * \param key       Destination keypair
+ * \param f_rng     RNG function
+ * \param p_rng     RNG parameter
+ *
+ * \return          0 if successful,
+ *                  or a POLARSSL_ERR_ECP_XXX or POLARSSL_MPI_XXX error code
+ */
+int ecp_gen_key( ecp_group_id grp_id, ecp_keypair *key,
+                int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
+
+/**
  * \brief          Checkup routine
  *
  * \return         0 if successful, or 1 if the test failed
diff --git a/library/ecp.c b/library/ecp.c
index 0c66d35..80a10ba 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -1669,6 +1669,20 @@
     return( ecp_mul( grp, Q, d, &grp->G, f_rng, p_rng ) );
 }
 
+/*
+ * Generate a keypair, prettier wrapper
+ */
+int ecp_gen_key( ecp_group_id grp_id, ecp_keypair *key,
+                int (*f_rng)(void *, unsigned char *, size_t), void *p_rng )
+{
+    int ret;
+
+    if( ( ret = ecp_use_known_dp( &key->grp, grp_id ) ) != 0 )
+        return( ret );
+
+    return( ecp_gen_keypair( &key->grp, &key->d, &key->Q, f_rng, p_rng ) );
+}
+
 #if defined(POLARSSL_ECP_NIST_OPTIM)
 /*
  * Fast reduction modulo the primes used by the NIST curves.
diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data
index 8dafc39..92c490a 100644
--- a/tests/suites/test_suite_ecp.data
+++ b/tests/suites/test_suite_ecp.data
@@ -247,6 +247,10 @@
 depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
 ecp_gen_keypair:POLARSSL_ECP_DP_SECP192R1
 
+ECP gen keypair wrapper
+depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
+ecp_gen_key:POLARSSL_ECP_DP_SECP192R1
+
 ECP mod p192 small (more than 192 bits, less limbs than 2 * 192 bits)
 depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
 ecp_fast_mod:POLARSSL_ECP_DP_SECP192R1:"0100000000000103010000000000010201000000000001010100000000000100"
diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function
index 8cc5aba..9473dd4 100644
--- a/tests/suites/test_suite_ecp.function
+++ b/tests/suites/test_suite_ecp.function
@@ -522,6 +522,24 @@
 }
 /* END_CASE */
 
+/* BEGIN_CASE */
+void ecp_gen_key( int id )
+{
+    ecp_keypair key;
+    rnd_pseudo_info rnd_info;
+
+    ecp_keypair_init( &key );
+    memset( &rnd_info, 0x00, sizeof( rnd_pseudo_info ) );
+
+    TEST_ASSERT( ecp_gen_key( id, &key, &rnd_pseudo_rand, &rnd_info ) == 0 );
+
+    TEST_ASSERT( ecp_check_pubkey( &key.grp, &key.Q ) == 0 );
+    TEST_ASSERT( ecp_check_privkey( &key.grp, &key.d ) == 0 );
+
+    ecp_keypair_free( &key );
+}
+/* END_CASE */
+
 /* BEGIN_CASE depends_on:POLARSSL_SELF_TEST */
 void ecp_selftest()
 {