]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Keep the provided peer EVP_PKEY in the EVP_PKEY_CTX too
authorTomas Mraz <tomas@openssl.org>
Tue, 4 Mar 2025 17:43:18 +0000 (18:43 +0100)
committerTomas Mraz <tomas@openssl.org>
Fri, 14 Mar 2025 08:44:52 +0000 (09:44 +0100)
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26976)

crypto/evp/exchange.c

index 225b2be10cdc4e2118c4ac1a727c2011ad13c857..dae3a2c5a85c0c13d5751b206cf311739c5b4615 100644 (file)
@@ -442,7 +442,10 @@ int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer,
      */
     if (provkey == NULL)
         goto legacy;
-    return ctx->op.kex.exchange->set_peer(ctx->op.kex.algctx, provkey);
+    ret = ctx->op.kex.exchange->set_peer(ctx->op.kex.algctx, provkey);
+    if (ret <= 0)
+        return ret;
+    goto common;
 
  legacy:
 #ifdef FIPS_MODULE
@@ -497,6 +500,9 @@ int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer,
     ret = ctx->pmeth->ctrl(ctx, EVP_PKEY_CTRL_PEER_KEY, 1, peer);
     if (ret <= 0)
         return ret;
+#endif
+
+ common:
     if (!EVP_PKEY_up_ref(peer))
         return -1;
 
@@ -504,7 +510,6 @@ int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer,
     ctx->peerkey = peer;
 
     return 1;
-#endif
 }
 
 int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer)