mirror of
https://github.com/openssl/openssl.git
synced 2025-03-19 19:50:42 +08:00
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)
This commit is contained in:
parent
e31eda006f
commit
cfbd76c1a9
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -168,6 +168,7 @@ typedef struct openssl_ctx_method {
|
||||
|
||||
OPENSSL_CTX *openssl_ctx_get_concrete(OPENSSL_CTX *ctx);
|
||||
int openssl_ctx_is_default(OPENSSL_CTX *ctx);
|
||||
int openssl_ctx_is_global_default(OPENSSL_CTX *ctx);
|
||||
|
||||
/* Functions to retrieve pointers to data by index */
|
||||
void *openssl_ctx_get_data(OPENSSL_CTX *, int /* index */,
|
||||
|
Loading…
x
Reference in New Issue
Block a user