CORE: Encure that cached fetches can be done per provider
authorRichard Levitte <levitte@openssl.org>
Mon, 4 Oct 2021 13:33:37 +0000 (15:33 +0200)
committerRichard Levitte <levitte@openssl.org>
Wed, 27 Oct 2021 10:41:15 +0000 (12:41 +0200)
commitdc010ca6ec01d313a84c3c4b040232655a1772ad
treeb925e2db5fad6f5c06e5bbac180fe15c223ae8b7
parent433e13455ede1a39d415b690b8a564b4f36b8dee
CORE: Encure that cached fetches can be done per provider

This mostly entails passing around a provider pointer, and handling
queries that includes a pointer to a provider, where NULL means "any".

This also means that there's a need to pass the provider pointer, not
just down to the cache functions, but also be able to get it from
ossl_method_store_fetch().  To this end, that function's OSSL_PROVIDER
pointer argument is modified to be a pointer reference, so the
function can answer back what provider the method comes from.

Test added.

Fixes #16614

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/16725)
14 files changed:
crypto/core_fetch.c
crypto/encode_decode/decoder_meth.c
crypto/encode_decode/encoder_meth.c
crypto/evp/evp_fetch.c
crypto/evp/exchange.c
crypto/evp/kem.c
crypto/evp/signature.c
crypto/property/property.c
crypto/store/store_meth.c
doc/internal/man3/OSSL_METHOD_STORE.pod
doc/internal/man3/ossl_method_construct.pod
include/internal/core.h
include/internal/property.h
test/property_test.c