|
|
@@ -42,6 +42,10 @@
|
|
|
#include <openssl/x509v3.h>
|
|
|
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
|
|
|
#include <openssl/provider.h>
|
|
|
+// Static oqsprovider initialization function
|
|
|
+#ifndef SKIP_OQS_PROVIDER
|
|
|
+ extern OSSL_provider_init_fn oqs_provider_init;
|
|
|
+#endif
|
|
|
#endif
|
|
|
|
|
|
#ifdef _MSC_VER
|
|
|
@@ -347,6 +351,11 @@ MD *NewMdEx(char *name, bool hmac)
|
|
|
#else
|
|
|
m->Ctx = EVP_MD_CTX_create();
|
|
|
#endif
|
|
|
+ if (m->Ctx == NULL)
|
|
|
+ {
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
if (EVP_DigestInit_ex(m->Ctx, m->Md, NULL) == false)
|
|
|
{
|
|
|
Debug("NewMdEx(): EVP_DigestInit_ex() failed with error: %s\n", OpenSSL_Error());
|
|
|
@@ -4005,7 +4014,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);
|
|
|
@@ -4594,6 +4609,11 @@ DH_CTX *DhNew(char *prime, UINT g)
|
|
|
dh = ZeroMalloc(sizeof(DH_CTX));
|
|
|
|
|
|
dh->dh = DH_new();
|
|
|
+ if (dh->dh == NULL)
|
|
|
+ {
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
|
|
dhp = BinToBigNum(buf->Buf, buf->Size);
|
|
|
dhg = BN_new();
|