openssl/crypto
Richard Levitte 5246183e7a EVP: Reverse the fetch logic in all pkey using functionality
In all initializing functions for functionality that use an EVP_PKEY, the
coded logic was to find an KEYMGMT implementation first, and then try to
find the operation method (for example, SIGNATURE implementation) in the
same provider.

This implies that in providers where there is a KEYMGMT implementation,
there must also be a SIGNATURE implementation, along with a KEYEXCH,
ASYM_CIPHER, etc implementation.

The intended design was, however, the opposite implication, i.e. that
where there is a SIGNATURE implementation, there must also be KEYMGMT.

This change reverses the logic of the code to be closer to the intended
design.

There is a consequence; we now use the query_operation_name function from
the KEYMGMT of the EVP_PKEY given by the EVP_PKEY_CTX (ultimately given by
the application).  Previously, we used the query_operation_name function
from the KEYMGMT found alongside the SIGNATURE implementation.

Another minor consequence is that the |keymgmt| field in EVP_PKEY_CTX
is now always a reference to the KEYMGMT of the |pkey| field if that
one is given (|pkey| isn't NULL) and is provided (|pkey->keymgmt|
isn't NULL).

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)
2021-10-27 12:41:12 +02:00
..
aes Add missing define to enable AES-NI usage on x86 platform 2021-10-21 18:23:46 +02:00
aria Update copyright year 2021-04-08 13:04:41 +01:00
asn1 Update copyright year 2021-09-07 13:35:43 +02:00
async Update copyright year 2021-06-17 13:24:59 +01:00
bf
bio Avoid NULL+X UB in bss_mem.c 2021-10-19 12:16:11 +02:00
bn aarch64: support BTI and pointer authentication in assembly 2021-10-01 09:35:38 +02:00
buffer Update copyright year 2021-06-17 13:24:59 +01:00
camellia Update copyright year 2021-07-29 15:41:35 +01:00
cast
chacha aarch64: support BTI and pointer authentication in assembly 2021-10-01 09:35:38 +02:00
cmac Rename all getters to use get/get0 in name 2021-06-01 12:40:00 +02:00
cmp cmp_vfy.c, encoder_lib.c: Fix potential leak of a BIO 2021-10-12 16:45:21 +02:00
cms add checks for the return values of BN_new(), sk_RSA_PRIME_INFO_new_reserve(), 2021-10-27 08:36:55 +10:00
comp Update copyright year 2021-06-17 13:24:59 +01:00
conf Fix another memory leak reported in CIFuzz 2021-10-14 14:57:00 +02:00
crmf OSSL_CRMF_{CERTTEMPLATE,CERTID}_get0_serialNumber(): Make result const for consistency 2021-06-30 10:38:23 +02:00
ct Update copyright year 2021-06-17 13:24:59 +01:00
des Update copyright year 2021-07-29 15:41:35 +01:00
dh dh_ameth: Fix dh_cmp_parameters to really compare the params 2021-09-10 12:07:01 +02:00
dsa add checks for the return values of BN_new(), sk_RSA_PRIME_INFO_new_reserve(), 2021-10-27 08:36:55 +10:00
dso Update copyright year 2021-06-17 13:24:59 +01:00
ec add checks for the return values of BN_new(), sk_RSA_PRIME_INFO_new_reserve(), 2021-10-27 08:36:55 +10:00
encode_decode CORE: add a provider argument to ossl_method_construct() 2021-10-27 12:41:10 +02:00
engine Update copyright year 2021-06-17 13:24:59 +01:00
err Add invalid input length error 2021-08-26 09:33:39 +10:00
ess err: rename err_load_xxx_strings_int functions 2021-05-26 13:01:47 +10:00
evp EVP: Reverse the fetch logic in all pkey using functionality 2021-10-27 12:41:12 +02:00
ffc Set FFC_PARAM_FLAG_VALIDATE_LEGACY on params generated with FIPS 186-2 gen 2021-08-11 12:07:08 +02:00
hmac Adapt other parts of the source to the changed EVP_Q_digest() and EVP_Q_mac() 2021-06-23 23:00:36 +02:00
http OSSL_HTTP_open(): Fix memory leak on TLS connect failure via proxy 2021-07-22 10:14:47 +02:00
idea Update copyright year 2021-04-08 13:04:41 +01:00
kdf
lhash Update copyright year 2021-04-08 13:04:41 +01:00
md2
md4
md5 Update copyright year 2021-07-29 15:41:35 +01:00
mdc2
modes aarch64: support BTI and pointer authentication in assembly 2021-10-01 09:35:38 +02:00
objects Permit no/empty digest in core_obj_add_sigid 2021-10-22 16:26:46 +02:00
ocsp OCSP_sendreq_bio: Avoid doublefree of mem BIO 2021-10-25 11:43:10 +02:00
pem add checks for the return values of BN_new(), sk_RSA_PRIME_INFO_new_reserve(), 2021-10-27 08:36:55 +10:00
perlasm Update copyright year 2021-06-17 13:24:59 +01:00
pkcs7 Update copyright year 2021-06-17 13:24:59 +01:00
pkcs12 Update copyright year 2021-06-17 13:24:59 +01:00
poly1305 aarch64: support BTI and pointer authentication in assembly 2021-10-01 09:35:38 +02:00
property property: produce error if a name is duplicated 2021-10-09 23:29:13 +10:00
rand rand: avoid using the derivation function for the public and private DRBGs 2021-09-03 10:23:21 +10:00
rc2 Update copyright year 2021-05-06 13:03:23 +01:00
rc4
rc5
ripemd Drop libimplementations.a 2021-05-07 10:17:23 +02:00
rsa add checks for the return values of BN_new(), sk_RSA_PRIME_INFO_new_reserve(), 2021-10-27 08:36:55 +10:00
seed Update copyright year 2021-06-17 13:24:59 +01:00
sha RISC-V support for the SHA256 2021-10-04 11:27:22 +02:00
siphash
sm2 sm2: fix error raise to not fail make update 2021-08-25 10:12:17 +10:00
sm3 Add "origin" field to EVP_CIPHER, EVP_MD 2021-04-18 10:03:07 +02:00
sm4 Update copyright year 2021-04-08 13:04:41 +01:00
srp add zero strenght arguments to BN and RAND RNG calls 2021-05-29 17:17:12 +10:00
stack Improve the implementation of X509_STORE_CTX_get1_issuer() 2021-04-28 11:19:34 +02:00
store CORE: add a provider argument to ossl_method_construct() 2021-10-27 12:41:10 +02:00
ts ts: fix memleaks caused by TS_VERIFY_CTX_set_imprint 2021-08-26 11:06:06 +02:00
txt_db
ui Update copyright year 2021-07-29 15:41:35 +01:00
whrlpool A few cleanups of the provider build.infos 2021-05-12 13:23:33 +02:00
x509 X509_PUBKEY_dup: Do not just up-ref the EVP_PKEY 2021-10-25 14:32:43 +02:00
alphacpuid.pl
arm64cpuid.pl aarch64: support BTI and pointer authentication in assembly 2021-10-01 09:35:38 +02:00
arm_arch.h aarch64: support BTI and pointer authentication in assembly 2021-10-01 09:35:38 +02:00
armcap.c enable getauxval on android 10 2021-06-25 18:31:05 +10:00
armv4cpuid.pl
asn1_dsa.c Update copyright year 2021-04-08 13:04:41 +01:00
bsearch.c
build.info FIPS: don't include crypto/passphrase.c in libfips.a 2021-06-05 10:32:13 +02:00
c64xpluscpuid.pl
context.c Add the concept of a child OSSL_LIB_CTX 2021-05-11 14:56:55 +01:00
core_algorithm.c CORE: add a provider argument to ossl_method_construct() 2021-10-27 12:41:10 +02:00
core_fetch.c CORE: add a provider argument to ossl_method_construct() 2021-10-27 12:41:10 +02:00
core_namemap.c Rename all getters to use get/get0 in name 2021-06-01 12:40:00 +02:00
cpt_err.c err: rename err_load_xxx_strings_int functions 2021-05-26 13:01:47 +10:00
cpuid.c Refactor CPUID code 2021-04-02 16:39:13 +02:00
cryptlib.c crypto: remove TODOs 2021-06-02 16:30:15 +10:00
ctype.c Use <> for #include openssl/xxx 2021-05-27 09:56:41 +10:00
cversion.c
der_writer.c
dllmain.c
ebcdic.c
ex_data.c Add the ability for ex_data to have a priority 2021-05-11 14:56:55 +01:00
getenv.c
ia64cpuid.S
info.c
init.c Prevent recursive call of OPENSSL_INIT_LOAD_CONFIG 2021-08-05 09:21:00 +10:00
initthread.c Fix a memleak in the FIPS provider 2021-05-24 09:39:15 +10:00
LPdir_nyi.c
LPdir_unix.c
LPdir_vms.c
LPdir_win32.c
LPdir_win.c
LPdir_wince.c
mem_clr.c
mem_sec.c Update copyright year 2021-04-08 13:04:41 +01:00
mem.c
mips_arch.h
o_dir.c
o_fopen.c
o_init.c
o_str.c Update copyright year 2021-04-08 13:04:41 +01:00
o_time.c
packet.c Update copyright year 2021-06-17 13:24:59 +01:00
param_build_set.c
param_build.c Replace OSSL_PARAM_BLD_free_params() with OSSL_PARAM_free(). 2021-04-12 16:55:30 +10:00
params_dup.c params_dup: fix off by one error that allows array overreach. 2021-04-21 08:57:42 +10:00
params_from_text.c
params.c params: fix range check when converting double to uint64_t. 2021-06-19 15:47:57 +10:00
pariscid.pl
passphrase.c Update copyright year 2021-07-29 15:41:35 +01:00
ppccap.c enable getauxval on android 10 2021-06-25 18:31:05 +10:00
ppccpuid.pl
provider_child.c Fix a race in ossl_provider_add_to_store() 2021-06-24 14:48:15 +01:00
provider_conf.c Add locking for the provider_conf.c 2021-08-27 09:51:00 +10:00
provider_core.c Permit no/empty digest in core_obj_add_sigid 2021-10-22 16:26:46 +02:00
provider_local.h make struct provider_info_st a full type 2021-06-24 14:48:15 +01:00
provider_predefined.c make struct provider_info_st a full type 2021-06-24 14:48:15 +01:00
provider.c Fix a race in ossl_provider_add_to_store() 2021-06-24 14:48:15 +01:00
punycode.c
README-sparse_array.md
s390x_arch.h Add default provider support for Keccak 224, 256, 384 and 512 2021-09-23 12:07:57 +10:00
s390xcap.c
s390xcpuid.pl
self_test_core.c Update copyright year 2021-05-20 14:22:33 +01:00
sparccpuid.S
sparcv9cap.c Split bignum code out of the sparcv9cap.c 2021-07-15 09:33:04 +02:00
sparse_array.c Update copyright year 2021-04-08 13:04:41 +01:00
threads_lib.c
threads_none.c Update copyright year 2021-04-08 13:04:41 +01:00
threads_pthread.c Defined out MUTEX attributes not available on NonStop SPT Threads. 2021-07-02 12:33:45 +10:00
threads_win.c Explicitly #include <synchapi.h> is unnecessary 2021-09-23 14:07:18 +02:00
trace.c Rework and make DEBUG macros consistent. 2021-05-28 10:04:31 +02:00
uid.c Openssl fails to compile on Debian with kfreebsd kernels 2021-09-02 10:02:32 +10:00
vms_rms.h
x86_64cpuid.pl Update copyright year 2021-04-08 13:04:41 +01:00
x86cpuid.pl