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 = {