--- ./openssl.c 2021-12-09 10:02:45.000000000 -0500 +++ ./openssl.c 2021-12-09 10:23:48.000000000 -0500 @@ -1484,8 +1484,11 @@ { int ret = 0; char* key_file_path; +#ifndef USE_EVP_PKEY_EC BIGNUM *exp; RSA *rsa; +#else /* #ifndef USE_EVP_PKEY_EC */ +#endif EVP_PKEY *key; key_file_path = make_certs_path(csp->config->certificate_directory, @@ -1504,6 +1507,7 @@ return 0; } +#ifndef USE_EVP_PKEY_EC exp = BN_new(); rsa = RSA_new(); key = EVP_PKEY_new(); @@ -1536,7 +1540,18 @@ ret = -1; goto exit; } - +#else /* #ifndef USE_EVP_PKEY_EC */ + /* + * https://www.openssl.org/docs/manmaster/man7/EVP_PKEY-EC.html + */ + key = EVP_EC_gen(EC_GROUP_NAME); + if (key == NULL) + { + log_ssl_errors(LOG_LEVEL_ERROR, "EC key generation error"); + ret = -1; + goto exit; + } +#endif /* * Exporting private key into file */ @@ -1552,6 +1567,7 @@ /* * Freeing used variables */ +#ifndef USE_EVP_PKEY_EC if (exp) { BN_free(exp); @@ -1560,6 +1576,8 @@ { RSA_free(rsa); } +#else /* #ifndef USE_EVP_PKEY_EC */ +#endif if (key) { EVP_PKEY_free(key);