]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man7/life_cycle-pkey.pod
doc: Fix incorrect pairing of functions
[thirdparty/openssl.git] / doc / man7 / life_cycle-pkey.pod
CommitLineData
95c8a512
P
1=pod
2
3=head1 NAME
4
5life_cycle-pkey - The PKEY algorithm life-cycle
6
7=head1 DESCRIPTION
8
9All public keys (PKEYs) go through a number of stages in their life-cycle:
10
11=over 4
12
13=item start
14
15This state represents the PKEY before it has been allocated. It is the
16starting state for any life-cycle transitions.
17
18=item newed
19
20This state represents the PKEY after it has been allocated.
21
22=item decapsulate
23
24This state represents the PKEY when it is ready to perform a private key decapsulation
e304aa87 25operation.
95c8a512
P
26
27=item decrypt
28
29This state represents the PKEY when it is ready to decrypt some ciphertext.
30
31=item derive
32
33This state represents the PKEY when it is ready to derive a shared secret.
34
35=item digest sign
36
37This state represents the PKEY when it is ready to perform a private key signature
38operation.
39
40=item encapsulate
41
42This state represents the PKEY when it is ready to perform a public key encapsulation
e304aa87 43operation.
95c8a512
P
44
45=item encrypt
46
47This state represents the PKEY when it is ready to encrypt some plaintext.
48
49=item key generation
50
51This state represents the PKEY when it is ready to generate a new public/private key.
52
53=item parameter generation
54
55This state represents the PKEY when it is ready to generate key parameters.
56
57=item verify
58
59This state represents the PKEY when it is ready to verify a public key signature.
60
61=item verify recover
62
63This state represents the PKEY when it is ready to recover a public key signature data.
64
65=item freed
66
67This state is entered when the PKEY is freed. It is the terminal state
68for all life-cycle transitions.
69
70=back
71
72=head2 State Transition Diagram
73
74The usual life-cycle of a PKEY object is illustrated:
75
76=begin man
77
78 +-------------+
79 | |
80 | start |
81 | |
82 EVP_PKEY_derive +-------------+
83 +-------------+ EVP_PKEY_derive_set_peer | +-------------+
84 | |----------------------------+ | +----------------------------| |
85 | derive | | | | EVP_PKEY_verify | verify |
86 | |<---------------------------+ | +--------------------------->| |
87 +-------------+ | +-------------+
88 ^ | ^
89 | EVP_PKEY_derive_init | EVP_PKEY_verify_init |
90 +---------------------------------------+ | +---------------------------------------+
91 | | |
92 +-------------+ | | | +-------------+
93 | |----------------------------+ | | | +----------------------------| |
94 | digest sign | EVP_PKEY_sign | | | | | EVP_PKEY_verify_recover | verify |
95 | |<---------------------------+ | | | +--------------------------->| recover |
96 +-------------+ | | | +-------------+
97 ^ | | | ^
98 | EVP_PKEY_sign_init | | | EVP_PKEY_verify_recover_init |
99 +---------------------------------+ | | | +---------------------------------+
100 | | | | |
101 +-------------+ | | | | | +-------------+
102 | |----------------------------+ | | | | | +----------------------------| |
103 | decapsulate | EVP_PKEY_decapsulate | | | | | | | EVP_PKEY_decrypt | decrypt |
104 | |<---------------------------+ | | v | | +--------------------------->| |
105 +-------------+ | +-------------+ | +-------------+
106 ^ +---| |---+ ^
107 | EVP_PKEY_decapsulate_init | | EVP_PKEY_decrypt_init |
108 +-------------------------------------| newed |-------------------------------------+
109 | |
110 +---| |---+
111 +-------------+ | +-------------+ | +-------------+
112 | |----------------------------+ | | | | +----------------------------| |
113 | encapsulate | EVP_PKEY_encapsulate | | | | | | EVP_PKEY_encrypt | encrypt |
114 | |<---------------------------+ | | | | +--------------------------->| |
115 +-------------+ | | | | +-------------+
116 ^ | | | | ^
117 | EVP_PKEY_encapsulate_init | | | | EVP_PKEY_encrypt_init |
118 +---------------------------------+ | | +---------------------------------+
119 | |
120 +---------------------------------------+ +---------------------------------------+
121 | EVP_PKEY_paramgen_init EVP_PKEY_keygen_init |
122 v v
123 +-------------+ +-------------+
124 | |----------------------------+ +----------------------------| |
125 | parameter | | | | key |
126 | generation |<---------------------------+ +--------------------------->| generation |
127 +-------------+ EVP_PKEY_paramgen EVP_PKEY_keygen +-------------+
128 EVP_PKEY_gen EVP_PKEY_gen
129
130
131 + - - - - - + +-----------+
132 ' ' EVP_PKEY_CTX_free | |
133 ' any state '------------------->| freed |
134 ' ' | |
135 + - - - - - + +-----------+
136
137=end man
138
139=for html <img src="img/pkey.png">
140
141=head2 Formal State Transitions
142
143This section defines all of the legal state transitions.
144This is the canonical list.
145
146=begin man
147
148 Function Call ---------------------------------------------------------------------- Current State ----------------------------------------------------------------------
149 start newed digest verify verify encrypt decrypt derive encapsulate decapsulate parameter key freed
150 sign recover generation generation
151 EVP_PKEY_CTX_new newed
152 EVP_PKEY_CTX_new_id newed
153 EVP_PKEY_CTX_new_from_name newed
154 EVP_PKEY_CTX_new_from_pkey newed
155 EVP_PKEY_sign_init digest digest digest digest digest digest digest digest digest digest digest
156 sign sign sign sign sign sign sign sign sign sign sign
157 EVP_PKEY_sign digest
158 sign
159 EVP_PKEY_verify_init verify verify verify verify verify verify verify verify verify verify verify
160 EVP_PKEY_verify verify
161 EVP_PKEY_verify_recover_init verify verify verify verify verify verify verify verify verify verify verify
162 recover recover recover recover recover recover recover recover recover recover recover
163 EVP_PKEY_verify_recover verify
164 recover
165 EVP_PKEY_encrypt_init encrypt encrypt encrypt encrypt encrypt encrypt encrypt encrypt encrypt encrypt encrypt
166 EVP_PKEY_encrypt encrypt
167 EVP_PKEY_decrypt_init decrypt decrypt decrypt decrypt decrypt decrypt decrypt decrypt decrypt decrypt decrypt
168 EVP_PKEY_decrypt decrypt
169 EVP_PKEY_derive_init derive derive derive derive derive derive derive derive derive derive derive
170 EVP_PKEY_derive_set_peer derive
171 EVP_PKEY_derive derive
172 EVP_PKEY_encapsulate_init encapsulate encapsulate encapsulate encapsulate encapsulate encapsulate encapsulate encapsulate encapsulate encapsulate encapsulate
173 EVP_PKEY_encapsulate encapsulate
174 EVP_PKEY_decapsulate_init decapsulate decapsulate decapsulate decapsulate decapsulate decapsulate decapsulate decapsulate decapsulate decapsulate decapsulate
175 EVP_PKEY_decapsulate decapsulate
176 EVP_PKEY_paramgen_init parameter parameter parameter parameter parameter parameter parameter parameter parameter parameter parameter
177 generation generation generation generation generation generation generation generation generation generation generation
178 EVP_PKEY_paramgen parameter
179 generation
180 EVP_PKEY_keygen_init key key key key key key key key key key key
181 generation generation generation generation generation generation generation generation generation generation generation
182 EVP_PKEY_keygen key
183 generation
184 EVP_PKEY_gen parameter key
185 generation generation
186 EVP_PKEY_CTX_get_params newed digest verify verify encrypt decrypt derive encapsulate decapsulate parameter key
187 sign recover generation generation
188 EVP_PKEY_CTX_set_params newed digest verify verify encrypt decrypt derive encapsulate decapsulate parameter key
189 sign recover generation generation
190 EVP_PKEY_CTX_gettable_params newed digest verify verify encrypt decrypt derive encapsulate decapsulate parameter key
191 sign recover generation generation
192 EVP_PKEY_CTX_settable_params newed digest verify verify encrypt decrypt derive encapsulate decapsulate parameter key
193 sign recover generation generation
194 EVP_PKEY_CTX_free freed freed freed freed freed freed freed freed freed freed freed freed
195
196=end man
197
198=begin html
199
200<table style="border:1px solid; border-collapse:collapse">
201<tr><th style="border:1px solid" align="left">Function Call</th>
202 <th style="border:1px solid" colspan="13">Current State</th></tr>
203<tr><th style="border:1px solid"></th>
204 <th style="border:1px solid" align="center">start</th>
205 <th style="border:1px solid" align="center">newed</th>
206 <th style="border:1px solid" align="center">digest<br>sign</th>
207 <th style="border:1px solid" align="center">verify</th>
208 <th style="border:1px solid" align="center">verify<br>recover</th>
209 <th style="border:1px solid" align="center">encrypt</th>
210 <th style="border:1px solid" align="center">decrypt</th>
211 <th style="border:1px solid" align="center">derive</th>
212 <th style="border:1px solid" align="center">encapsulate</th>
213 <th style="border:1px solid" align="center">decapsulate</th>
214 <th style="border:1px solid" align="center">parameter<br>generation</th>
215 <th style="border:1px solid" align="center">key<br>generation</th>
216 <th style="border:1px solid" align="center">freed</th>
217</tr>
218
219<tr><th style="border:1px solid" align="left">EVP_PKEY_CTX_new</th>
220 <td style="border:1px solid" align="center">newed</td>
221 <td style="border:1px solid" align="center"></td>
222 <td style="border:1px solid" align="center"></td>
223 <td style="border:1px solid" align="center"></td>
224 <td style="border:1px solid" align="center"></td>
225 <td style="border:1px solid" align="center"></td>
226 <td style="border:1px solid" align="center"></td>
227 <td style="border:1px solid" align="center"></td>
228 <td style="border:1px solid" align="center"></td>
229 <td style="border:1px solid" align="center"></td>
230 <td style="border:1px solid" align="center"></td>
231 <td style="border:1px solid" align="center"></td>
232 <td style="border:1px solid" align="center"></td>
233</tr>
234<tr><th style="border:1px solid" align="left">EVP_PKEY_CTX_new_id</th>
235 <td style="border:1px solid" align="center">newed</td>
236 <td style="border:1px solid" align="center"></td>
237 <td style="border:1px solid" align="center"></td>
238 <td style="border:1px solid" align="center"></td>
239 <td style="border:1px solid" align="center"></td>
240 <td style="border:1px solid" align="center"></td>
241 <td style="border:1px solid" align="center"></td>
242 <td style="border:1px solid" align="center"></td>
243 <td style="border:1px solid" align="center"></td>
244 <td style="border:1px solid" align="center"></td>
245 <td style="border:1px solid" align="center"></td>
246 <td style="border:1px solid" align="center"></td>
247 <td style="border:1px solid" align="center"></td>
248</tr>
249<tr><th style="border:1px solid" align="left">EVP_PKEY_CTX_new_from_name</th>
250 <td style="border:1px solid" align="center">newed</td>
251 <td style="border:1px solid" align="center"></td>
252 <td style="border:1px solid" align="center"></td>
253 <td style="border:1px solid" align="center"></td>
254 <td style="border:1px solid" align="center"></td>
255 <td style="border:1px solid" align="center"></td>
256 <td style="border:1px solid" align="center"></td>
257 <td style="border:1px solid" align="center"></td>
258 <td style="border:1px solid" align="center"></td>
259 <td style="border:1px solid" align="center"></td>
260 <td style="border:1px solid" align="center"></td>
261 <td style="border:1px solid" align="center"></td>
262 <td style="border:1px solid" align="center"></td>
263</tr>
264<tr><th style="border:1px solid" align="left">EVP_PKEY_CTX_new_from_pkey</th>
265 <td style="border:1px solid" align="center">newed</td>
266 <td style="border:1px solid" align="center"></td>
267 <td style="border:1px solid" align="center"></td>
268 <td style="border:1px solid" align="center"></td>
269 <td style="border:1px solid" align="center"></td>
270 <td style="border:1px solid" align="center"></td>
271 <td style="border:1px solid" align="center"></td>
272 <td style="border:1px solid" align="center"></td>
273 <td style="border:1px solid" align="center"></td>
274 <td style="border:1px solid" align="center"></td>
275 <td style="border:1px solid" align="center"></td>
276 <td style="border:1px solid" align="center"></td>
277 <td style="border:1px solid" align="center"></td>
278</tr>
279<tr><th style="border:1px solid" align="left">EVP_PKEY_sign_init</th>
280 <td style="border:1px solid" align="center"></td>
281 <td style="border:1px solid" align="center">digest<br>sign</td>
282 <td style="border:1px solid" align="center">digest<br>sign</td>
283 <td style="border:1px solid" align="center">digest<br>sign</td>
284 <td style="border:1px solid" align="center">digest<br>sign</td>
285 <td style="border:1px solid" align="center">digest<br>sign</td>
286 <td style="border:1px solid" align="center">digest<br>sign</td>
287 <td style="border:1px solid" align="center">digest<br>sign</td>
288 <td style="border:1px solid" align="center">digest<br>sign</td>
289 <td style="border:1px solid" align="center">digest<br>sign</td>
290 <td style="border:1px solid" align="center">digest<br>sign</td>
291 <td style="border:1px solid" align="center">digest<br>sign</td>
292 <td style="border:1px solid" align="center"></td>
293</tr>
294<tr><th style="border:1px solid" align="left">EVP_PKEY_sign</th>
295 <td style="border:1px solid" align="center"></td>
296 <td style="border:1px solid" align="center"></td>
297 <td style="border:1px solid" align="center">digest<br>sign</td>
298 <td style="border:1px solid" align="center"></td>
299 <td style="border:1px solid" align="center"></td>
300 <td style="border:1px solid" align="center"></td>
301 <td style="border:1px solid" align="center"></td>
302 <td style="border:1px solid" align="center"></td>
303 <td style="border:1px solid" align="center"></td>
304 <td style="border:1px solid" align="center"></td>
305 <td style="border:1px solid" align="center"></td>
306 <td style="border:1px solid" align="center"></td>
307 <td style="border:1px solid" align="center"></td>
308</tr>
309<tr><th style="border:1px solid" align="left">EVP_PKEY_verify_init</th>
310 <td style="border:1px solid" align="center"></td>
311 <td style="border:1px solid" align="center">verify</td>
312 <td style="border:1px solid" align="center">verify</td>
313 <td style="border:1px solid" align="center">verify</td>
314 <td style="border:1px solid" align="center">verify</td>
315 <td style="border:1px solid" align="center">verify</td>
316 <td style="border:1px solid" align="center">verify</td>
317 <td style="border:1px solid" align="center">verify</td>
318 <td style="border:1px solid" align="center">verify</td>
319 <td style="border:1px solid" align="center">verify</td>
320 <td style="border:1px solid" align="center">verify</td>
321 <td style="border:1px solid" align="center">verify</td>
322 <td style="border:1px solid" align="center"></td>
323</tr>
324<tr><th style="border:1px solid" align="left">EVP_PKEY_verify</th>
325 <td style="border:1px solid" align="center"></td>
326 <td style="border:1px solid" align="center"></td>
327 <td style="border:1px solid" align="center"></td>
328 <td style="border:1px solid" align="center">verify</td>
329 <td style="border:1px solid" align="center"></td>
330 <td style="border:1px solid" align="center"></td>
331 <td style="border:1px solid" align="center"></td>
332 <td style="border:1px solid" align="center"></td>
333 <td style="border:1px solid" align="center"></td>
334 <td style="border:1px solid" align="center"></td>
335 <td style="border:1px solid" align="center"></td>
336 <td style="border:1px solid" align="center"></td>
337 <td style="border:1px solid" align="center"></td>
338</tr>
339<tr><th style="border:1px solid" align="left">EVP_PKEY_verify_recover_init</th>
340 <td style="border:1px solid" align="center"></td>
341 <td style="border:1px solid" align="center">verify<br>recover</td>
342 <td style="border:1px solid" align="center">verify<br>recover</td>
343 <td style="border:1px solid" align="center">verify<br>recover</td>
344 <td style="border:1px solid" align="center">verify<br>recover</td>
345 <td style="border:1px solid" align="center">verify<br>recover</td>
346 <td style="border:1px solid" align="center">verify<br>recover</td>
347 <td style="border:1px solid" align="center">verify<br>recover</td>
348 <td style="border:1px solid" align="center">verify<br>recover</td>
349 <td style="border:1px solid" align="center">verify<br>recover</td>
350 <td style="border:1px solid" align="center">verify<br>recover</td>
351 <td style="border:1px solid" align="center">verify<br>recover</td>
352 <td style="border:1px solid" align="center"></td>
353</tr>
354<tr><th style="border:1px solid" align="left">EVP_PKEY_verify_recover</th>
355 <td style="border:1px solid" align="center"></td>
356 <td style="border:1px solid" align="center"></td>
357 <td style="border:1px solid" align="center"></td>
358 <td style="border:1px solid" align="center"></td>
359 <td style="border:1px solid" align="center">verify<br>recover</td>
360 <td style="border:1px solid" align="center"></td>
361 <td style="border:1px solid" align="center"></td>
362 <td style="border:1px solid" align="center"></td>
363 <td style="border:1px solid" align="center"></td>
364 <td style="border:1px solid" align="center"></td>
365 <td style="border:1px solid" align="center"></td>
366 <td style="border:1px solid" align="center"></td>
367 <td style="border:1px solid" align="center"></td>
368</tr>
369<tr><th style="border:1px solid" align="left">EVP_PKEY_encrypt_init</th>
370 <td style="border:1px solid" align="center"></td>
371 <td style="border:1px solid" align="center">encrypt</td>
372 <td style="border:1px solid" align="center">encrypt</td>
373 <td style="border:1px solid" align="center">encrypt</td>
374 <td style="border:1px solid" align="center">encrypt</td>
375 <td style="border:1px solid" align="center">encrypt</td>
376 <td style="border:1px solid" align="center">encrypt</td>
377 <td style="border:1px solid" align="center">encrypt</td>
378 <td style="border:1px solid" align="center">encrypt</td>
379 <td style="border:1px solid" align="center">encrypt</td>
380 <td style="border:1px solid" align="center">encrypt</td>
381 <td style="border:1px solid" align="center">encrypt</td>
382 <td style="border:1px solid" align="center"></td>
383</tr>
384<tr><th style="border:1px solid" align="left">EVP_PKEY_encrypt</th>
385 <td style="border:1px solid" align="center"></td>
386 <td style="border:1px solid" align="center"></td>
387 <td style="border:1px solid" align="center"></td>
388 <td style="border:1px solid" align="center"></td>
389 <td style="border:1px solid" align="center"></td>
390 <td style="border:1px solid" align="center">encrypt</td>
391 <td style="border:1px solid" align="center"></td>
392 <td style="border:1px solid" align="center"></td>
393 <td style="border:1px solid" align="center"></td>
394 <td style="border:1px solid" align="center"></td>
395 <td style="border:1px solid" align="center"></td>
396 <td style="border:1px solid" align="center"></td>
397 <td style="border:1px solid" align="center"></td>
398</tr>
399<tr><th style="border:1px solid" align="left">EVP_PKEY_decrypt_init</th>
400 <td style="border:1px solid" align="center"></td>
401 <td style="border:1px solid" align="center">decrypt</td>
402 <td style="border:1px solid" align="center">decrypt</td>
403 <td style="border:1px solid" align="center">decrypt</td>
404 <td style="border:1px solid" align="center">decrypt</td>
405 <td style="border:1px solid" align="center">decrypt</td>
406 <td style="border:1px solid" align="center">decrypt</td>
407 <td style="border:1px solid" align="center">decrypt</td>
408 <td style="border:1px solid" align="center">decrypt</td>
409 <td style="border:1px solid" align="center">decrypt</td>
410 <td style="border:1px solid" align="center">decrypt</td>
411 <td style="border:1px solid" align="center">decrypt</td>
412 <td style="border:1px solid" align="center"></td>
413</tr>
414<tr><th style="border:1px solid" align="left">EVP_PKEY_decrypt</th>
415 <td style="border:1px solid" align="center"></td>
416 <td style="border:1px solid" align="center"></td>
417 <td style="border:1px solid" align="center"></td>
418 <td style="border:1px solid" align="center"></td>
419 <td style="border:1px solid" align="center"></td>
420 <td style="border:1px solid" align="center"></td>
421 <td style="border:1px solid" align="center">decrypt</td>
422 <td style="border:1px solid" align="center"></td>
423 <td style="border:1px solid" align="center"></td>
424 <td style="border:1px solid" align="center"></td>
425 <td style="border:1px solid" align="center"></td>
426 <td style="border:1px solid" align="center"></td>
427 <td style="border:1px solid" align="center"></td>
428</tr>
429<tr><th style="border:1px solid" align="left">EVP_PKEY_derive_init</th>
430 <td style="border:1px solid" align="center"></td>
431 <td style="border:1px solid" align="center">derive</td>
432 <td style="border:1px solid" align="center">derive</td>
433 <td style="border:1px solid" align="center">derive</td>
434 <td style="border:1px solid" align="center">derive</td>
435 <td style="border:1px solid" align="center">derive</td>
436 <td style="border:1px solid" align="center">derive</td>
437 <td style="border:1px solid" align="center">derive</td>
438 <td style="border:1px solid" align="center">derive</td>
439 <td style="border:1px solid" align="center">derive</td>
440 <td style="border:1px solid" align="center">derive</td>
441 <td style="border:1px solid" align="center">derive</td>
442 <td style="border:1px solid" align="center"></td>
443</tr>
444<tr><th style="border:1px solid" align="left">EVP_PKEY_derive_set_peer</th>
445 <td style="border:1px solid" align="center"></td>
446 <td style="border:1px solid" align="center"></td>
447 <td style="border:1px solid" align="center"></td>
448 <td style="border:1px solid" align="center"></td>
449 <td style="border:1px solid" align="center"></td>
450 <td style="border:1px solid" align="center"></td>
451 <td style="border:1px solid" align="center"></td>
452 <td style="border:1px solid" align="center">derive</td>
453 <td style="border:1px solid" align="center"></td>
454 <td style="border:1px solid" align="center"></td>
455 <td style="border:1px solid" align="center"></td>
456 <td style="border:1px solid" align="center"></td>
457 <td style="border:1px solid" align="center"></td>
458</tr>
459<tr><th style="border:1px solid" align="left">EVP_PKEY_derive</th>
460 <td style="border:1px solid" align="center"></td>
461 <td style="border:1px solid" align="center"></td>
462 <td style="border:1px solid" align="center"></td>
463 <td style="border:1px solid" align="center"></td>
464 <td style="border:1px solid" align="center"></td>
465 <td style="border:1px solid" align="center"></td>
466 <td style="border:1px solid" align="center"></td>
467 <td style="border:1px solid" align="center">derive</td>
468 <td style="border:1px solid" align="center"></td>
469 <td style="border:1px solid" align="center"></td>
470 <td style="border:1px solid" align="center"></td>
471 <td style="border:1px solid" align="center"></td>
472 <td style="border:1px solid" align="center"></td>
473</tr>
474<tr><th style="border:1px solid" align="left">EVP_PKEY_encapsulate_init</th>
475 <td style="border:1px solid" align="center"></td>
476 <td style="border:1px solid" align="center">encapsulate</td>
477 <td style="border:1px solid" align="center">encapsulate</td>
478 <td style="border:1px solid" align="center">encapsulate</td>
479 <td style="border:1px solid" align="center">encapsulate</td>
480 <td style="border:1px solid" align="center">encapsulate</td>
481 <td style="border:1px solid" align="center">encapsulate</td>
482 <td style="border:1px solid" align="center">encapsulate</td>
483 <td style="border:1px solid" align="center">encapsulate</td>
484 <td style="border:1px solid" align="center">encapsulate</td>
485 <td style="border:1px solid" align="center">encapsulate</td>
486 <td style="border:1px solid" align="center">encapsulate</td>
487 <td style="border:1px solid" align="center"></td>
488</tr>
489<tr><th style="border:1px solid" align="left">EVP_PKEY_encapsulate</th>
490 <td style="border:1px solid" align="center"></td>
491 <td style="border:1px solid" align="center"></td>
492 <td style="border:1px solid" align="center"></td>
493 <td style="border:1px solid" align="center"></td>
494 <td style="border:1px solid" align="center"></td>
495 <td style="border:1px solid" align="center"></td>
496 <td style="border:1px solid" align="center"></td>
497 <td style="border:1px solid" align="center"></td>
498 <td style="border:1px solid" align="center">encapsulate</td>
499 <td style="border:1px solid" align="center"></td>
500 <td style="border:1px solid" align="center"></td>
501 <td style="border:1px solid" align="center"></td>
502 <td style="border:1px solid" align="center"></td>
503</tr>
504<tr><th style="border:1px solid" align="left">EVP_PKEY_decapsulate_init</th>
505 <td style="border:1px solid" align="center"></td>
506 <td style="border:1px solid" align="center">decapsulate</td>
507 <td style="border:1px solid" align="center">decapsulate</td>
508 <td style="border:1px solid" align="center">decapsulate</td>
509 <td style="border:1px solid" align="center">decapsulate</td>
510 <td style="border:1px solid" align="center">decapsulate</td>
511 <td style="border:1px solid" align="center">decapsulate</td>
512 <td style="border:1px solid" align="center">decapsulate</td>
513 <td style="border:1px solid" align="center">decapsulate</td>
514 <td style="border:1px solid" align="center">decapsulate</td>
515 <td style="border:1px solid" align="center">decapsulate</td>
516 <td style="border:1px solid" align="center">decapsulate</td>
517 <td style="border:1px solid" align="center"></td>
518</tr>
519<tr><th style="border:1px solid" align="left">EVP_PKEY_decapsulate</th>
520 <td style="border:1px solid" align="center"></td>
521 <td style="border:1px solid" align="center"></td>
522 <td style="border:1px solid" align="center"></td>
523 <td style="border:1px solid" align="center"></td>
524 <td style="border:1px solid" align="center"></td>
525 <td style="border:1px solid" align="center"></td>
526 <td style="border:1px solid" align="center"></td>
527 <td style="border:1px solid" align="center"></td>
528 <td style="border:1px solid" align="center"></td>
529 <td style="border:1px solid" align="center">decapsulate</td>
530 <td style="border:1px solid" align="center"></td>
531 <td style="border:1px solid" align="center"></td>
532 <td style="border:1px solid" align="center"></td>
533</tr>
534<tr><th style="border:1px solid" align="left">EVP_PKEY_paramgen_init</th>
535 <td style="border:1px solid" align="center"></td>
536 <td style="border:1px solid" align="center">parameter<br>generation</td>
537 <td style="border:1px solid" align="center">parameter<br>generation</td>
538 <td style="border:1px solid" align="center">parameter<br>generation</td>
539 <td style="border:1px solid" align="center">parameter<br>generation</td>
540 <td style="border:1px solid" align="center">parameter<br>generation</td>
541 <td style="border:1px solid" align="center">parameter<br>generation</td>
542 <td style="border:1px solid" align="center">parameter<br>generation</td>
543 <td style="border:1px solid" align="center">parameter<br>generation</td>
544 <td style="border:1px solid" align="center">parameter<br>generation</td>
545 <td style="border:1px solid" align="center">parameter<br>generation</td>
546 <td style="border:1px solid" align="center">parameter<br>generation</td>
547 <td style="border:1px solid" align="center"></td>
548</tr>
549<tr><th style="border:1px solid" align="left">EVP_PKEY_paramgen</th>
550 <td style="border:1px solid" align="center"></td>
551 <td style="border:1px solid" align="center"></td>
552 <td style="border:1px solid" align="center"></td>
553 <td style="border:1px solid" align="center"></td>
554 <td style="border:1px solid" align="center"></td>
555 <td style="border:1px solid" align="center"></td>
556 <td style="border:1px solid" align="center"></td>
557 <td style="border:1px solid" align="center"></td>
558 <td style="border:1px solid" align="center"></td>
559 <td style="border:1px solid" align="center"></td>
560 <td style="border:1px solid" align="center">parameter<br>generation</td>
561 <td style="border:1px solid" align="center"></td>
562 <td style="border:1px solid" align="center"></td>
563</tr>
564<tr><th style="border:1px solid" align="left">EVP_PKEY_keygen_init</th>
565 <td style="border:1px solid" align="center"></td>
566 <td style="border:1px solid" align="center">key<br>generation</td>
567 <td style="border:1px solid" align="center">key<br>generation</td>
568 <td style="border:1px solid" align="center">key<br>generation</td>
569 <td style="border:1px solid" align="center">key<br>generation</td>
570 <td style="border:1px solid" align="center">key<br>generation</td>
571 <td style="border:1px solid" align="center">key<br>generation</td>
572 <td style="border:1px solid" align="center">key<br>generation</td>
573 <td style="border:1px solid" align="center">key<br>generation</td>
574 <td style="border:1px solid" align="center">key<br>generation</td>
575 <td style="border:1px solid" align="center">key<br>generation</td>
576 <td style="border:1px solid" align="center">key<br>generation</td>
577 <td style="border:1px solid" align="center"></td>
578</tr>
579<tr><th style="border:1px solid" align="left">EVP_PKEY_keygen</th>
580 <td style="border:1px solid" align="center"></td>
581 <td style="border:1px solid" align="center"></td>
582 <td style="border:1px solid" align="center"></td>
583 <td style="border:1px solid" align="center"></td>
584 <td style="border:1px solid" align="center"></td>
585 <td style="border:1px solid" align="center"></td>
586 <td style="border:1px solid" align="center"></td>
587 <td style="border:1px solid" align="center"></td>
588 <td style="border:1px solid" align="center"></td>
589 <td style="border:1px solid" align="center"></td>
590 <td style="border:1px solid" align="center"></td>
591 <td style="border:1px solid" align="center">key<br>generation</td>
592 <td style="border:1px solid" align="center"></td>
593</tr>
594<tr><th style="border:1px solid" align="left">EVP_PKEY_gen</th>
595 <td style="border:1px solid" align="center"></td>
596 <td style="border:1px solid" align="center"></td>
597 <td style="border:1px solid" align="center"></td>
598 <td style="border:1px solid" align="center"></td>
599 <td style="border:1px solid" align="center"></td>
600 <td style="border:1px solid" align="center"></td>
601 <td style="border:1px solid" align="center"></td>
602 <td style="border:1px solid" align="center"></td>
603 <td style="border:1px solid" align="center"></td>
604 <td style="border:1px solid" align="center"></td>
605 <td style="border:1px solid" align="center">parameter<br>generation</td>
606 <td style="border:1px solid" align="center">key<br>generation</td>
607 <td style="border:1px solid" align="center"></td>
608</tr>
609<tr><th style="border:1px solid" align="left">EVP_PKEY_CTX_get_params</th>
610 <td style="border:1px solid" align="center"></td>
611 <td style="border:1px solid" align="center">newed</td>
612 <td style="border:1px solid" align="center">digest<br>sign</td>
613 <td style="border:1px solid" align="center">verify</td>
614 <td style="border:1px solid" align="center">verify<br>recover</td>
615 <td style="border:1px solid" align="center">encrypt</td>
616 <td style="border:1px solid" align="center">decrypt</td>
617 <td style="border:1px solid" align="center">derive</td>
618 <td style="border:1px solid" align="center">encapsulate</td>
619 <td style="border:1px solid" align="center">decapsulate</td>
620 <td style="border:1px solid" align="center">parameter<br>generation</td>
621 <td style="border:1px solid" align="center">key<br>generation</td>
622 <td style="border:1px solid" align="center"></td>
623</tr>
624<tr><th style="border:1px solid" align="left">EVP_PKEY_CTX_set_params</th>
625 <td style="border:1px solid" align="center"></td>
626 <td style="border:1px solid" align="center">newed</td>
627 <td style="border:1px solid" align="center">digest<br>sign</td>
628 <td style="border:1px solid" align="center">verify</td>
629 <td style="border:1px solid" align="center">verify<br>recover</td>
630 <td style="border:1px solid" align="center">encrypt</td>
631 <td style="border:1px solid" align="center">decrypt</td>
632 <td style="border:1px solid" align="center">derive</td>
633 <td style="border:1px solid" align="center">encapsulate</td>
634 <td style="border:1px solid" align="center">decapsulate</td>
635 <td style="border:1px solid" align="center">parameter<br>generation</td>
636 <td style="border:1px solid" align="center">key<br>generation</td>
637 <td style="border:1px solid" align="center"></td>
638</tr>
639<tr><th style="border:1px solid" align="left">EVP_PKEY_CTX_gettable_params</th>
640 <td style="border:1px solid" align="center"></td>
641 <td style="border:1px solid" align="center">newed</td>
642 <td style="border:1px solid" align="center">digest<br>sign</td>
643 <td style="border:1px solid" align="center">verify</td>
644 <td style="border:1px solid" align="center">verify<br>recover</td>
645 <td style="border:1px solid" align="center">encrypt</td>
646 <td style="border:1px solid" align="center">decrypt</td>
647 <td style="border:1px solid" align="center">derive</td>
648 <td style="border:1px solid" align="center">encapsulate</td>
649 <td style="border:1px solid" align="center">decapsulate</td>
650 <td style="border:1px solid" align="center">parameter<br>generation</td>
651 <td style="border:1px solid" align="center">key<br>generation</td>
652 <td style="border:1px solid" align="center"></td>
653</tr>
654<tr><th style="border:1px solid" align="left">EVP_PKEY_CTX_settable_params</th>
655 <td style="border:1px solid" align="center"></td>
656 <td style="border:1px solid" align="center">newed</td>
657 <td style="border:1px solid" align="center">digest<br>sign</td>
658 <td style="border:1px solid" align="center">verify</td>
659 <td style="border:1px solid" align="center">verify<br>recover</td>
660 <td style="border:1px solid" align="center">encrypt</td>
661 <td style="border:1px solid" align="center">decrypt</td>
662 <td style="border:1px solid" align="center">derive</td>
663 <td style="border:1px solid" align="center">encapsulate</td>
664 <td style="border:1px solid" align="center">decapsulate</td>
665 <td style="border:1px solid" align="center">parameter<br>generation</td>
666 <td style="border:1px solid" align="center">key<br>generation</td>
667 <td style="border:1px solid" align="center"></td>
668</tr>
669<tr><th style="border:1px solid" align="left">EVP_PKEY_CTX_free</th>
670 <td style="border:1px solid" align="center">freed</td>
671 <td style="border:1px solid" align="center">freed</td>
672 <td style="border:1px solid" align="center">freed</td>
673 <td style="border:1px solid" align="center">freed</td>
674 <td style="border:1px solid" align="center">freed</td>
675 <td style="border:1px solid" align="center">freed</td>
676 <td style="border:1px solid" align="center">freed</td>
677 <td style="border:1px solid" align="center">freed</td>
678 <td style="border:1px solid" align="center">freed</td>
679 <td style="border:1px solid" align="center">freed</td>
680 <td style="border:1px solid" align="center">freed</td>
681 <td style="border:1px solid" align="center">freed</td>
682 <td style="border:1px solid" align="center"></td>
683</tr>
684</table>
685
686=end html
687
688=head1 NOTES
689
690At some point the EVP layer will begin enforcing the transitions described
691herein.
692
693=head1 SEE ALSO
694
695L<EVP_PKEY_new(3)>,
696L<EVP_PKEY_decapsulate(3)>, L<EVP_PKEY_decrypt(3)>, L<EVP_PKEY_encapsulate(3)>,
697L<EVP_PKEY_encrypt(3)>, L<EVP_PKEY_derive(3)>, L<EVP_PKEY_keygen(3)>,
698L<EVP_PKEY_sign(3)>, L<EVP_PKEY_verify(3)>, L<EVP_PKEY_verify_recover(3)>
699
700=head1 HISTORY
701
702The provider PKEY interface was introduced in OpenSSL 3.0.
703
704=head1 COPYRIGHT
705
fecb3aae 706Copyright 2021-2022 The OpenSSL Project Authors. All Rights Reserved.
95c8a512
P
707
708Licensed under the Apache License 2.0 (the "License"). You may not use
709this file except in compliance with the License. You can obtain a copy
710in the file LICENSE in the source distribution or at
711L<https://www.openssl.org/source/license.html>.
712
713=cut