-.\" $OpenBSD: evp.3,v 1.15 2023/07/09 06:49:25 tb Exp $
-.\" OpenSSL a9c85cea Nov 11 09:33:55 2016 +0100
+.\" $OpenBSD: evp.3,v 1.16 2023/08/14 14:46:40 schwarze Exp $
+.\" full merge up to: OpenSSL man7/evp 24a535ea Sep 22 13:14:20 2020 +0100
.\"
.\" This file was written by Ulf Moeller <ulf@openssl.org>,
.\" Matt Caswell <matt@openssl.org>, Geoff Thorpe <geoff@openssl.org>,
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd $Mdocdate: July 9 2023 $
+.Dd $Mdocdate: August 14 2023 $
.Dt EVP 3
.Os
.Sh NAME
.Nm evp
-.Nd high level cryptographic functions
+.Nd high-level cryptographic functions
.Sh SYNOPSIS
.In openssl/evp.h
.Sh DESCRIPTION
-The EVP library provides a high level interface to cryptographic
+The EVP library provides a high-level interface to cryptographic
functions.
.Pp
.Xr EVP_SealInit 3
.Pp
The
.Fn EVP_PKEY_*
-functions provide a high level interface to asymmetric algorithms.
+functions provide a high-level interface to asymmetric algorithms.
To create a new
.Vt EVP_PKEY ,
see
.Xr EVP_PKEY_verify_recover 3 .
However, note that these functions do not perform a digest of the
data to be signed.
-Therefore normally you would use the
+Therefore, normally you would use the
.Xr EVP_DigestSignInit 3
functions for this purpose.
.It
then the various EVP functions will automatically use those
implementations in preference to built in software implementations.
.Pp
-Although low level algorithm specific functions exist for many
+Although low-level algorithm specific functions exist for many
algorithms, their use is discouraged.
They cannot be used with an
.Vt ENGINE ,
and
.Vt ENGINE
-versions of new algorithms cannot be accessed using the low level
+versions of new algorithms cannot be accessed using the low-level
functions.
Using them also makes code harder to adapt to new algorithms, some
options are not cleanly supported at the low level, and some
-operations are more efficient using the high level interfaces.
+operations are more efficient using the high-level interfaces.
.Sh SEE ALSO
+.Xr ASN1_item_digest 3 ,
+.Xr ASN1_item_sign 3 ,
+.Xr BIO_f_cipher 3 ,
+.Xr BIO_f_md 3 ,
+.Xr CMAC_Init 3 ,
+.Xr CMS_encrypt 3 ,
+.Xr CMS_sign 3 ,
.Xr crypto 3 ,
+.Xr d2i_PKCS8PrivateKey_bio 3 ,
+.Xr d2i_PrivateKey 3 ,
+.Xr ENGINE_get_cipher 3 ,
.Xr ENGINE_register_RSA 3 ,
.Xr EVP_AEAD_CTX_init 3 ,
.Xr EVP_aes_128_cbc 3 ,
.Xr EVP_BytesToKey 3 ,
.Xr EVP_camellia_128_cbc 3 ,
+.Xr EVP_CIPHER_meth_new 3 ,
.Xr EVP_des_cbc 3 ,
.Xr EVP_DigestInit 3 ,
.Xr EVP_DigestSignInit 3 ,
+.Xr EVP_DigestVerifyInit 3 ,
.Xr EVP_EncodeInit 3 ,
.Xr EVP_EncryptInit 3 ,
.Xr EVP_MD_meth_new 3 ,
.Xr EVP_OpenInit 3 ,
+.Xr EVP_PKCS82PKEY 3 ,
+.Xr EVP_PKEY_add1_attr 3 ,
+.Xr EVP_PKEY_asn1_get_count 3 ,
+.Xr EVP_PKEY_asn1_new 3 ,
+.Xr EVP_PKEY_check 3 ,
+.Xr EVP_PKEY_cmp 3 ,
+.Xr EVP_PKEY_CTX_ctrl 3 ,
+.Xr EVP_PKEY_CTX_new 3 ,
+.Xr EVP_PKEY_CTX_set_hkdf_md 3 ,
.Xr EVP_PKEY_decrypt 3 ,
.Xr EVP_PKEY_derive 3 ,
.Xr EVP_PKEY_encrypt 3 ,
+.Xr EVP_PKEY_get_default_digest_nid 3 ,
.Xr EVP_PKEY_keygen 3 ,
+.Xr EVP_PKEY_meth_get0_info 3 ,
+.Xr EVP_PKEY_meth_new 3 ,
.Xr EVP_PKEY_new 3 ,
.Xr EVP_PKEY_print_private 3 ,
.Xr EVP_PKEY_set1_RSA 3 ,
.Xr EVP_PKEY_sign 3 ,
+.Xr EVP_PKEY_size 3 ,
.Xr EVP_PKEY_verify 3 ,
.Xr EVP_PKEY_verify_recover 3 ,
.Xr EVP_rc4 3 ,
.Xr EVP_SealInit 3 ,
+.Xr EVP_sha3_224 3 ,
.Xr EVP_SignInit 3 ,
.Xr EVP_sm3 3 ,
.Xr EVP_sm4_cbc 3 ,
.Xr EVP_VerifyInit 3 ,
-.Xr EVP_whirlpool 3
+.Xr EVP_whirlpool 3 ,
+.Xr HMAC 3 ,
+.Xr OCSP_basic_sign 3 ,
+.Xr OCSP_request_sign 3 ,
+.Xr PEM_get_EVP_CIPHER_INFO 3 ,
+.Xr PEM_read_bio_PrivateKey 3 ,
+.Xr PKCS12_create 3 ,
+.Xr PKCS5_PBKDF2_HMAC 3 ,
+.Xr PKCS7_encrypt 3 ,
+.Xr PKCS7_sign 3 ,
+.Xr RSA_pkey_ctx_ctrl 3 ,
+.Xr SSL_CTX_set_tlsext_ticket_key_cb 3 ,
+.Xr X509_ALGOR_set_md 3 ,
+.Xr X509_check_private_key 3 ,
+.Xr X509_CRL_METHOD_new 3 ,
+.Xr X509_digest 3 ,
+.Xr X509_get_pubkey 3 ,
+.Xr X509_PUBKEY_set 3 ,
+.Xr X509_sign 3 ,
+.Xr X509_to_X509_REQ 3