From 455dcb18ecfa125469bf913655c5a9c1b31a7dd5 Mon Sep 17 00:00:00 2001 From: Ailin Nemui Date: Mon, 1 Apr 2024 22:03:33 +0200 Subject: [PATCH] deprecated openssl3 function --- src/core/network-openssl.c | 58 +++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/src/core/network-openssl.c b/src/core/network-openssl.c index 9956f217..5104e7dd 100644 --- a/src/core/network-openssl.c +++ b/src/core/network-openssl.c @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -751,44 +752,49 @@ static void set_server_temporary_key_info(TLS_REC *tls, SSL *ssl) #ifdef SSL_get_server_tmp_key /* Show ephemeral key information. */ EVP_PKEY *ephemeral_key = NULL; - - /* OPENSSL_NO_EC is for solaris 11.3 (2016), github ticket #598 */ -#ifndef OPENSSL_NO_EC - EC_KEY *ec_key = NULL; -#endif char *ephemeral_key_algorithm = NULL; - char *cname = NULL; - int nid; g_return_if_fail(tls != NULL); g_return_if_fail(ssl != NULL); if (SSL_get_server_tmp_key(ssl, &ephemeral_key)) { - switch (EVP_PKEY_id(ephemeral_key)) { - case EVP_PKEY_DH: - tls_rec_set_ephemeral_key_algorithm(tls, "DH"); - tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key)); - break; + int keytype = EVP_PKEY_id(ephemeral_key); + switch (keytype) { + case EVP_PKEY_DH: + tls_rec_set_ephemeral_key_algorithm(tls, "DH"); + tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key)); + break; + /* OPENSSL_NO_EC is for solaris 11.3 (2016), github ticket #598 */ #ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: - ec_key = EVP_PKEY_get1_EC_KEY(ephemeral_key); - nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec_key)); - EC_KEY_free(ec_key); - cname = (char *)OBJ_nid2sn(nid); - ephemeral_key_algorithm = g_strdup_printf("ECDH: %s", cname); + case EVP_PKEY_EC: { +#if (OPENSSL_VERSION_NUMBER >= 0x30000000L) + char cname[50]; + EVP_PKEY_get_group_name(ephemeral_key, cname, sizeof(cname), NULL); +#else + EC_KEY *ec_key = NULL; + char *cname = NULL; + int nid; - tls_rec_set_ephemeral_key_algorithm(tls, ephemeral_key_algorithm); - tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key)); + ec_key = EVP_PKEY_get1_EC_KEY(ephemeral_key); + nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec_key)); + EC_KEY_free(ec_key); + cname = (char *) OBJ_nid2sn(nid); +#endif + ephemeral_key_algorithm = g_strdup_printf("ECDH: %s", cname); - g_free_and_null(ephemeral_key_algorithm); - break; + tls_rec_set_ephemeral_key_algorithm(tls, ephemeral_key_algorithm); + tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key)); + + g_free_and_null(ephemeral_key_algorithm); + break; + } #endif - default: - tls_rec_set_ephemeral_key_algorithm(tls, "Unknown"); - tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key)); - break; + default: + tls_rec_set_ephemeral_key_algorithm(tls, OBJ_nid2ln(keytype)); + tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key)); + break; } EVP_PKEY_free(ephemeral_key);