]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
MFC: r352191
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / EVP_PKEY_CTX_ctrl.3
1 .\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.39)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 .    ds C`
42 .    ds C'
43 'br\}
44 .\"
45 .\" Escape single quotes in literal strings from groff's Unicode transform.
46 .ie \n(.g .ds Aq \(aq
47 .el       .ds Aq '
48 .\"
49 .\" If the F register is >0, we'll generate index entries on stderr for
50 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51 .\" entries marked with X<> in POD.  Of course, you'll have to process the
52 .\" output yourself in some meaningful fashion.
53 .\"
54 .\" Avoid warning from groff about undefined register 'F'.
55 .de IX
56 ..
57 .nr rF 0
58 .if \n(.g .if rF .nr rF 1
59 .if (\n(rF:(\n(.g==0)) \{\
60 .    if \nF \{\
61 .        de IX
62 .        tm Index:\\$1\t\\n%\t"\\$2"
63 ..
64 .        if !\nF==2 \{\
65 .            nr % 0
66 .            nr F 2
67 .        \}
68 .    \}
69 .\}
70 .rr rF
71 .\"
72 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
73 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
74 .    \" fudge factors for nroff and troff
75 .if n \{\
76 .    ds #H 0
77 .    ds #V .8m
78 .    ds #F .3m
79 .    ds #[ \f1
80 .    ds #] \fP
81 .\}
82 .if t \{\
83 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
84 .    ds #V .6m
85 .    ds #F 0
86 .    ds #[ \&
87 .    ds #] \&
88 .\}
89 .    \" simple accents for nroff and troff
90 .if n \{\
91 .    ds ' \&
92 .    ds ` \&
93 .    ds ^ \&
94 .    ds , \&
95 .    ds ~ ~
96 .    ds /
97 .\}
98 .if t \{\
99 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
100 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
101 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
102 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
103 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
104 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
105 .\}
106 .    \" troff and (daisy-wheel) nroff accents
107 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
108 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
109 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
110 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
111 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
112 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
113 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
114 .ds ae a\h'-(\w'a'u*4/10)'e
115 .ds Ae A\h'-(\w'A'u*4/10)'E
116 .    \" corrections for vroff
117 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
118 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
119 .    \" for low resolution devices (crt and lpr)
120 .if \n(.H>23 .if \n(.V>19 \
121 \{\
122 .    ds : e
123 .    ds 8 ss
124 .    ds o a
125 .    ds d- d\h'-1'\(ga
126 .    ds D- D\h'-1'\(hy
127 .    ds th \o'bp'
128 .    ds Th \o'LP'
129 .    ds ae ae
130 .    ds Ae AE
131 .\}
132 .rm #[ #] #H #V #F C
133 .\" ========================================================================
134 .\"
135 .IX Title "EVP_PKEY_CTX_CTRL 3"
136 .TH EVP_PKEY_CTX_CTRL 3 "2019-09-10" "1.1.1d" "OpenSSL"
137 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
138 .\" way too many mistakes in technical documents.
139 .if n .ad l
140 .nh
141 .SH "NAME"
142 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_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_set_rsa_keygen_primes, EVP_PKEY_CTX_set_rsa_mgf1_md, EVP_PKEY_CTX_get_rsa_mgf1_md, EVP_PKEY_CTX_set_rsa_oaep_md, EVP_PKEY_CTX_get_rsa_oaep_md, 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_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_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 \&\- algorithm specific control operations
143 .SH "SYNOPSIS"
144 .IX Header "SYNOPSIS"
145 .Vb 1
146 \& #include <openssl/evp.h>
147 \&
148 \& int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
149 \&                       int cmd, int p1, void *p2);
150 \& int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype,
151 \&                              int cmd, uint64_t value);
152 \& int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
153 \&                           const char *value);
154 \&
155 \& int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md);
156 \&
157 \& int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
158 \& int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **pmd);
159 \&
160 \& int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, unsigned char *key, int len);
161 \&
162 \& #include <openssl/rsa.h>
163 \&
164 \& int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad);
165 \& int EVP_PKEY_CTX_get_rsa_padding(EVP_PKEY_CTX *ctx, int *pad);
166 \& int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int len);
167 \& int EVP_PKEY_CTX_get_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int *len);
168 \& int EVP_PKEY_CTX_set_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int mbits);
169 \& int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp);
170 \& int EVP_PKEY_CTX_set_rsa_keygen_primes(EVP_PKEY_CTX *ctx, int primes);
171 \& int EVP_PKEY_CTX_set_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
172 \& int EVP_PKEY_CTX_get_rsa_mgf1_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
173 \& int EVP_PKEY_CTX_set_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
174 \& int EVP_PKEY_CTX_get_rsa_oaep_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
175 \& int EVP_PKEY_CTX_set0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char *label, int len);
176 \& int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label);
177 \&
178 \& #include <openssl/dsa.h>
179 \&
180 \& int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits);
181 \&
182 \& #include <openssl/dh.h>
183 \&
184 \& int EVP_PKEY_CTX_set_dh_paramgen_prime_len(EVP_PKEY_CTX *ctx, int len);
185 \& int EVP_PKEY_CTX_set_dh_paramgen_subprime_len(EVP_PKEY_CTX *ctx, int len);
186 \& int EVP_PKEY_CTX_set_dh_paramgen_generator(EVP_PKEY_CTX *ctx, int gen);
187 \& int EVP_PKEY_CTX_set_dh_paramgen_type(EVP_PKEY_CTX *ctx, int type);
188 \& int EVP_PKEY_CTX_set_dh_pad(EVP_PKEY_CTX *ctx, int pad);
189 \& int EVP_PKEY_CTX_set_dh_nid(EVP_PKEY_CTX *ctx, int nid);
190 \& int EVP_PKEY_CTX_set_dh_rfc5114(EVP_PKEY_CTX *ctx, int rfc5114);
191 \& int EVP_PKEY_CTX_set_dhx_rfc5114(EVP_PKEY_CTX *ctx, int rfc5114);
192 \& int EVP_PKEY_CTX_set_dh_kdf_type(EVP_PKEY_CTX *ctx, int kdf);
193 \& int EVP_PKEY_CTX_get_dh_kdf_type(EVP_PKEY_CTX *ctx);
194 \& int EVP_PKEY_CTX_set0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT *oid);
195 \& int EVP_PKEY_CTX_get0_dh_kdf_oid(EVP_PKEY_CTX *ctx, ASN1_OBJECT **oid);
196 \& int EVP_PKEY_CTX_set_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
197 \& int EVP_PKEY_CTX_get_dh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
198 \& int EVP_PKEY_CTX_set_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int len);
199 \& int EVP_PKEY_CTX_get_dh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len);
200 \& int EVP_PKEY_CTX_set0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *ukm, int len);
201 \& int EVP_PKEY_CTX_get0_dh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm);
202 \&
203 \& #include <openssl/ec.h>
204 \&
205 \& int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid);
206 \& int EVP_PKEY_CTX_set_ec_param_enc(EVP_PKEY_CTX *ctx, int param_enc);
207 \& int EVP_PKEY_CTX_set_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx, int cofactor_mode);
208 \& int EVP_PKEY_CTX_get_ecdh_cofactor_mode(EVP_PKEY_CTX *ctx);
209 \& int EVP_PKEY_CTX_set_ecdh_kdf_type(EVP_PKEY_CTX *ctx, int kdf);
210 \& int EVP_PKEY_CTX_get_ecdh_kdf_type(EVP_PKEY_CTX *ctx);
211 \& int EVP_PKEY_CTX_set_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
212 \& int EVP_PKEY_CTX_get_ecdh_kdf_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
213 \& int EVP_PKEY_CTX_set_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int len);
214 \& int EVP_PKEY_CTX_get_ecdh_kdf_outlen(EVP_PKEY_CTX *ctx, int *len);
215 \& int EVP_PKEY_CTX_set0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char *ukm, int len);
216 \& int EVP_PKEY_CTX_get0_ecdh_kdf_ukm(EVP_PKEY_CTX *ctx, unsigned char **ukm);
217 \&
218 \& int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, void *id, size_t id_len);
219 \& int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id);
220 \& int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len);
221 .Ve
222 .SH "DESCRIPTION"
223 .IX Header "DESCRIPTION"
224 The function \fBEVP_PKEY_CTX_ctrl()\fR sends a control operation to the context
225 \&\fBctx\fR. The key type used must match \fBkeytype\fR if it is not \-1. The parameter
226 \&\fBoptype\fR is a mask indicating which operations the control can be applied to.
227 The control command is indicated in \fBcmd\fR and any additional arguments in
228 \&\fBp1\fR and \fBp2\fR.
229 .PP
230 For \fBcmd\fR = \fB\s-1EVP_PKEY_CTRL_SET_MAC_KEY\s0\fR, \fBp1\fR is the length of the \s-1MAC\s0 key,
231 and \fBp2\fR is \s-1MAC\s0 key. This is used by Poly1305, SipHash, \s-1HMAC\s0 and \s-1CMAC.\s0
232 .PP
233 Applications will not normally call \fBEVP_PKEY_CTX_ctrl()\fR directly but will
234 instead call one of the algorithm specific macros below.
235 .PP
236 The function \fBEVP_PKEY_CTX_ctrl_uint64()\fR is a wrapper that directly passes a
237 uint64 value as \fBp2\fR to \fBEVP_PKEY_CTX_ctrl()\fR.
238 .PP
239 The function \fBEVP_PKEY_CTX_ctrl_str()\fR allows an application to send an algorithm
240 specific control operation to a context \fBctx\fR in string form. This is
241 intended to be used for options specified on the command line or in text
242 files. The commands supported are documented in the openssl utility
243 command line pages for the option \fB\-pkeyopt\fR which is supported by the
244 \&\fBpkeyutl\fR, \fBgenpkey\fR and \fBreq\fR commands.
245 .PP
246 The function \fBEVP_PKEY_CTX_md()\fR sends a message digest control operation
247 to the context \fBctx\fR. The message digest is specified by its name \fBmd\fR.
248 .PP
249 All the remaining \*(L"functions\*(R" are implemented as macros.
250 .PP
251 The \fBEVP_PKEY_CTX_set_signature_md()\fR macro sets the message digest type used
252 in a signature. It can be used in the \s-1RSA, DSA\s0 and \s-1ECDSA\s0 algorithms.
253 .PP
254 The \fBEVP_PKEY_CTX_get_signature_md()\fR macro gets the message digest type used in a
255 signature. It can be used in the \s-1RSA, DSA\s0 and \s-1ECDSA\s0 algorithms.
256 .PP
257 Key generation typically involves setting up parameters to be used and
258 generating the private and public key data. Some algorithm implementations
259 allow private key data to be set explicitly using the \fBEVP_PKEY_CTX_set_mac_key()\fR
260 macro. In this case key generation is simply the process of setting up the
261 parameters for the key and then setting the raw key data to the value explicitly
262 provided by that macro. Normally applications would call
263 \&\fBEVP_PKEY_new_raw_private_key\fR\|(3) or similar functions instead of this macro.
264 .PP
265 The \fBEVP_PKEY_CTX_set_mac_key()\fR macro can be used with any of the algorithms
266 supported by the \fBEVP_PKEY_new_raw_private_key\fR\|(3) function.
267 .SS "\s-1RSA\s0 parameters"
268 .IX Subsection "RSA parameters"
269 The \fBEVP_PKEY_CTX_set_rsa_padding()\fR macro sets the \s-1RSA\s0 padding mode for \fBctx\fR.
270 The \fBpad\fR parameter can take the value \fB\s-1RSA_PKCS1_PADDING\s0\fR for PKCS#1
271 padding, \fB\s-1RSA_SSLV23_PADDING\s0\fR for SSLv23 padding, \fB\s-1RSA_NO_PADDING\s0\fR for
272 no padding, \fB\s-1RSA_PKCS1_OAEP_PADDING\s0\fR for \s-1OAEP\s0 padding (encrypt and
273 decrypt only), \fB\s-1RSA_X931_PADDING\s0\fR for X9.31 padding (signature operations
274 only) and \fB\s-1RSA_PKCS1_PSS_PADDING\s0\fR (sign and verify only).
275 .PP
276 Two \s-1RSA\s0 padding modes behave differently if \fBEVP_PKEY_CTX_set_signature_md()\fR
277 is used. If this macro is called for PKCS#1 padding the plaintext buffer is
278 an actual digest value and is encapsulated in a DigestInfo structure according
279 to PKCS#1 when signing and this structure is expected (and stripped off) when
280 verifying. If this control is not used with \s-1RSA\s0 and PKCS#1 padding then the
281 supplied data is used directly and not encapsulated. In the case of X9.31
282 padding for \s-1RSA\s0 the algorithm identifier byte is added or checked and removed
283 if this control is called. If it is not called then the first byte of the plaintext
284 buffer is expected to be the algorithm identifier byte.
285 .PP
286 The \fBEVP_PKEY_CTX_get_rsa_padding()\fR macro gets the \s-1RSA\s0 padding mode for \fBctx\fR.
287 .PP
288 The \fBEVP_PKEY_CTX_set_rsa_pss_saltlen()\fR macro sets the \s-1RSA PSS\s0 salt length to
289 \&\fBlen\fR. As its name implies it is only supported for \s-1PSS\s0 padding. Three special
290 values are supported: \fB\s-1RSA_PSS_SALTLEN_DIGEST\s0\fR sets the salt length to the
291 digest length, \fB\s-1RSA_PSS_SALTLEN_MAX\s0\fR sets the salt length to the maximum
292 permissible value. When verifying \fB\s-1RSA_PSS_SALTLEN_AUTO\s0\fR causes the salt length
293 to be automatically determined based on the \fB\s-1PSS\s0\fR block structure. If this
294 macro is not called maximum salt length is used when signing and auto detection
295 when verifying is used by default.
296 .PP
297 The \fBEVP_PKEY_CTX_get_rsa_pss_saltlen()\fR macro gets the \s-1RSA PSS\s0 salt length
298 for \fBctx\fR. The padding mode must have been set to \fB\s-1RSA_PKCS1_PSS_PADDING\s0\fR.
299 .PP
300 The \fBEVP_PKEY_CTX_set_rsa_keygen_bits()\fR macro sets the \s-1RSA\s0 key length for
301 \&\s-1RSA\s0 key generation to \fBbits\fR. If not specified 1024 bits is used.
302 .PP
303 The \fBEVP_PKEY_CTX_set_rsa_keygen_pubexp()\fR macro sets the public exponent value
304 for \s-1RSA\s0 key generation to \fBpubexp\fR. Currently it should be an odd integer. The
305 \&\fBpubexp\fR pointer is used internally by this function so it should not be
306 modified or freed after the call. If not specified 65537 is used.
307 .PP
308 The \fBEVP_PKEY_CTX_set_rsa_keygen_primes()\fR macro sets the number of primes for
309 \&\s-1RSA\s0 key generation to \fBprimes\fR. If not specified 2 is used.
310 .PP
311 The \fBEVP_PKEY_CTX_set_rsa_mgf1_md()\fR macro sets the \s-1MGF1\s0 digest for \s-1RSA\s0 padding
312 schemes to \fBmd\fR. If not explicitly set the signing digest is used. The
313 padding mode must have been set to \fB\s-1RSA_PKCS1_OAEP_PADDING\s0\fR
314 or \fB\s-1RSA_PKCS1_PSS_PADDING\s0\fR.
315 .PP
316 The \fBEVP_PKEY_CTX_get_rsa_mgf1_md()\fR macro gets the \s-1MGF1\s0 digest for \fBctx\fR.
317 If not explicitly set the signing digest is used. The padding mode must have
318 been set to \fB\s-1RSA_PKCS1_OAEP_PADDING\s0\fR or \fB\s-1RSA_PKCS1_PSS_PADDING\s0\fR.
319 .PP
320 The \fBEVP_PKEY_CTX_set_rsa_oaep_md()\fR macro sets the message digest type used
321 in \s-1RSA OAEP\s0 to \fBmd\fR. The padding mode must have been set to
322 \&\fB\s-1RSA_PKCS1_OAEP_PADDING\s0\fR.
323 .PP
324 The \fBEVP_PKEY_CTX_get_rsa_oaep_md()\fR macro gets the message digest type used
325 in \s-1RSA OAEP\s0 to \fBmd\fR. The padding mode must have been set to
326 \&\fB\s-1RSA_PKCS1_OAEP_PADDING\s0\fR.
327 .PP
328 The \fBEVP_PKEY_CTX_set0_rsa_oaep_label()\fR macro sets the \s-1RSA OAEP\s0 label to
329 \&\fBlabel\fR and its length to \fBlen\fR. If \fBlabel\fR is \s-1NULL\s0 or \fBlen\fR is 0,
330 the label is cleared. The library takes ownership of the label so the
331 caller should not free the original memory pointed to by \fBlabel\fR.
332 The padding mode must have been set to \fB\s-1RSA_PKCS1_OAEP_PADDING\s0\fR.
333 .PP
334 The \fBEVP_PKEY_CTX_get0_rsa_oaep_label()\fR macro gets the \s-1RSA OAEP\s0 label to
335 \&\fBlabel\fR. The return value is the label length. The padding mode
336 must have been set to \fB\s-1RSA_PKCS1_OAEP_PADDING\s0\fR. The resulting pointer is owned
337 by the library and should not be freed by the caller.
338 .SS "\s-1DSA\s0 parameters"
339 .IX Subsection "DSA parameters"
340 The \fBEVP_PKEY_CTX_set_dsa_paramgen_bits()\fR macro sets the number of bits used
341 for \s-1DSA\s0 parameter generation to \fBbits\fR. If not specified 1024 is used.
342 .SS "\s-1DH\s0 parameters"
343 .IX Subsection "DH parameters"
344 The \fBEVP_PKEY_CTX_set_dh_paramgen_prime_len()\fR macro sets the length of the \s-1DH\s0
345 prime parameter \fBp\fR for \s-1DH\s0 parameter generation. If this macro is not called
346 then 1024 is used. Only accepts lengths greater than or equal to 256.
347 .PP
348 The \fBEVP_PKEY_CTX_set_dh_paramgen_subprime_len()\fR macro sets the length of the \s-1DH\s0
349 optional subprime parameter \fBq\fR for \s-1DH\s0 parameter generation. The default is
350 256 if the prime is at least 2048 bits long or 160 otherwise. The \s-1DH\s0
351 paramgen type must have been set to x9.42.
352 .PP
353 The \fBEVP_PKEY_CTX_set_dh_paramgen_generator()\fR macro sets \s-1DH\s0 generator to \fBgen\fR
354 for \s-1DH\s0 parameter generation. If not specified 2 is used.
355 .PP
356 The \fBEVP_PKEY_CTX_set_dh_paramgen_type()\fR macro sets the key type for \s-1DH\s0
357 parameter generation. Use 0 for PKCS#3 \s-1DH\s0 and 1 for X9.42 \s-1DH.\s0
358 The default is 0.
359 .PP
360 The \fBEVP_PKEY_CTX_set_dh_pad()\fR macro sets the \s-1DH\s0 padding mode. If \fBpad\fR is
361 1 the shared secret is padded with zeroes up to the size of the \s-1DH\s0 prime \fBp\fR.
362 If \fBpad\fR is zero (the default) then no padding is performed.
363 .PP
364 \&\fBEVP_PKEY_CTX_set_dh_nid()\fR sets the \s-1DH\s0 parameters to values corresponding to
365 \&\fBnid\fR as defined in \s-1RFC7919.\s0 The \fBnid\fR parameter must be \fBNID_ffdhe2048\fR,
366 \&\fBNID_ffdhe3072\fR, \fBNID_ffdhe4096\fR, \fBNID_ffdhe6144\fR, \fBNID_ffdhe8192\fR
367 or \fBNID_undef\fR to clear the stored value. This macro can be called during
368 parameter or key generation.
369 The nid parameter and the rfc5114 parameter are mutually exclusive.
370 .PP
371 The \fBEVP_PKEY_CTX_set_dh_rfc5114()\fR and \fBEVP_PKEY_CTX_set_dhx_rfc5114()\fR macros are
372 synonymous. They set the \s-1DH\s0 parameters to the values defined in \s-1RFC5114.\s0 The
373 \&\fBrfc5114\fR parameter must be 1, 2 or 3 corresponding to \s-1RFC5114\s0 sections
374 2.1, 2.2 and 2.3. or 0 to clear the stored value. This macro can be called
375 during parameter generation. The \fBctx\fR must have a key type of
376 \&\fB\s-1EVP_PKEY_DHX\s0\fR.
377 The rfc5114 parameter and the nid parameter are mutually exclusive.
378 .SS "\s-1DH\s0 key derivation function parameters"
379 .IX Subsection "DH key derivation function parameters"
380 Note that all of the following functions require that the \fBctx\fR parameter has
381 a private key type of \fB\s-1EVP_PKEY_DHX\s0\fR. When using key derivation, the output of
382 \&\fBEVP_PKEY_derive()\fR is the output of the \s-1KDF\s0 instead of the \s-1DH\s0 shared secret.
383 The \s-1KDF\s0 output is typically used as a Key Encryption Key (\s-1KEK\s0) that in turn
384 encrypts a Content Encryption Key (\s-1CEK\s0).
385 .PP
386 The \fBEVP_PKEY_CTX_set_dh_kdf_type()\fR macro sets the key derivation function type
387 to \fBkdf\fR for \s-1DH\s0 key derivation. Possible values are \fB\s-1EVP_PKEY_DH_KDF_NONE\s0\fR
388 and \fB\s-1EVP_PKEY_DH_KDF_X9_42\s0\fR which uses the key derivation specified in \s-1RFC2631\s0
389 (based on the keying algorithm described in X9.42). When using key derivation,
390 the \fBkdf_oid\fR, \fBkdf_md\fR and \fBkdf_outlen\fR parameters must also be specified.
391 .PP
392 The \fBEVP_PKEY_CTX_get_dh_kdf_type()\fR macro gets the key derivation function type
393 for \fBctx\fR used for \s-1DH\s0 key derivation. Possible values are \fB\s-1EVP_PKEY_DH_KDF_NONE\s0\fR
394 and \fB\s-1EVP_PKEY_DH_KDF_X9_42\s0\fR.
395 .PP
396 The \fBEVP_PKEY_CTX_set0_dh_kdf_oid()\fR macro sets the key derivation function
397 object identifier to \fBoid\fR for \s-1DH\s0 key derivation. This \s-1OID\s0 should identify
398 the algorithm to be used with the Content Encryption Key.
399 The library takes ownership of the object identifier so the caller should not
400 free the original memory pointed to by \fBoid\fR.
401 .PP
402 The \fBEVP_PKEY_CTX_get0_dh_kdf_oid()\fR macro gets the key derivation function oid
403 for \fBctx\fR used for \s-1DH\s0 key derivation. The resulting pointer is owned by the
404 library and should not be freed by the caller.
405 .PP
406 The \fBEVP_PKEY_CTX_set_dh_kdf_md()\fR macro sets the key derivation function
407 message digest to \fBmd\fR for \s-1DH\s0 key derivation. Note that \s-1RFC2631\s0 specifies
408 that this digest should be \s-1SHA1\s0 but OpenSSL tolerates other digests.
409 .PP
410 The \fBEVP_PKEY_CTX_get_dh_kdf_md()\fR macro gets the key derivation function
411 message digest for \fBctx\fR used for \s-1DH\s0 key derivation.
412 .PP
413 The \fBEVP_PKEY_CTX_set_dh_kdf_outlen()\fR macro sets the key derivation function
414 output length to \fBlen\fR for \s-1DH\s0 key derivation.
415 .PP
416 The \fBEVP_PKEY_CTX_get_dh_kdf_outlen()\fR macro gets the key derivation function
417 output length for \fBctx\fR used for \s-1DH\s0 key derivation.
418 .PP
419 The \fBEVP_PKEY_CTX_set0_dh_kdf_ukm()\fR macro sets the user key material to
420 \&\fBukm\fR and its length to \fBlen\fR for \s-1DH\s0 key derivation. This parameter is optional
421 and corresponds to the partyAInfo field in \s-1RFC2631\s0 terms. The specification
422 requires that it is 512 bits long but this is not enforced by OpenSSL.
423 The library takes ownership of the user key material so the caller should not
424 free the original memory pointed to by \fBukm\fR.
425 .PP
426 The \fBEVP_PKEY_CTX_get0_dh_kdf_ukm()\fR macro gets the user key material for \fBctx\fR.
427 The return value is the user key material length. The resulting pointer is owned
428 by the library and should not be freed by the caller.
429 .SS "\s-1EC\s0 parameters"
430 .IX Subsection "EC parameters"
431 The \fBEVP_PKEY_CTX_set_ec_paramgen_curve_nid()\fR sets the \s-1EC\s0 curve for \s-1EC\s0 parameter
432 generation to \fBnid\fR. For \s-1EC\s0 parameter generation this macro must be called
433 or an error occurs because there is no default curve.
434 This function can also be called to set the curve explicitly when
435 generating an \s-1EC\s0 key.
436 .PP
437 The \fBEVP_PKEY_CTX_set_ec_param_enc()\fR macro sets the \s-1EC\s0 parameter encoding to
438 \&\fBparam_enc\fR when generating \s-1EC\s0 parameters or an \s-1EC\s0 key. The encoding can be
439 \&\fB\s-1OPENSSL_EC_EXPLICIT_CURVE\s0\fR for explicit parameters (the default in versions
440 of OpenSSL before 1.1.0) or \fB\s-1OPENSSL_EC_NAMED_CURVE\s0\fR to use named curve form.
441 For maximum compatibility the named curve form should be used. Note: the
442 \&\fB\s-1OPENSSL_EC_NAMED_CURVE\s0\fR value was added in OpenSSL 1.1.0; previous
443 versions should use 0 instead.
444 .SS "\s-1ECDH\s0 parameters"
445 .IX Subsection "ECDH parameters"
446 The \fBEVP_PKEY_CTX_set_ecdh_cofactor_mode()\fR macro sets the cofactor mode to
447 \&\fBcofactor_mode\fR for \s-1ECDH\s0 key derivation. Possible values are 1 to enable
448 cofactor key derivation, 0 to disable it and \-1 to clear the stored cofactor
449 mode and fallback to the private key cofactor mode.
450 .PP
451 The \fBEVP_PKEY_CTX_get_ecdh_cofactor_mode()\fR macro returns the cofactor mode for
452 \&\fBctx\fR used for \s-1ECDH\s0 key derivation. Possible values are 1 when cofactor key
453 derivation is enabled and 0 otherwise.
454 .SS "\s-1ECDH\s0 key derivation function parameters"
455 .IX Subsection "ECDH key derivation function parameters"
456 The \fBEVP_PKEY_CTX_set_ecdh_kdf_type()\fR macro sets the key derivation function type
457 to \fBkdf\fR for \s-1ECDH\s0 key derivation. Possible values are \fB\s-1EVP_PKEY_ECDH_KDF_NONE\s0\fR
458 and \fB\s-1EVP_PKEY_ECDH_KDF_X9_63\s0\fR which uses the key derivation specified in X9.63.
459 When using key derivation, the \fBkdf_md\fR and \fBkdf_outlen\fR parameters must
460 also be specified.
461 .PP
462 The \fBEVP_PKEY_CTX_get_ecdh_kdf_type()\fR macro returns the key derivation function
463 type for \fBctx\fR used for \s-1ECDH\s0 key derivation. Possible values are
464 \&\fB\s-1EVP_PKEY_ECDH_KDF_NONE\s0\fR and \fB\s-1EVP_PKEY_ECDH_KDF_X9_63\s0\fR.
465 .PP
466 The \fBEVP_PKEY_CTX_set_ecdh_kdf_md()\fR macro sets the key derivation function
467 message digest to \fBmd\fR for \s-1ECDH\s0 key derivation. Note that X9.63 specifies
468 that this digest should be \s-1SHA1\s0 but OpenSSL tolerates other digests.
469 .PP
470 The \fBEVP_PKEY_CTX_get_ecdh_kdf_md()\fR macro gets the key derivation function
471 message digest for \fBctx\fR used for \s-1ECDH\s0 key derivation.
472 .PP
473 The \fBEVP_PKEY_CTX_set_ecdh_kdf_outlen()\fR macro sets the key derivation function
474 output length to \fBlen\fR for \s-1ECDH\s0 key derivation.
475 .PP
476 The \fBEVP_PKEY_CTX_get_ecdh_kdf_outlen()\fR macro gets the key derivation function
477 output length for \fBctx\fR used for \s-1ECDH\s0 key derivation.
478 .PP
479 The \fBEVP_PKEY_CTX_set0_ecdh_kdf_ukm()\fR macro sets the user key material to \fBukm\fR
480 for \s-1ECDH\s0 key derivation. This parameter is optional and corresponds to the
481 shared info in X9.63 terms. The library takes ownership of the user key material
482 so the caller should not free the original memory pointed to by \fBukm\fR.
483 .PP
484 The \fBEVP_PKEY_CTX_get0_ecdh_kdf_ukm()\fR macro gets the user key material for \fBctx\fR.
485 The return value is the user key material length. The resulting pointer is owned
486 by the library and should not be freed by the caller.
487 .SS "Other parameters"
488 .IX Subsection "Other parameters"
489 The \fBEVP_PKEY_CTX_set1_id()\fR, \fBEVP_PKEY_CTX_get1_id()\fR and \fBEVP_PKEY_CTX_get1_id_len()\fR
490 macros are used to manipulate the special identifier field for specific signature
491 algorithms such as \s-1SM2.\s0 The \fBEVP_PKEY_CTX_set1_id()\fR sets an \s-1ID\s0 pointed by \fBid\fR with
492 the length \fBid_len\fR to the library. The library takes a copy of the id so that
493 the caller can safely free the original memory pointed to by \fBid\fR. The
494 \&\fBEVP_PKEY_CTX_get1_id_len()\fR macro returns the length of the \s-1ID\s0 set via a previous
495 call to \fBEVP_PKEY_CTX_set1_id()\fR. The length is usually used to allocate adequate
496 memory for further calls to \fBEVP_PKEY_CTX_get1_id()\fR. The \fBEVP_PKEY_CTX_get1_id()\fR
497 macro returns the previously set \s-1ID\s0 value to caller in \fBid\fR. The caller should
498 allocate adequate memory space for the \fBid\fR before calling \fBEVP_PKEY_CTX_get1_id()\fR.
499 .SH "RETURN VALUES"
500 .IX Header "RETURN VALUES"
501 \&\fBEVP_PKEY_CTX_ctrl()\fR and its macros return a positive value for success and 0
502 or a negative value for failure. In particular a return value of \-2
503 indicates the operation is not supported by the public key algorithm.
504 .SH "SEE ALSO"
505 .IX Header "SEE ALSO"
506 \&\fBEVP_PKEY_CTX_new\fR\|(3),
507 \&\fBEVP_PKEY_encrypt\fR\|(3),
508 \&\fBEVP_PKEY_decrypt\fR\|(3),
509 \&\fBEVP_PKEY_sign\fR\|(3),
510 \&\fBEVP_PKEY_verify\fR\|(3),
511 \&\fBEVP_PKEY_verify_recover\fR\|(3),
512 \&\fBEVP_PKEY_derive\fR\|(3),
513 \&\fBEVP_PKEY_keygen\fR\|(3)
514 .SH "HISTORY"
515 .IX Header "HISTORY"
516 The
517 \&\fBEVP_PKEY_CTX_set1_id()\fR, \fBEVP_PKEY_CTX_get1_id()\fR and \fBEVP_PKEY_CTX_get1_id_len()\fR
518 macros were added in 1.1.1, other functions were added in OpenSSL 1.0.0.
519 .SH "COPYRIGHT"
520 .IX Header "COPYRIGHT"
521 Copyright 2006\-2018 The OpenSSL Project Authors. All Rights Reserved.
522 .PP
523 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
524 this file except in compliance with the License.  You can obtain a copy
525 in the file \s-1LICENSE\s0 in the source distribution or at
526 <https://www.openssl.org/source/license.html>.