68 lines
2.3 KiB
Diff
68 lines
2.3 KiB
Diff
From 380cf570be1ded495141e16ceab7afb7f7c57ab7 Mon Sep 17 00:00:00 2001
|
|
From: Matt Caswell <matt@openssl.org>
|
|
Date: Thu, 28 Feb 2019 13:47:26 +0000
|
|
Subject: [PATCH 02/15] Fix no-ec, no-sm2 and no-sm3
|
|
|
|
Reviewed-by: Richard Levitte <levitte@openssl.org>
|
|
(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 bca0464..1d3d57b 100644
|
|
--- a/apps/pkeyutl.c
|
|
+++ b/apps/pkeyutl.c
|
|
@@ -473,14 +473,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)
|
|
@@ -488,6 +490,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 a051138..1457530 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.20.1 (Apple Git-117)
|
|
|