summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man3/EVP_PKEY_CTX_ctrl.3ssl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstream/archlinux/man3/EVP_PKEY_CTX_ctrl.3ssl
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/archlinux/man3/EVP_PKEY_CTX_ctrl.3ssl')
-rw-r--r--upstream/archlinux/man3/EVP_PKEY_CTX_ctrl.3ssl737
1 files changed, 737 insertions, 0 deletions
diff --git a/upstream/archlinux/man3/EVP_PKEY_CTX_ctrl.3ssl b/upstream/archlinux/man3/EVP_PKEY_CTX_ctrl.3ssl
new file mode 100644
index 00000000..d7516249
--- /dev/null
+++ b/upstream/archlinux/man3/EVP_PKEY_CTX_ctrl.3ssl
@@ -0,0 +1,737 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "EVP_PKEY_CTX_CTRL 3ssl"
+.TH EVP_PKEY_CTX_CTRL 3ssl 2024-01-30 3.2.1 OpenSSL
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+EVP_PKEY_CTX_ctrl,
+EVP_PKEY_CTX_ctrl_str,
+EVP_PKEY_CTX_ctrl_uint64,
+EVP_PKEY_CTX_md,
+EVP_PKEY_CTX_set_signature_md,
+EVP_PKEY_CTX_get_signature_md,
+EVP_PKEY_CTX_set_mac_key,
+EVP_PKEY_CTX_set_group_name,
+EVP_PKEY_CTX_get_group_name,
+EVP_PKEY_CTX_set_rsa_padding,
+EVP_PKEY_CTX_get_rsa_padding,
+EVP_PKEY_CTX_set_rsa_pss_saltlen,
+EVP_PKEY_CTX_get_rsa_pss_saltlen,
+EVP_PKEY_CTX_set_rsa_keygen_bits,
+EVP_PKEY_CTX_set_rsa_keygen_pubexp,
+EVP_PKEY_CTX_set1_rsa_keygen_pubexp,
+EVP_PKEY_CTX_set_rsa_keygen_primes,
+EVP_PKEY_CTX_set_rsa_mgf1_md_name,
+EVP_PKEY_CTX_set_rsa_mgf1_md,
+EVP_PKEY_CTX_get_rsa_mgf1_md,
+EVP_PKEY_CTX_get_rsa_mgf1_md_name,
+EVP_PKEY_CTX_set_rsa_oaep_md_name,
+EVP_PKEY_CTX_set_rsa_oaep_md,
+EVP_PKEY_CTX_get_rsa_oaep_md,
+EVP_PKEY_CTX_get_rsa_oaep_md_name,
+EVP_PKEY_CTX_set0_rsa_oaep_label,
+EVP_PKEY_CTX_get0_rsa_oaep_label,
+EVP_PKEY_CTX_set_dsa_paramgen_bits,
+EVP_PKEY_CTX_set_dsa_paramgen_q_bits,
+EVP_PKEY_CTX_set_dsa_paramgen_md,
+EVP_PKEY_CTX_set_dsa_paramgen_md_props,
+EVP_PKEY_CTX_set_dsa_paramgen_gindex,
+EVP_PKEY_CTX_set_dsa_paramgen_type,
+EVP_PKEY_CTX_set_dsa_paramgen_seed,
+EVP_PKEY_CTX_set_dh_paramgen_prime_len,
+EVP_PKEY_CTX_set_dh_paramgen_subprime_len,
+EVP_PKEY_CTX_set_dh_paramgen_generator,
+EVP_PKEY_CTX_set_dh_paramgen_type,
+EVP_PKEY_CTX_set_dh_paramgen_gindex,
+EVP_PKEY_CTX_set_dh_paramgen_seed,
+EVP_PKEY_CTX_set_dh_rfc5114,
+EVP_PKEY_CTX_set_dhx_rfc5114,
+EVP_PKEY_CTX_set_dh_pad,
+EVP_PKEY_CTX_set_dh_nid,
+EVP_PKEY_CTX_set_dh_kdf_type,
+EVP_PKEY_CTX_get_dh_kdf_type,
+EVP_PKEY_CTX_set0_dh_kdf_oid,
+EVP_PKEY_CTX_get0_dh_kdf_oid,
+EVP_PKEY_CTX_set_dh_kdf_md,
+EVP_PKEY_CTX_get_dh_kdf_md,
+EVP_PKEY_CTX_set_dh_kdf_outlen,
+EVP_PKEY_CTX_get_dh_kdf_outlen,
+EVP_PKEY_CTX_set0_dh_kdf_ukm,
+EVP_PKEY_CTX_get0_dh_kdf_ukm,
+EVP_PKEY_CTX_set_ec_paramgen_curve_nid,
+EVP_PKEY_CTX_set_ec_param_enc,
+EVP_PKEY_CTX_set_ecdh_cofactor_mode,
+EVP_PKEY_CTX_get_ecdh_cofactor_mode,
+EVP_PKEY_CTX_set_ecdh_kdf_type,
+EVP_PKEY_CTX_get_ecdh_kdf_type,
+EVP_PKEY_CTX_set_ecdh_kdf_md,
+EVP_PKEY_CTX_get_ecdh_kdf_md,
+EVP_PKEY_CTX_set_ecdh_kdf_outlen,
+EVP_PKEY_CTX_get_ecdh_kdf_outlen,
+EVP_PKEY_CTX_set0_ecdh_kdf_ukm,
+EVP_PKEY_CTX_get0_ecdh_kdf_ukm,
+EVP_PKEY_CTX_set1_id, EVP_PKEY_CTX_get1_id, EVP_PKEY_CTX_get1_id_len,
+EVP_PKEY_CTX_set_kem_op
+\&\- algorithm specific control operations
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 1
+\& #include <openssl/evp.h>
+\&
+\& int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
+\& int cmd, int p1, void *p2);
+\& int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype,
+\& int cmd, uint64_t value);
+\& int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
+\& const char *value);
+\&
+\& int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md);
+\&
+\& int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
+\& int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **pmd);
+\&
+\& int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key,
+\& int len);
+\& int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX *ctx, const char *name);
+\& int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX *ctx, char *name, size_t namelen);
+\&
+\& int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX *ctx, const char *op);
+\&
+\& #include <openssl/rsa.h>
+\&
+\& int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad);
+\& int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad);
+\& int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int saltlen);
+\& int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *saltlen);
+\& int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int mbits);
+\& int EVP_PKEY_CTX_set1_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp);
+\& int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes);
+\& int EVP_PKEY_CTX_set_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, const char *mdname,
+\& const char *mdprops);
+\& int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
+\& int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
+\& int EVP_PKEY_CTX_get_rsa_mgf1_md_name(EVP_PKEY_CTX *ctx, char *name,
+\& size_t namelen);
+\& int EVP_PKEY_CTX_set_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, const char *mdname,
+\& const char *mdprops);
+\& int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
+\& int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
+\& int EVP_PKEY_CTX_get_rsa_oaep_md_name(EVP_PKEY_CTX *ctx, char *name,
+\& size_t namelen);
+\& int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, void *label,
+\& int len);
+\& int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label);
+\&
+\& #include <openssl/dsa.h>
+\&
+\& int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits);
+\& int EVP_PKEY_CTX_set_dsa_paramgen_q_bits(EVP_PKEY_CTX *ctx, int qbits);
+\& int EVP_PKEY_CTX_set_dsa_paramgen_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
+\& int EVP_PKEY_CTX_set_dsa_paramgen_md_props(EVP_PKEY_CTX *ctx,
+\& const char *md_name,
+\& const char *md_properties);
+\& int EVP_PKEY_CTX_set_dsa_paramgen_type(EVP_PKEY_CTX *ctx, const char *name);
+\& int EVP_PKEY_CTX_set_dsa_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex);
+\& int EVP_PKEY_CTX_set_dsa_paramgen_seed(EVP_PKEY_CTX *ctx,
+\& const unsigned char *seed,
+\& size_t seedlen);
+\&
+\& #include <openssl/dh.h>
+\&
+\& int EVP_PKEY_CTX_set_dh_paramgen_prime_len(EVP_PKEY_CTX *ctx, int len);
+\& int EVP_PKEY_CTX_set_dh_paramgen_subprime_len(EVP_PKEY_CTX *ctx, int len);
+\& int EVP_PKEY_CTX_set_dh_paramgen_generator(EVP_PKEY_CTX *ctx, int gen);
+\& int EVP_PKEY_CTX_set_dh_paramgen_type(EVP_PKEY_CTX *ctx, int type);
+\& int EVP_PKEY_CTX_set_dh_pad(EVP_PKEY_CTX *ctx, int pad);
+\& int EVP_PKEY_CTX_set_dh_nid(EVP_PKEY_CTX *ctx, int nid);
+\& int EVP_PKEY_CTX_set_dh_rfc5114(EVP_PKEY_CTX *ctx, int rfc5114);
+\& int EVP_PKEY_CTX_set_dhx_rfc5114(EVP_PKEY_CTX *ctx, int rfc5114);
+\& int EVP_PKEY_CTX_set_dh_paramgen_gindex(EVP_PKEY_CTX *ctx, int gindex);
+\& int EVP_PKEY_CTX_set_dh_paramgen_seed(EVP_PKEY_CTX *ctx,
+\& const unsigned char *seed,
+\& size_t seedlen);
+\& int EVP_PKEY_CTX_set_dh_kdf_type(EVP_PKEY_CTX *ctx, int kdf);
+\& int EVP_PKEY_CTX_get_dh_kdf_type(EVP_PKEY_CTX *ctx);
+\& int EVP_PKEY_CTX_set0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT *oid);
+\& int EVP_PKEY_CTX_get0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT **oid);
+\& int EVP_PKEY_CTX_set_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
+\& int EVP_PKEY_CTX_get_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
+\& int EVP_PKEY_CTX_set_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int len);
+\& int EVP_PKEY_CTX_get_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len);
+\& int EVP_PKEY_CTX_set0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *ukm, int len);
+\&
+\& #include <openssl/ec.h>
+\&
+\& int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid);
+\& int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx, int param_enc);
+\& int EVP_PKEY_CTX_set_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx, int cofactor_mode);
+\& int EVP_PKEY_CTX_get_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx);
+\& int EVP_PKEY_CTX_set_ecdh_kdf_type(EVP_PKEY_CTX *ctx, int kdf);
+\& int EVP_PKEY_CTX_get_ecdh_kdf_type(EVP_PKEY_CTX *ctx);
+\& int EVP_PKEY_CTX_set_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
+\& int EVP_PKEY_CTX_get_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
+\& int EVP_PKEY_CTX_set_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int len);
+\& int EVP_PKEY_CTX_get_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len);
+\& int EVP_PKEY_CTX_set0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *ukm, int len);
+\&
+\& int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, void *id, size_t id_len);
+\& int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id);
+\& int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len);
+.Ve
+.PP
+The following functions have been deprecated since OpenSSL 3.0, and can be
+hidden entirely by defining \fBOPENSSL_API_COMPAT\fR with a suitable version value,
+see \fBopenssl_user_macros\fR\|(7):
+.PP
+.Vb 1
+\& #include <openssl/rsa.h>
+\&
+\& int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp);
+\&
+\& #include <openssl/dh.h>
+\&
+\& int EVP_PKEY_CTX_get0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm);
+\&
+\& #include <openssl/ec.h>
+\&
+\& int EVP_PKEY_CTX_get0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm);
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+\&\fBEVP_PKEY_CTX_ctrl()\fR sends a control operation to the context \fIctx\fR. The key
+type used must match \fIkeytype\fR if it is not \-1. The parameter \fIoptype\fR is a
+mask indicating which operations the control can be applied to.
+The control command is indicated in \fIcmd\fR and any additional arguments in
+\&\fIp1\fR and \fIp2\fR.
+.PP
+For \fIcmd\fR = \fBEVP_PKEY_CTRL_SET_MAC_KEY\fR, \fIp1\fR is the length of the MAC key,
+and \fIp2\fR is the MAC key. This is used by Poly1305, SipHash, HMAC and CMAC.
+.PP
+Applications will not normally call \fBEVP_PKEY_CTX_ctrl()\fR directly but will
+instead call one of the algorithm specific functions below.
+.PP
+\&\fBEVP_PKEY_CTX_ctrl_uint64()\fR is a wrapper that directly passes a
+uint64 value as \fIp2\fR to \fBEVP_PKEY_CTX_ctrl()\fR.
+.PP
+\&\fBEVP_PKEY_CTX_ctrl_str()\fR allows an application to send an algorithm
+specific control operation to a context \fIctx\fR in string form. This is
+intended to be used for options specified on the command line or in text
+files. The commands supported are documented in the openssl utility
+command line pages for the option \fI\-pkeyopt\fR which is supported by the
+\&\fIpkeyutl\fR, \fIgenpkey\fR and \fIreq\fR commands.
+.PP
+\&\fBEVP_PKEY_CTX_md()\fR sends a message digest control operation to the context
+\&\fIctx\fR. The message digest is specified by its name \fImd\fR.
+.PP
+\&\fBEVP_PKEY_CTX_set_signature_md()\fR sets the message digest type used
+in a signature. It can be used in the RSA, DSA and ECDSA algorithms.
+.PP
+\&\fBEVP_PKEY_CTX_get_signature_md()\fRgets the message digest type used
+in a signature. It can be used in the RSA, DSA and ECDSA algorithms.
+.PP
+Key generation typically involves setting up parameters to be used and
+generating the private and public key data. Some algorithm implementations
+allow private key data to be set explicitly using \fBEVP_PKEY_CTX_set_mac_key()\fR.
+In this case key generation is simply the process of setting up the
+parameters for the key and then setting the raw key data to the value explicitly.
+Normally applications would call \fBEVP_PKEY_new_raw_private_key\fR\|(3) or similar
+functions instead.
+.PP
+\&\fBEVP_PKEY_CTX_set_mac_key()\fR can be used with any of the algorithms supported by
+the \fBEVP_PKEY_new_raw_private_key\fR\|(3) function.
+.PP
+\&\fBEVP_PKEY_CTX_set_group_name()\fR sets the group name to \fIname\fR for parameter and
+key generation. For example for EC keys this will set the curve name and for
+DH keys it will set the name of the finite field group.
+.PP
+\&\fBEVP_PKEY_CTX_get_group_name()\fR finds the group name that's currently
+set with \fIctx\fR, and writes it to the location that \fIname\fR points at, as long
+as its size \fInamelen\fR is large enough to store that name, including a
+terminating NUL byte.
+.SS "RSA parameters"
+.IX Subsection "RSA parameters"
+\&\fBEVP_PKEY_CTX_set_rsa_padding()\fR sets the RSA padding mode for \fIctx\fR.
+The \fIpad\fR parameter can take the value \fBRSA_PKCS1_PADDING\fR for PKCS#1
+padding, \fBRSA_NO_PADDING\fR for
+no padding, \fBRSA_PKCS1_OAEP_PADDING\fR for OAEP padding (encrypt and
+decrypt only), \fBRSA_X931_PADDING\fR for X9.31 padding (signature operations
+only), \fBRSA_PKCS1_PSS_PADDING\fR (sign and verify only) and
+\&\fBRSA_PKCS1_WITH_TLS_PADDING\fR for TLS RSA ClientKeyExchange message padding
+(decryption only).
+.PP
+Two RSA padding modes behave differently if \fBEVP_PKEY_CTX_set_signature_md()\fR
+is used. If this function is called for PKCS#1 padding the plaintext buffer is
+an actual digest value and is encapsulated in a DigestInfo structure according
+to PKCS#1 when signing and this structure is expected (and stripped off) when
+verifying. If this control is not used with RSA and PKCS#1 padding then the
+supplied data is used directly and not encapsulated. In the case of X9.31
+padding for RSA the algorithm identifier byte is added or checked and removed
+if this control is called. If it is not called then the first byte of the plaintext
+buffer is expected to be the algorithm identifier byte.
+.PP
+\&\fBEVP_PKEY_CTX_get_rsa_padding()\fR gets the RSA padding mode for \fIctx\fR.
+.PP
+\&\fBEVP_PKEY_CTX_set_rsa_pss_saltlen()\fR sets the RSA PSS salt length to \fIsaltlen\fR.
+As its name implies it is only supported for PSS padding. If this function is
+not called then the salt length is maximized up to the digest length when
+signing and auto detection when verifying. Four special values are supported:
+.IP \fBRSA_PSS_SALTLEN_DIGEST\fR 4
+.IX Item "RSA_PSS_SALTLEN_DIGEST"
+sets the salt length to the digest length.
+.IP \fBRSA_PSS_SALTLEN_MAX\fR 4
+.IX Item "RSA_PSS_SALTLEN_MAX"
+sets the salt length to the maximum permissible value.
+.IP \fBRSA_PSS_SALTLEN_AUTO\fR 4
+.IX Item "RSA_PSS_SALTLEN_AUTO"
+causes the salt length to be automatically determined based on the
+\&\fBPSS\fR block structure when verifying. When signing, it has the same
+meaning as \fBRSA_PSS_SALTLEN_MAX\fR.
+.IP \fBRSA_PSS_SALTLEN_AUTO_DIGEST_MAX\fR 4
+.IX Item "RSA_PSS_SALTLEN_AUTO_DIGEST_MAX"
+causes the salt length to be automatically determined based on the \fBPSS\fR block
+structure when verifying, like \fBRSA_PSS_SALTLEN_AUTO\fR. When signing, the salt
+length is maximized up to a maximum of the digest length to comply with FIPS
+186\-4 section 5.5.
+.PP
+\&\fBEVP_PKEY_CTX_get_rsa_pss_saltlen()\fR gets the RSA PSS salt length for \fIctx\fR.
+The padding mode must already have been set to \fBRSA_PKCS1_PSS_PADDING\fR.
+.PP
+\&\fBEVP_PKEY_CTX_set_rsa_keygen_bits()\fR sets the RSA key length for
+RSA key generation to \fIbits\fR. If not specified 2048 bits is used.
+.PP
+\&\fBEVP_PKEY_CTX_set1_rsa_keygen_pubexp()\fR sets the public exponent value for RSA key
+generation to the value stored in \fIpubexp\fR. Currently it should be an odd
+integer. In accordance with the OpenSSL naming convention, the \fIpubexp\fR pointer
+must be freed independently of the EVP_PKEY_CTX (ie, it is internally copied).
+If not specified 65537 is used.
+.PP
+\&\fBEVP_PKEY_CTX_set_rsa_keygen_pubexp()\fR does the same as
+\&\fBEVP_PKEY_CTX_set1_rsa_keygen_pubexp()\fR except that there is no internal copy and
+therefore \fIpubexp\fR should not be modified or freed after the call.
+.PP
+\&\fBEVP_PKEY_CTX_set_rsa_keygen_primes()\fR sets the number of primes for
+RSA key generation to \fIprimes\fR. If not specified 2 is used.
+.PP
+\&\fBEVP_PKEY_CTX_set_rsa_mgf1_md_name()\fR sets the MGF1 digest for RSA
+padding schemes to the digest named \fImdname\fR. If the RSA algorithm
+implementation for the selected provider supports it then the digest will be
+fetched using the properties \fImdprops\fR. If not explicitly set the signing
+digest is used. The padding mode must have been set to \fBRSA_PKCS1_OAEP_PADDING\fR
+or \fBRSA_PKCS1_PSS_PADDING\fR.
+.PP
+\&\fBEVP_PKEY_CTX_set_rsa_mgf1_md()\fR does the same as
+\&\fBEVP_PKEY_CTX_set_rsa_mgf1_md_name()\fR except that the name of the digest is
+inferred from the supplied \fImd\fR and it is not possible to specify any
+properties.
+.PP
+\&\fBEVP_PKEY_CTX_get_rsa_mgf1_md_name()\fR gets the name of the MGF1
+digest algorithm for \fIctx\fR. If not explicitly set the signing digest is used.
+The padding mode must have been set to \fBRSA_PKCS1_OAEP_PADDING\fR or
+\&\fBRSA_PKCS1_PSS_PADDING\fR.
+.PP
+\&\fBEVP_PKEY_CTX_get_rsa_mgf1_md()\fR does the same as
+\&\fBEVP_PKEY_CTX_get_rsa_mgf1_md_name()\fR except that it returns a pointer to an
+EVP_MD object instead. Note that only known, built-in EVP_MD objects will be
+returned. The EVP_MD object may be NULL if the digest is not one of these (such
+as a digest only implemented in a third party provider).
+.PP
+\&\fBEVP_PKEY_CTX_set_rsa_oaep_md_name()\fR sets the message digest type
+used in RSA OAEP to the digest named \fImdname\fR. If the RSA algorithm
+implementation for the selected provider supports it then the digest will be
+fetched using the properties \fImdprops\fR. The padding mode must have been set to
+\&\fBRSA_PKCS1_OAEP_PADDING\fR.
+.PP
+\&\fBEVP_PKEY_CTX_set_rsa_oaep_md()\fR does the same as
+\&\fBEVP_PKEY_CTX_set_rsa_oaep_md_name()\fR except that the name of the digest is
+inferred from the supplied \fImd\fR and it is not possible to specify any
+properties.
+.PP
+\&\fBEVP_PKEY_CTX_get_rsa_oaep_md_name()\fR gets the message digest
+algorithm name used in RSA OAEP and stores it in the buffer \fIname\fR which is of
+size \fInamelen\fR. The padding mode must have been set to
+\&\fBRSA_PKCS1_OAEP_PADDING\fR. The buffer should be sufficiently large for any
+expected digest algorithm names or the function will fail.
+.PP
+\&\fBEVP_PKEY_CTX_get_rsa_oaep_md()\fR does the same as
+\&\fBEVP_PKEY_CTX_get_rsa_oaep_md_name()\fR except that it returns a pointer to an
+EVP_MD object instead. Note that only known, built-in EVP_MD objects will be
+returned. The EVP_MD object may be NULL if the digest is not one of these (such
+as a digest only implemented in a third party provider).
+.PP
+\&\fBEVP_PKEY_CTX_set0_rsa_oaep_label()\fR sets the RSA OAEP label to binary data
+\&\fIlabel\fR and its length in bytes to \fIlen\fR. If \fIlabel\fR is NULL or \fIlen\fR is 0,
+the label is cleared. The library takes ownership of the label so the
+caller should not free the original memory pointed to by \fIlabel\fR.
+The padding mode must have been set to \fBRSA_PKCS1_OAEP_PADDING\fR.
+.PP
+\&\fBEVP_PKEY_CTX_get0_rsa_oaep_label()\fR gets the RSA OAEP label to
+\&\fIlabel\fR. The return value is the label length. The padding mode
+must have been set to \fBRSA_PKCS1_OAEP_PADDING\fR. The resulting pointer is owned
+by the library and should not be freed by the caller.
+.PP
+\&\fBRSA_PKCS1_WITH_TLS_PADDING\fR is used when decrypting an RSA encrypted TLS
+pre-master secret in a TLS ClientKeyExchange message. It is the same as
+RSA_PKCS1_PADDING except that it additionally verifies that the result is the
+correct length and the first two bytes are the protocol version initially
+requested by the client. If the encrypted content is publicly invalid then the
+decryption will fail. However, if the padding checks fail then decryption will
+still appear to succeed but a random TLS premaster secret will be returned
+instead. This padding mode accepts two parameters which can be set using the
+\&\fBEVP_PKEY_CTX_set_params\fR\|(3) function. These are
+OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION and
+OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION, both of which are expected to be
+unsigned integers. Normally only the first of these will be set and represents
+the TLS protocol version that was first requested by the client (e.g. 0x0303 for
+TLSv1.2, 0x0302 for TLSv1.1 etc). Historically some buggy clients would use the
+negotiated protocol version instead of the protocol version first requested. If
+this behaviour should be tolerated then
+OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION should be set to the actual
+negotiated protocol version. Otherwise it should be left unset.
+.PP
+Similarly to the \fBRSA_PKCS1_WITH_TLS_PADDING\fR above, since OpenSSL version
+3.2.0, the use of \fBRSA_PKCS1_PADDING\fR will return a randomly generated message
+instead of padding errors in case padding checks fail. Applications that
+want to remain secure while using earlier versions of OpenSSL, still need to
+handle both the error code from the RSA decryption operation and the
+returned message in a side channel secure manner.
+This protection against Bleichenbacher attacks can be disabled by setting
+the OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION (an unsigned integer) to 0.
+.SS "DSA parameters"
+.IX Subsection "DSA parameters"
+\&\fBEVP_PKEY_CTX_set_dsa_paramgen_bits()\fR sets the number of bits used for DSA
+parameter generation to \fBnbits\fR. If not specified, 2048 is used.
+.PP
+\&\fBEVP_PKEY_CTX_set_dsa_paramgen_q_bits()\fR sets the number of bits in the subprime
+parameter \fIq\fR for DSA parameter generation to \fIqbits\fR. If not specified, 224
+is used. If a digest function is specified below, this parameter is ignored and
+instead, the number of bits in \fIq\fR matches the size of the digest.
+.PP
+\&\fBEVP_PKEY_CTX_set_dsa_paramgen_md()\fR sets the digest function used for DSA
+parameter generation to \fImd\fR. If not specified, one of SHA\-1, SHA\-224, or
+SHA\-256 is selected to match the bit length of \fIq\fR above.
+.PP
+\&\fBEVP_PKEY_CTX_set_dsa_paramgen_md_props()\fR sets the digest function used for DSA
+parameter generation using \fImd_name\fR and \fImd_properties\fR to retrieve the
+digest from a provider.
+If not specified, \fImd_name\fR will be set to one of SHA\-1, SHA\-224, or
+SHA\-256 depending on the bit length of \fIq\fR above. \fImd_properties\fR is a
+property query string that has a default value of '' if not specified.
+.PP
+\&\fBEVP_PKEY_CTX_set_dsa_paramgen_gindex()\fR sets the \fIgindex\fR used by the generator
+G. The default value is \-1 which uses unverifiable g, otherwise a positive value
+uses verifiable g. This value must be saved if key validation of g is required,
+since it is not part of a persisted key.
+.PP
+\&\fBEVP_PKEY_CTX_set_dsa_paramgen_seed()\fR sets the \fIseed\fR to use for generation
+rather than using a randomly generated value for the seed. This is useful for
+testing purposes only and can fail if the seed does not produce primes for both
+p & q on its first iteration. This value must be saved if key validation of
+p, q, and verifiable g are required, since it is not part of a persisted key.
+.PP
+\&\fBEVP_PKEY_CTX_set_dsa_paramgen_type()\fR sets the generation type to use FIPS186\-4
+generation if \fIname\fR is "fips186_4", or FIPS186\-2 generation if \fIname\fR is
+"fips186_2". The default value for the default provider is "fips186_2". The
+default value for the FIPS provider is "fips186_4".
+.SS "DH parameters"
+.IX Subsection "DH parameters"
+\&\fBEVP_PKEY_CTX_set_dh_paramgen_prime_len()\fR sets the length of the DH prime
+parameter \fIp\fR for DH parameter generation. If this function is not called then
+2048 is used. Only accepts lengths greater than or equal to 256.
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_paramgen_subprime_len()\fR sets the length of the DH
+optional subprime parameter \fIq\fR for DH parameter generation. The default is
+256 if the prime is at least 2048 bits long or 160 otherwise. The DH paramgen
+type must have been set to "fips186_4".
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_paramgen_generator()\fR sets DH generator to \fIgen\fR for DH
+parameter generation. If not specified 2 is used.
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_paramgen_type()\fR sets the key type for DH parameter
+generation. The supported parameters are:
+.IP \fBDH_PARAMGEN_TYPE_GROUP\fR 4
+.IX Item "DH_PARAMGEN_TYPE_GROUP"
+Use a named group. If only the safe prime parameter \fIp\fR is set this can be
+used to select a ffdhe safe prime group of the correct size.
+.IP \fBDH_PARAMGEN_TYPE_FIPS_186_4\fR 4
+.IX Item "DH_PARAMGEN_TYPE_FIPS_186_4"
+FIPS186\-4 FFC parameter generator.
+.IP \fBDH_PARAMGEN_TYPE_FIPS_186_2\fR 4
+.IX Item "DH_PARAMGEN_TYPE_FIPS_186_2"
+FIPS186\-2 FFC parameter generator (X9.42 DH).
+.IP \fBDH_PARAMGEN_TYPE_GENERATOR\fR 4
+.IX Item "DH_PARAMGEN_TYPE_GENERATOR"
+Uses a safe prime generator g (PKCS#3 format).
+.PP
+The default in the default provider is \fBDH_PARAMGEN_TYPE_GENERATOR\fR for the
+"DH" keytype, and \fBDH_PARAMGEN_TYPE_FIPS_186_2\fR for the "DHX" keytype. In the
+FIPS provider the default value is \fBDH_PARAMGEN_TYPE_GROUP\fR for the "DH"
+keytype and <\fBDH_PARAMGEN_TYPE_FIPS_186_4\fR for the "DHX" keytype.
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_paramgen_gindex()\fR sets the \fIgindex\fR used by the generator G.
+The default value is \-1 which uses unverifiable g, otherwise a positive value
+uses verifiable g. This value must be saved if key validation of g is required,
+since it is not part of a persisted key.
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_paramgen_seed()\fR sets the \fIseed\fR to use for generation
+rather than using a randomly generated value for the seed. This is useful for
+testing purposes only and can fail if the seed does not produce primes for both
+p & q on its first iteration. This value must be saved if key validation of p, q,
+and verifiable g are required, since it is not part of a persisted key.
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_pad()\fR sets the DH padding mode.
+If \fIpad\fR is 1 the shared secret is padded with zeros up to the size of the DH
+prime \fIp\fR.
+If \fIpad\fR is zero (the default) then no padding is performed.
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_nid()\fR sets the DH parameters to values corresponding to
+\&\fInid\fR as defined in RFC7919 or RFC3526. The \fInid\fR parameter must be
+\&\fBNID_ffdhe2048\fR, \fBNID_ffdhe3072\fR, \fBNID_ffdhe4096\fR, \fBNID_ffdhe6144\fR,
+\&\fBNID_ffdhe8192\fR, \fBNID_modp_1536\fR, \fBNID_modp_2048\fR, \fBNID_modp_3072\fR,
+\&\fBNID_modp_4096\fR, \fBNID_modp_6144\fR, \fBNID_modp_8192\fR or \fBNID_undef\fR to clear
+the stored value. This function can be called during parameter or key generation.
+The nid parameter and the rfc5114 parameter are mutually exclusive.
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_rfc5114()\fR and \fBEVP_PKEY_CTX_set_dhx_rfc5114()\fR both set the
+DH parameters to the values defined in RFC5114. The \fIrfc5114\fR parameter must
+be 1, 2 or 3 corresponding to RFC5114 sections 2.1, 2.2 and 2.3. or 0 to clear
+the stored value. This macro can be called during parameter generation. The
+\&\fIctx\fR must have a key type of \fBEVP_PKEY_DHX\fR.
+The rfc5114 parameter and the nid parameter are mutually exclusive.
+.SS "DH key derivation function parameters"
+.IX Subsection "DH key derivation function parameters"
+Note that all of the following functions require that the \fIctx\fR parameter has
+a private key type of \fBEVP_PKEY_DHX\fR. When using key derivation, the output of
+\&\fBEVP_PKEY_derive()\fR is the output of the KDF instead of the DH shared secret.
+The KDF output is typically used as a Key Encryption Key (KEK) that in turn
+encrypts a Content Encryption Key (CEK).
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_kdf_type()\fR sets the key derivation function type to \fIkdf\fR
+for DH key derivation. Possible values are \fBEVP_PKEY_DH_KDF_NONE\fR and
+\&\fBEVP_PKEY_DH_KDF_X9_42\fR which uses the key derivation specified in RFC2631
+(based on the keying algorithm described in X9.42). When using key derivation,
+the \fIkdf_oid\fR, \fIkdf_md\fR and \fIkdf_outlen\fR parameters must also be specified.
+.PP
+\&\fBEVP_PKEY_CTX_get_dh_kdf_type()\fR gets the key derivation function type for \fIctx\fR
+used for DH key derivation. Possible values are \fBEVP_PKEY_DH_KDF_NONE\fR and
+\&\fBEVP_PKEY_DH_KDF_X9_42\fR.
+.PP
+\&\fBEVP_PKEY_CTX_set0_dh_kdf_oid()\fR sets the key derivation function object
+identifier to \fIoid\fR for DH key derivation. This OID should identify the
+algorithm to be used with the Content Encryption Key.
+The library takes ownership of the object identifier so the caller should not
+free the original memory pointed to by \fIoid\fR.
+.PP
+\&\fBEVP_PKEY_CTX_get0_dh_kdf_oid()\fR gets the key derivation function oid for \fIctx\fR
+used for DH key derivation. The resulting pointer is owned by the library and
+should not be freed by the caller.
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_kdf_md()\fR sets the key derivation function message digest to
+\&\fImd\fR for DH key derivation. Note that RFC2631 specifies that this digest should
+be SHA1 but OpenSSL tolerates other digests.
+.PP
+\&\fBEVP_PKEY_CTX_get_dh_kdf_md()\fR gets the key derivation function message digest for
+\&\fIctx\fR used for DH key derivation.
+.PP
+\&\fBEVP_PKEY_CTX_set_dh_kdf_outlen()\fR sets the key derivation function output length
+to \fIlen\fR for DH key derivation.
+.PP
+\&\fBEVP_PKEY_CTX_get_dh_kdf_outlen()\fR gets the key derivation function output length
+for \fIctx\fR used for DH key derivation.
+.PP
+\&\fBEVP_PKEY_CTX_set0_dh_kdf_ukm()\fR sets the user key material to \fIukm\fR and its
+length to \fIlen\fR for DH key derivation. This parameter is optional and
+corresponds to the partyAInfo field in RFC2631 terms. The specification
+requires that it is 512 bits long but this is not enforced by OpenSSL.
+The library takes ownership of the user key material so the caller should not
+free the original memory pointed to by \fIukm\fR.
+.PP
+\&\fBEVP_PKEY_CTX_get0_dh_kdf_ukm()\fR gets the user key material for \fIctx\fR.
+The return value is the user key material length. The resulting pointer is owned
+by the library and should not be freed by the caller.
+.SS "EC parameters"
+.IX Subsection "EC parameters"
+Use \fBEVP_PKEY_CTX_set_group_name()\fR (described above) to set the curve name to
+\&\fIname\fR for parameter and key generation.
+.PP
+\&\fBEVP_PKEY_CTX_set_ec_paramgen_curve_nid()\fR does the same as
+\&\fBEVP_PKEY_CTX_set_group_name()\fR, but is specific to EC and uses a \fInid\fR rather
+than a name string.
+.PP
+For EC parameter generation, one of \fBEVP_PKEY_CTX_set_group_name()\fR
+or \fBEVP_PKEY_CTX_set_ec_paramgen_curve_nid()\fR must be called or an error occurs
+because there is no default curve.
+These function can also be called to set the curve explicitly when
+generating an EC key.
+.PP
+\&\fBEVP_PKEY_CTX_get_group_name()\fR (described above) can be used to obtain the curve
+name that's currently set with \fIctx\fR.
+.PP
+\&\fBEVP_PKEY_CTX_set_ec_param_enc()\fR sets the EC parameter encoding to \fIparam_enc\fR
+when generating EC parameters or an EC key. The encoding can be
+\&\fBOPENSSL_EC_EXPLICIT_CURVE\fR for explicit parameters (the default in versions
+of OpenSSL before 1.1.0) or \fBOPENSSL_EC_NAMED_CURVE\fR to use named curve form.
+For maximum compatibility the named curve form should be used. Note: the
+\&\fBOPENSSL_EC_NAMED_CURVE\fR value was added in OpenSSL 1.1.0; previous
+versions should use 0 instead.
+.SS "ECDH parameters"
+.IX Subsection "ECDH parameters"
+\&\fBEVP_PKEY_CTX_set_ecdh_cofactor_mode()\fR sets the cofactor mode to \fIcofactor_mode\fR
+for ECDH key derivation. Possible values are 1 to enable cofactor
+key derivation, 0 to disable it and \-1 to clear the stored cofactor mode and
+fallback to the private key cofactor mode.
+.PP
+\&\fBEVP_PKEY_CTX_get_ecdh_cofactor_mode()\fR returns the cofactor mode for \fIctx\fR used
+for ECDH key derivation. Possible values are 1 when cofactor key derivation is
+enabled and 0 otherwise.
+.SS "ECDH key derivation function parameters"
+.IX Subsection "ECDH key derivation function parameters"
+\&\fBEVP_PKEY_CTX_set_ecdh_kdf_type()\fR sets the key derivation function type to
+\&\fIkdf\fR for ECDH key derivation. Possible values are \fBEVP_PKEY_ECDH_KDF_NONE\fR
+and \fBEVP_PKEY_ECDH_KDF_X9_63\fR which uses the key derivation specified in X9.63.
+When using key derivation, the \fIkdf_md\fR and \fIkdf_outlen\fR parameters must
+also be specified.
+.PP
+\&\fBEVP_PKEY_CTX_get_ecdh_kdf_type()\fR returns the key derivation function type for
+\&\fIctx\fR used for ECDH key derivation. Possible values are
+\&\fBEVP_PKEY_ECDH_KDF_NONE\fR and \fBEVP_PKEY_ECDH_KDF_X9_63\fR.
+.PP
+\&\fBEVP_PKEY_CTX_set_ecdh_kdf_md()\fR sets the key derivation function message digest
+to \fImd\fR for ECDH key derivation. Note that X9.63 specifies that this digest
+should be SHA1 but OpenSSL tolerates other digests.
+.PP
+\&\fBEVP_PKEY_CTX_get_ecdh_kdf_md()\fR gets the key derivation function message digest
+for \fIctx\fR used for ECDH key derivation.
+.PP
+\&\fBEVP_PKEY_CTX_set_ecdh_kdf_outlen()\fR sets the key derivation function output
+length to \fIlen\fR for ECDH key derivation.
+.PP
+\&\fBEVP_PKEY_CTX_get_ecdh_kdf_outlen()\fR gets the key derivation function output
+length for \fIctx\fR used for ECDH key derivation.
+.PP
+\&\fBEVP_PKEY_CTX_set0_ecdh_kdf_ukm()\fR sets the user key material to \fIukm\fR for ECDH
+key derivation. This parameter is optional and corresponds to the shared info in
+X9.63 terms. The library takes ownership of the user key material so the caller
+should not free the original memory pointed to by \fIukm\fR.
+.PP
+\&\fBEVP_PKEY_CTX_get0_ecdh_kdf_ukm()\fR gets the user key material for \fIctx\fR.
+The return value is the user key material length. The resulting pointer is owned
+by the library and should not be freed by the caller.
+.SS "Other parameters"
+.IX Subsection "Other parameters"
+\&\fBEVP_PKEY_CTX_set1_id()\fR, \fBEVP_PKEY_CTX_get1_id()\fR and \fBEVP_PKEY_CTX_get1_id_len()\fR
+are used to manipulate the special identifier field for specific signature
+algorithms such as SM2. The \fBEVP_PKEY_CTX_set1_id()\fR sets an ID pointed by \fIid\fR with
+the length \fIid_len\fR to the library. The library takes a copy of the id so that
+the caller can safely free the original memory pointed to by \fIid\fR.
+\&\fBEVP_PKEY_CTX_get1_id_len()\fR returns the length of the ID set via a previous call
+to \fBEVP_PKEY_CTX_set1_id()\fR. The length is usually used to allocate adequate
+memory for further calls to \fBEVP_PKEY_CTX_get1_id()\fR. \fBEVP_PKEY_CTX_get1_id()\fR
+returns the previously set ID value to caller in \fIid\fR. The caller should
+allocate adequate memory space for the \fIid\fR before calling \fBEVP_PKEY_CTX_get1_id()\fR.
+.PP
+\&\fBEVP_PKEY_CTX_set_kem_op()\fR sets the KEM operation to run. This can be set after
+\&\fBEVP_PKEY_encapsulate_init()\fR or \fBEVP_PKEY_decapsulate_init()\fR to select the
+kem operation. RSA is the only key type that supports encapsulation currently,
+and as there is no default operation for the RSA type, this function must be
+called before \fBEVP_PKEY_encapsulate()\fR or \fBEVP_PKEY_decapsulate()\fR.
+.SH "RETURN VALUES"
+.IX Header "RETURN VALUES"
+All other functions described on this page return a positive value for success
+and 0 or a negative value for failure. In particular a return value of \-2
+indicates the operation is not supported by the public key algorithm.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBEVP_PKEY_CTX_set_params\fR\|(3),
+\&\fBEVP_PKEY_CTX_new\fR\|(3),
+\&\fBEVP_PKEY_encrypt\fR\|(3),
+\&\fBEVP_PKEY_decrypt\fR\|(3),
+\&\fBEVP_PKEY_sign\fR\|(3),
+\&\fBEVP_PKEY_verify\fR\|(3),
+\&\fBEVP_PKEY_verify_recover\fR\|(3),
+\&\fBEVP_PKEY_derive\fR\|(3),
+\&\fBEVP_PKEY_keygen\fR\|(3)
+\&\fBEVP_PKEY_encapsulate\fR\|(3)
+\&\fBEVP_PKEY_decapsulate\fR\|(3)
+.SH HISTORY
+.IX Header "HISTORY"
+\&\fBEVP_PKEY_CTX_get_rsa_oaep_md_name()\fR, \fBEVP_PKEY_CTX_get_rsa_mgf1_md_name()\fR,
+\&\fBEVP_PKEY_CTX_set_rsa_mgf1_md_name()\fR, \fBEVP_PKEY_CTX_set_rsa_oaep_md_name()\fR,
+\&\fBEVP_PKEY_CTX_set_dsa_paramgen_md_props()\fR, \fBEVP_PKEY_CTX_set_dsa_paramgen_gindex()\fR,
+\&\fBEVP_PKEY_CTX_set_dsa_paramgen_type()\fR, \fBEVP_PKEY_CTX_set_dsa_paramgen_seed()\fR,
+\&\fBEVP_PKEY_CTX_set_group_name()\fR and \fBEVP_PKEY_CTX_get_group_name()\fR
+were added in OpenSSL 3.0.
+.PP
+The \fBEVP_PKEY_CTX_set1_id()\fR, \fBEVP_PKEY_CTX_get1_id()\fR and
+\&\fBEVP_PKEY_CTX_get1_id_len()\fR macros were added in 1.1.1, other functions were
+added in OpenSSL 1.0.0.
+.PP
+In OpenSSL 1.1.1 and below the functions were mostly macros.
+From OpenSSL 3.0 they are all functions.
+.PP
+\&\fBEVP_PKEY_CTX_set_rsa_keygen_pubexp()\fR, \fBEVP_PKEY_CTX_get0_dh_kdf_ukm()\fR,
+and \fBEVP_PKEY_CTX_get0_ecdh_kdf_ukm()\fR were deprecated in OpenSSL 3.0.
+.SH COPYRIGHT
+.IX Header "COPYRIGHT"
+Copyright 2006\-2021 The OpenSSL Project Authors. All Rights Reserved.
+.PP
+Licensed under the Apache License 2.0 (the "License"). You may not use
+this file except in compliance with the License. You can obtain a copy
+in the file LICENSE in the source distribution or at
+<https://www.openssl.org/source/license.html>.