#include <openssl/x509.h>
#include <openssl/pem.h>
#endif /* CONFIG_ECC */
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+#include <openssl/provider.h>
+#endif /* OpenSSL version >= 3.0 */
#include "common.h"
#include "utils/const_time.h"
}
#endif /* OpenSSL version < 1.1.0 */
+
+void openssl_load_legacy_provider(void)
+{
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+ static bool loaded = false;
+ OSSL_PROVIDER *legacy;
+
+ if (loaded)
+ return;
+
+ legacy = OSSL_PROVIDER_load(NULL, "legacy");
+
+ if (legacy) {
+ OSSL_PROVIDER_load(NULL, "default");
+ loaded = true;
+ }
+#endif /* OpenSSL version >= 3.0 */
+}
+
+
static BIGNUM * get_group5_prime(void)
{
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
#ifndef CONFIG_FIPS
int md4_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac)
{
+ openssl_load_legacy_provider();
return openssl_digest_vector(EVP_md4(), num_elem, addr, len, mac);
}
#endif /* CONFIG_FIPS */
int i, plen, ret = -1;
EVP_CIPHER_CTX *ctx;
+ openssl_load_legacy_provider();
+
/* Add parity bits to the key */
next = 0;
for (i = 0; i < 7; i++) {
int res = -1;
unsigned char skip_buf[16];
+ openssl_load_legacy_provider();
+
ctx = EVP_CIPHER_CTX_new();
if (!ctx ||
!EVP_CipherInit_ex(ctx, EVP_rc4(), NULL, NULL, NULL, 1) ||