diff options
author | Richard Levitte <levitte@openssl.org> | 2019-06-14 11:41:32 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2019-06-17 11:38:11 +0200 |
commit | 8013a933dacc80096e2bfca06c00f9ec29adb35b (patch) | |
tree | bc78610ccebce19fa4b9e1ac53a8f2c8fc9b0a66 /providers/default/defltprov.c | |
parent | Replumbing: Adapt the FIPS module to use the library context upcall (diff) | |
download | openssl-8013a933dacc80096e2bfca06c00f9ec29adb35b.tar.xz openssl-8013a933dacc80096e2bfca06c00f9ec29adb35b.zip |
Replumbing: Adapt the default and legacy providers to use library context upcall
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9160)
Diffstat (limited to 'providers/default/defltprov.c')
-rw-r--r-- | providers/default/defltprov.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/providers/default/defltprov.c b/providers/default/defltprov.c index 98999405d6..b9c8c36ef0 100644 --- a/providers/default/defltprov.c +++ b/providers/default/defltprov.c @@ -144,6 +144,8 @@ int ossl_default_provider_init(const OSSL_PROVIDER *provider, const OSSL_DISPATCH **out, void **provctx) { + OSSL_core_get_library_context_fn *c_get_libctx = NULL; + for (; in->function_id != 0; in++) { switch (in->function_id) { case OSSL_FUNC_CORE_GET_PARAM_TYPES: @@ -152,12 +154,25 @@ int ossl_default_provider_init(const OSSL_PROVIDER *provider, case OSSL_FUNC_CORE_GET_PARAMS: c_get_params = OSSL_get_core_get_params(in); break; + case OSSL_FUNC_CORE_GET_LIBRARY_CONTEXT: + c_get_libctx = OSSL_get_core_get_library_context(in); + break; default: /* Just ignore anything we don't understand */ break; } } + if (c_get_libctx == NULL) + return 0; + *out = deflt_dispatch_table; + + /* + * We want to make sure that all calls from this provider that requires + * a library context use the same context as the one used to call our + * functions. We do that by passing it along as the provider context. + */ + *provctx = c_get_libctx(provider); return 1; } |