]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Keep the provided peer EVP_PKEY in the EVP_PKEY_CTX too openssl-3.1
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:51:40 +0000 (09:51 +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)

(cherry picked from commit 2656922febfc36f6b44cff1c363917685633b4c5)

crypto/evp/exchange.c

index d7a4ad142aa75c990e9ce9cf3e7a82af1912bf52..224fd6dc86809af1c3dc3c0ee4e260e7fba43827 100644 (file)
@@ -430,7 +430,13 @@ 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;
+    EVP_PKEY_free(ctx->peerkey);
+    ctx->peerkey = peer;
+    EVP_PKEY_up_ref(peer);
+    return 1;
 
  legacy:
 #ifdef FIPS_MODULE