From ed86f884ba10c93a0beb53492c5db463e31a6884 Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Thu, 28 Feb 2019 13:47:26 +0000 Subject: [PATCH] Fix no-ec, no-sm2 and no-sm3 Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/8372) --- apps/pkeyutl.c | 11 +++++++---- test/recipes/20-test_pkeyutl.t | 9 +++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/pkeyutl.c b/apps/pkeyutl.c index b3452d31ca..c084525cd5 100644 --- a/apps/pkeyutl.c +++ b/apps/pkeyutl.c @@ -526,14 +526,16 @@ static EVP_PKEY_CTX *init_ctx(const char *kdfalg, int *pkeysize, } ctx = EVP_PKEY_CTX_new_id(kdfnid, impl); } else { - EC_KEY *eckey = NULL; - const EC_GROUP *group = NULL; - int nid; - if (pkey == NULL) goto end; + +#ifndef OPENSSL_NO_EC /* SM2 needs a special treatment */ if (EVP_PKEY_id(pkey) == EVP_PKEY_EC) { + EC_KEY *eckey = NULL; + const EC_GROUP *group = NULL; + int nid; + if ((eckey = EVP_PKEY_get0_EC_KEY(pkey)) == NULL || (group = EC_KEY_get0_group(eckey)) == NULL || (nid = EC_GROUP_get_curve_name(group)) == 0) @@ -541,6 +543,7 @@ static EVP_PKEY_CTX *init_ctx(const char *kdfalg, int *pkeysize, if (nid == NID_sm2) EVP_PKEY_set_alias_type(pkey, EVP_PKEY_SM2); } +#endif *pkeysize = EVP_PKEY_size(pkey); ctx = EVP_PKEY_CTX_new(pkey, impl); if (ppkey != NULL) diff --git a/test/recipes/20-test_pkeyutl.t b/test/recipes/20-test_pkeyutl.t index a0511388e3..14575301fa 100644 --- a/test/recipes/20-test_pkeyutl.t +++ b/test/recipes/20-test_pkeyutl.t @@ -37,7 +37,12 @@ sub verify '-digest', 'sm3', '-pkeyopt', 'sm2_id:someid']))); } -ok(sign, "Sign a piece of data using SM2"); -ok(verify, "Verify an SM2 signature against a piece of data"); +SKIP: { + skip "Skipping tests that require EC, SM2 or SM3", 2 + if disabled("ec") || disabled("sm2") || disabled("sm3"); + + ok(sign, "Sign a piece of data using SM2"); + ok(verify, "Verify an SM2 signature against a piece of data"); +} unlink 'signature.sm2'; -- 2.25.1