summaryrefslogtreecommitdiffstats
path: root/apps/ecparam.c
diff options
context:
space:
mode:
authorTianjia Zhang <tianjia.zhang@linux.alibaba.com>2021-05-25 16:52:20 +0800
committerTomas Mraz <tomas@openssl.org>2021-05-26 16:57:40 +0200
commit022411112dd19420f0df51818322a216d914a0fb (patch)
tree2cbab326df6ddf207cf75f2f685c727489db2add /apps/ecparam.c
parent0e7e3b9b9d2d0a49097b4e224098036d3e6b8087 (diff)
apps: Fix the mismatch of SM2 keys keymgmt
The SM2 key has a separate keymgmt, which is independent of the EC. The key generated by the subcommand ecparam is wrong. Using 'openssl ec -in sm2.key -noout -text' will also encounter some errors. When using the ecparam subcommand to generate the SM2 key, use the correct keymgmt to solve this problem. Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15454)
Diffstat (limited to 'apps/ecparam.c')
-rw-r--r--apps/ecparam.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/apps/ecparam.c b/apps/ecparam.c
index c3dbd75365..12eed703de 100644
--- a/apps/ecparam.c
+++ b/apps/ecparam.c
@@ -228,7 +228,11 @@ int ecparam_main(int argc, char **argv)
OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT,
point_format, 0);
*p = OSSL_PARAM_construct_end();
- gctx_params = EVP_PKEY_CTX_new_from_name(NULL, "ec", NULL);
+
+ if (strcasecmp(curve_name, "SM2") == 0)
+ gctx_params = EVP_PKEY_CTX_new_from_name(NULL, "sm2", NULL);
+ else
+ gctx_params = EVP_PKEY_CTX_new_from_name(NULL, "ec", NULL);
if (gctx_params == NULL
|| EVP_PKEY_keygen_init(gctx_params) <= 0
|| EVP_PKEY_CTX_set_params(gctx_params, params) <= 0