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