Prepare EVP_MAC infrastructure for moving all MACs to providers
authorRichard Levitte <levitte@openssl.org>
Tue, 7 May 2019 10:39:58 +0000 (12:39 +0200)
committerRichard Levitte <levitte@openssl.org>
Thu, 15 Aug 2019 20:12:25 +0000 (22:12 +0200)
commite74bd29053a543ab4908ae8545b46f2e38c98bab
treeee0d540bd5f8319549c1ab0d4b356f8b166d021e
parent3ded2288a45d2cc3a27a1b08d29499cbcec52c0e
Prepare EVP_MAC infrastructure for moving all MACs to providers

Quite a few adaptations are needed, most prominently the added code
to allow provider based MACs.

As part of this, all the old information functions are gone, except
for EVP_MAC_name().  Some of them will reappear later, for example
EVP_MAC_do_all() in some form.

MACs by EVP_PKEY was particularly difficult to deal with, as they
need to allocate and deallocate EVP_MAC_CTXs "under the hood", and
thereby implicitly fetch the corresponding EVP_MAC.  This means that
EVP_MACs can't be constant in a EVP_MAC_CTX, as their reference count
may need to be incremented and decremented as part of the allocation
or deallocation of the EVP_MAC_CTX.  It may be that other provider
based EVP operation types may need to be handled in a similar manner.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/8877)
20 files changed:
apps/list.c
crypto/cmac/cm_ameth.c
crypto/evp/build.info
crypto/evp/evp_locl.h
crypto/evp/mac_lib.c
crypto/evp/mac_meth.c [new file with mode: 0644]
crypto/evp/p_lib.c
crypto/evp/pkey_mac.c
crypto/include/internal/evp_int.h
crypto/provider_core.c
doc/internal/man3/ossl_provider_new.pod
doc/man3/EVP_MAC.pod
doc/man7/provider-mac.pod [new file with mode: 0644]
include/internal/provider.h
include/openssl/core_names.h
include/openssl/core_numbers.h
include/openssl/crypto.h
include/openssl/evp.h
ssl/ssl_init.c
util/libcrypto.num