Implement pkey_ec_keygen with EC_KEY APIs.

This removes the last caller of EVP_PKEY_copy_parameters within the
library.

Change-Id: I6af138d364973b18f52baf55c36c50a24a56bd44
Reviewed-on: https://boringssl-review.googlesource.com/6848
Reviewed-by: Adam Langley <alangley@gmail.com>
diff --git a/crypto/evp/p_ec.c b/crypto/evp/p_ec.c
index 539141c..f842c27 100644
--- a/crypto/evp/p_ec.c
+++ b/crypto/evp/p_ec.c
@@ -211,13 +211,14 @@
     return 0;
   }
   EC_KEY *ec = EC_KEY_new();
-  if (!ec) {
+  if (ec == NULL ||
+      !EC_KEY_set_group(ec, EC_KEY_get0_group(ctx->pkey->pkey.ec)) ||
+      !EC_KEY_generate_key(ec)) {
+    EC_KEY_free(ec);
     return 0;
   }
   EVP_PKEY_assign_EC_KEY(pkey, ec);
-  /* Note: if error return, pkey is freed by parent routine */
-  return EVP_PKEY_copy_parameters(pkey, ctx->pkey) &&
-         EC_KEY_generate_key(pkey->pkey.ec);
+  return 1;
 }
 
 const EVP_PKEY_METHOD ec_pkey_meth = {