Fix EC_KEY_set_private_key() to call key->group->meth->set_private()
authorKazuki Yamaguchi <k@rhe.jp>
Thu, 21 Apr 2016 08:35:53 +0000 (17:35 +0900)
committerDr. Stephen Henson <steve@openssl.org>
Sat, 23 Apr 2016 03:24:27 +0000 (04:24 +0100)
Fix a bug introduced by 6903e2e7e9a4 (Extended EC_METHOD customisation
support., 2016-02-01). key->meth->set_private() is wrongly called where
it should call key->group->meth->set_private().

PR#4517

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Stephen Henson <steve@openssl.org>
crypto/ec/ec_key.c

index f7948ccab2aa4fbcd5419f44f3de46b64cdb7a9e..22c6535e307b256b8e7ca22d2d6e2107c1a78fa2 100644 (file)
@@ -483,8 +483,8 @@ int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *priv_key)
 {
     if (key->group == NULL || key->group->meth == NULL)
         return 0;
 {
     if (key->group == NULL || key->group->meth == NULL)
         return 0;
-    if (key->group->meth->set_private
-        && key->meth->set_private(key, priv_key) == 0)
+    if (key->group->meth->set_private != NULL
+        && key->group->meth->set_private(key, priv_key) == 0)
         return 0;
     if (key->meth->set_private != NULL
         && key->meth->set_private(key, priv_key) == 0)
         return 0;
     if (key->meth->set_private != NULL
         && key->meth->set_private(key, priv_key) == 0)