summaryrefslogtreecommitdiffstats
path: root/crypto/provider_core.c
diff options
context:
space:
mode:
authorPauli <ppzgs1@gmail.com>2021-02-08 11:03:01 +1000
committerPauli <ppzgs1@gmail.com>2021-02-12 12:28:55 +1000
commit7dce37e2ec3d580eccce65c32f8d60dea600a28a (patch)
tree4691397be7030fde07088a3ac9fa6c211217e4ec /crypto/provider_core.c
parent499f2ae9e989015b75c5a3895994f26bc0a7334a (diff)
Prov: add an option to force provider fetches to not be cached.
If the macro OSSL_FORCE_NO_CACHE_FETCH is defined, no provider will have its fetches cached. Reviewed-by: Shane Lontis <shane.lontis@oracle.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/14126)
Diffstat (limited to 'crypto/provider_core.c')
-rw-r--r--crypto/provider_core.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/crypto/provider_core.c b/crypto/provider_core.c
index 5016d54d55..627ff384e1 100644
--- a/crypto/provider_core.c
+++ b/crypto/provider_core.c
@@ -914,8 +914,17 @@ const OSSL_ALGORITHM *ossl_provider_query_operation(const OSSL_PROVIDER *prov,
int operation_id,
int *no_cache)
{
- return prov->query_operation == NULL
- ? NULL : prov->query_operation(prov->provctx, operation_id, no_cache);
+ const OSSL_ALGORITHM *res;
+
+ if (prov->query_operation == NULL)
+ return NULL;
+ res = prov->query_operation(prov->provctx, operation_id, no_cache);
+#if defined(OPENSSL_NO_CACHED_FETCH)
+ /* Forcing the non-caching of queries */
+ if (no_cache != NULL)
+ *no_cache = 1;
+#endif
+ return res;
}
int ossl_provider_set_operation_bit(OSSL_PROVIDER *provider, size_t bitnum)