diff --git a/.github/workflows/fedora-rawhide.yml b/.github/workflows/fedora-rawhide.yml index 66c7116b..59f9500e 100644 --- a/.github/workflows/fedora-rawhide.yml +++ b/.github/workflows/fedora-rawhide.yml @@ -25,7 +25,7 @@ jobs: submodules: true - name: Install dependencies run: | - dnf -y install git cmake ncurses-devel openssl-devel-engine libsodium-devel readline-devel zlib-devel gcc-c++ clang + dnf -y install git cmake ncurses-devel openssl-devel libsodium-devel readline-devel zlib-devel gcc-c++ clang - name: Compile with ${{ matrix.cc }} run: | export CC=${{ matrix.cc }} diff --git a/src/Mayaqua/Encrypt.c b/src/Mayaqua/Encrypt.c index ddb1efc7..0f419300 100644 --- a/src/Mayaqua/Encrypt.c +++ b/src/Mayaqua/Encrypt.c @@ -20,9 +20,7 @@ #include #include #include -#ifndef OPENSSL_NO_ENGINE #include -#endif #include #include #include @@ -42,6 +40,10 @@ #include #if OPENSSL_VERSION_NUMBER >= 0x30000000L #include +// Static oqsprovider initialization function +#ifndef SKIP_OQS_PROVIDER + extern OSSL_provider_init_fn oqs_provider_init; +#endif #endif #ifdef _MSC_VER @@ -4005,7 +4007,13 @@ void InitCryptLibrary() #if OPENSSL_VERSION_NUMBER >= 0x30000000L ossl_provider_default = OSSL_PROVIDER_load(NULL, "legacy"); ossl_provider_legacy = OSSL_PROVIDER_load(NULL, "default"); - ossl_provider_oqsprovider = OSSL_PROVIDER_load(NULL, "oqsprovider"); + + char *oqs_provider_name = "oqsprovider"; + #ifndef SKIP_OQS_PROVIDER + // Registers "oqsprovider" as a provider -- necessary because oqsprovider is built in now. + OSSL_PROVIDER_add_builtin(NULL, oqs_provider_name, oqs_provider_init); + #endif + ossl_provider_oqsprovider = OSSL_PROVIDER_load(NULL, oqs_provider_name); #endif ssl_clientcert_index = SSL_get_ex_new_index(0, "struct SslClientCertInfo *", NULL, NULL, NULL);