]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Ensure EC keys with a private key but without a public key can be created
authorMatt Caswell <matt@openssl.org>
Thu, 21 Jan 2021 15:12:30 +0000 (15:12 +0000)
committerMatt Caswell <matt@openssl.org>
Mon, 1 Feb 2021 08:59:27 +0000 (08:59 +0000)
In 1.1.1 and earlier it was possible to create EC_KEYs that did not have
the public key in it. We need to ensure that this continues to work in 3.0.

Fixes #12612

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13922)

providers/implementations/keymgmt/ec_kmgmt.c

index 8b020711fbeaf808edae9af436ae9fca617fc209..fc49aad1b9854c7041b4f3f623ac9b2958bc5d11 100644 (file)
@@ -353,7 +353,7 @@ int common_import(void *keydata, int selection, const OSSL_PARAM params[],
      * following combinations:
      *   - domain parameters (+optional other params)
      *   - public key with associated domain parameters (+optional other params)
-     *   - private key with associated public key and domain parameters
+     *   - private key with associated domain parameters and optional public key
      *         (+optional other params)
      *
      * This means:
@@ -363,12 +363,8 @@ int common_import(void *keydata, int selection, const OSSL_PARAM params[],
      */
     if ((selection & OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS) == 0)
         return 0;
-    if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0
-            && (selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) == 0)
-        return 0;
 
-    if ((selection & OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS) != 0)
-        ok = ok && ec_group_fromdata(ec, params);
+    ok = ok && ec_group_fromdata(ec, params);
 
     /*
      * sm2_curve: import the keys or domparams only on SM2 Curve