summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2020-06-23 10:09:20 +0200
committerRichard Levitte <levitte@openssl.org>2020-06-28 10:55:52 +0200
commitcfbd76c1a9737617d4cf90d3a1af704241c97d98 (patch)
tree2984d2265afa28514f3f501fedd3bf934b4c77c1 /crypto
parente31eda006faaadc8bbe0bb809dbbaba0e4323fe6 (diff)
CORE: Add an internal function to distinguish the global default context
Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/12228)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/context.c9
-rw-r--r--crypto/evp/evp_fetch.c19
2 files changed, 22 insertions, 6 deletions
diff --git a/crypto/context.c b/crypto/context.c
index 615c55c8c2..de289fcb68 100644
--- a/crypto/context.c
+++ b/crypto/context.c
@@ -214,6 +214,15 @@ int openssl_ctx_is_default(OPENSSL_CTX *ctx)
return 0;
}
+int openssl_ctx_is_global_default(OPENSSL_CTX *ctx)
+{
+#ifndef FIPS_MODULE
+ if (openssl_ctx_get_concrete(ctx) == &default_context_int)
+ return 1;
+#endif
+ return 0;
+}
+
static void openssl_ctx_generic_new(void *parent_ign, void *ptr_ign,
CRYPTO_EX_DATA *ad, int index,
long argl_ign, void *argp)
diff --git a/crypto/evp/evp_fetch.c b/crypto/evp/evp_fetch.c
index f63e135d3a..5cb59d98fc 100644
--- a/crypto/evp/evp_fetch.c
+++ b/crypto/evp/evp_fetch.c
@@ -286,6 +286,17 @@ inner_evp_generic_fetch(OPENSSL_CTX *libctx, int operation_id,
return method;
}
+#ifndef FIPS_MODULE
+static const char *libctx_descriptor(OPENSSL_CTX *libctx)
+{
+ if (openssl_ctx_is_global_default(libctx))
+ return "Global default library context";
+ if (openssl_ctx_is_default(libctx))
+ return "Thread-local default library context";
+ return "Non-default library context";
+}
+#endif
+
void *evp_generic_fetch(OPENSSL_CTX *libctx, int operation_id,
const char *name, const char *properties,
void *(*new_method)(int name_id,
@@ -306,9 +317,7 @@ void *evp_generic_fetch(OPENSSL_CTX *libctx, int operation_id,
#else
ERR_raise_data(ERR_LIB_EVP, code,
"%s, Algorithm (%s), Properties (%s)",
- (openssl_ctx_is_default(libctx)
- ? "Default library context"
- : "Non-default library context"),
+ libctx_descriptor(libctx),
name = NULL ? "<null>" : name,
properties == NULL ? "<null>" : properties);
#endif
@@ -350,9 +359,7 @@ void *evp_generic_fetch_by_number(OPENSSL_CTX *libctx, int operation_id,
ERR_raise_data(ERR_LIB_EVP, code,
"%s, Algorithm (%s), Properties (%s)",
- (openssl_ctx_is_default(libctx)
- ? "Default library context"
- : "Non-default library context"),
+ libctx_descriptor(libctx),
name = NULL ? "<null>" : name,
properties == NULL ? "<null>" : properties);
}