]>
Commit | Line | Data |
---|---|---|
49131a7d DSH |
1 | =pod |
2 | ||
018aaeb4 RS |
3 | =begin comment |
4 | {- join("\n", @autowarntext) -} | |
5 | ||
6 | =end comment | |
7 | ||
49131a7d DSH |
8 | =head1 NAME |
9 | ||
6c03fa21 | 10 | openssl-genpkey - generate a private key or key pair |
49131a7d DSH |
11 | |
12 | =head1 SYNOPSIS | |
13 | ||
14 | B<openssl> B<genpkey> | |
169394d4 | 15 | [B<-help>] |
e8769719 | 16 | [B<-out> I<filename>] |
6c03fa21 | 17 | [B<-outpubkey> I<filename>] |
e8769719 | 18 | [B<-outform> B<DER>|B<PEM>] |
a414fd67 | 19 | [B<-verbose>] |
7d72dc78 | 20 | [B<-quiet>] |
e8769719 | 21 | [B<-pass> I<arg>] |
8dc57d76 | 22 | [B<-I<cipher>>] |
e8769719 RS |
23 | [B<-paramfile> I<file>] |
24 | [B<-algorithm> I<alg>] | |
2f0ea936 | 25 | [B<-pkeyopt> I<opt>:I<value>] |
49131a7d DSH |
26 | [B<-genparam>] |
27 | [B<-text>] | |
7698f80a VD |
28 | {- $OpenSSL::safe::opt_r_synopsis -} |
29 | {- $OpenSSL::safe::opt_engine_synopsis -} | |
30 | {- $OpenSSL::safe::opt_provider_synopsis -} | |
7c9a7cf1 | 31 | {- $OpenSSL::safe::opt_config_synopsis -} |
49131a7d DSH |
32 | |
33 | =head1 DESCRIPTION | |
34 | ||
6c03fa21 | 35 | This command generates a private key or key pair. |
49131a7d DSH |
36 | |
37 | =head1 OPTIONS | |
38 | ||
39 | =over 4 | |
40 | ||
169394d4 MR |
41 | =item B<-help> |
42 | ||
43 | Print out a usage message. | |
44 | ||
e8769719 | 45 | =item B<-out> I<filename> |
49131a7d | 46 | |
6c03fa21 MB |
47 | Output the private key to the specified file. If this argument is not |
48 | specified then standard output is used. | |
49 | ||
50 | =item B<-outpubkey> I<filename> | |
51 | ||
52 | Output the public key to the specified file. If this argument is not | |
53 | specified then the public key is not output. | |
49131a7d | 54 | |
e8769719 | 55 | =item B<-outform> B<DER>|B<PEM> |
49131a7d | 56 | |
f7928938 | 57 | The output format, except when B<-genparam> is given; the default is B<PEM>. |
46949153 | 58 | See L<openssl-format-options(1)> for details. |
49131a7d | 59 | |
f7928938 RL |
60 | When B<-genparam> is given, B<-outform> is ignored. |
61 | ||
a414fd67 PP |
62 | =item B<-verbose> |
63 | ||
64 | Output "status dots" while generating keys. | |
65 | ||
7d72dc78 RS |
66 | =item B<-quiet> |
67 | ||
68 | Do not output "status dots" while generating keys. | |
69 | ||
e8769719 | 70 | =item B<-pass> I<arg> |
49131a7d | 71 | |
2f0ea936 | 72 | The output file password source. For more information about the format of I<arg> |
46949153 | 73 | see L<openssl-passphrase-options(1)>. |
49131a7d | 74 | |
8dc57d76 | 75 | =item B<-I<cipher>> |
49131a7d | 76 | |
5ce60a20 | 77 | This option encrypts the private key with the supplied cipher. Any algorithm |
49131a7d DSH |
78 | name accepted by EVP_get_cipherbyname() is acceptable such as B<des3>. |
79 | ||
e8769719 | 80 | =item B<-algorithm> I<alg> |
49131a7d | 81 | |
f1ffaaee | 82 | Public key algorithm to use such as RSA, DSA, DH or DHX. If used this option must |
f489ab31 | 83 | precede any B<-pkeyopt> options. The options B<-paramfile> and B<-algorithm> |
6c03fa21 MB |
84 | are mutually exclusive. Engines or providers may add algorithms in addition to |
85 | the standard built-in ones. | |
77579510 MC |
86 | |
87 | Valid built-in algorithm names for private key generation are RSA, RSA-PSS, EC, | |
88 | X25519, X448, ED25519 and ED448. | |
89 | ||
90 | Valid built-in algorithm names for parameter generation (see the B<-genparam> | |
91 | option) are DH, DSA and EC. | |
92 | ||
f1ffaaee SL |
93 | Note that the algorithm name X9.42 DH may be used as a synonym for DHX keys and |
94 | PKCS#3 refers to DH Keys. Some options are not shared between DH and DHX keys. | |
49131a7d | 95 | |
2f0ea936 | 96 | =item B<-pkeyopt> I<opt>:I<value> |
49131a7d | 97 | |
2f0ea936 | 98 | Set the public key algorithm option I<opt> to I<value>. The precise set of |
49131a7d | 99 | options supported depends on the public key algorithm used and its |
f5c14c63 RL |
100 | implementation. See L</KEY GENERATION OPTIONS> and |
101 | L</PARAMETER GENERATION OPTIONS> below for more details. | |
49131a7d | 102 | |
2c1ec72a | 103 | To list the possible I<opt> values for an algorithm use: |
104 | B<openssl> B<genpkey> -algorithm XXX -help | |
105 | ||
49131a7d DSH |
106 | =item B<-genparam> |
107 | ||
c4de074e | 108 | Generate a set of parameters instead of a private key. If used this option must |
77a795e4 | 109 | precede any B<-algorithm>, B<-paramfile> or B<-pkeyopt> options. |
49131a7d | 110 | |
e8769719 | 111 | =item B<-paramfile> I<filename> |
49131a7d DSH |
112 | |
113 | Some public key algorithms generate a private key based on a set of parameters. | |
e4549295 DSH |
114 | They can be supplied using this option. If this option is used the public key |
115 | algorithm used is determined by the parameters. If used this option must | |
77a795e4 | 116 | precede any B<-pkeyopt> options. The options B<-paramfile> and B<-algorithm> |
e4549295 DSH |
117 | are mutually exclusive. |
118 | ||
119 | =item B<-text> | |
120 | ||
121 | Print an (unencrypted) text representation of private and public keys and | |
122 | parameters along with the PEM or DER structure. | |
49131a7d | 123 | |
7698f80a VD |
124 | {- $OpenSSL::safe::opt_r_item -} |
125 | ||
018aaeb4 RS |
126 | {- $OpenSSL::safe::opt_engine_item -} |
127 | ||
6bd4e3f2 P |
128 | {- $OpenSSL::safe::opt_provider_item -} |
129 | ||
7c9a7cf1 SL |
130 | {- $OpenSSL::safe::opt_config_item -} |
131 | ||
49131a7d DSH |
132 | =back |
133 | ||
134 | =head1 KEY GENERATION OPTIONS | |
135 | ||
4c583c36 | 136 | The options supported by each algorithm and indeed each implementation of an |
49131a7d | 137 | algorithm can vary. The options for the OpenSSL implementations are detailed |
77579510 MC |
138 | below. There are no key generation options defined for the X25519, X448, ED25519 |
139 | or ED448 algorithms. | |
49131a7d | 140 | |
77579510 | 141 | =head2 RSA Key Generation Options |
49131a7d DSH |
142 | |
143 | =over 4 | |
144 | ||
145 | =item B<rsa_keygen_bits:numbits> | |
146 | ||
70b0b977 | 147 | The number of bits in the generated key. If not specified 2048 is used. |
49131a7d | 148 | |
665d899f PY |
149 | =item B<rsa_keygen_primes:numprimes> |
150 | ||
151 | The number of primes in the generated key. If not specified 2 is used. | |
152 | ||
153 | =item B<rsa_keygen_pubexp:value> | |
154 | ||
155 | The RSA public exponent value. This can be a large decimal or | |
a43384fd | 156 | hexadecimal value if preceded by C<0x>. Default value is 65537. |
665d899f PY |
157 | |
158 | =back | |
159 | ||
77579510 | 160 | =head2 RSA-PSS Key Generation Options |
665d899f PY |
161 | |
162 | Note: by default an B<RSA-PSS> key has no parameter restrictions. | |
163 | ||
164 | =over 4 | |
165 | ||
2f0ea936 RL |
166 | =item B<rsa_keygen_bits>:I<numbits>, B<rsa_keygen_primes>:I<numprimes>, |
167 | B<rsa_keygen_pubexp>:I<value> | |
7751098e DSH |
168 | |
169 | These options have the same meaning as the B<RSA> algorithm. | |
170 | ||
2f0ea936 | 171 | =item B<rsa_pss_keygen_md>:I<digest> |
7751098e | 172 | |
2f0ea936 | 173 | If set the key is restricted and can only use I<digest> for signing. |
7751098e | 174 | |
2f0ea936 | 175 | =item B<rsa_pss_keygen_mgf1_md>:I<digest> |
7751098e | 176 | |
2f0ea936 | 177 | If set the key is restricted and can only use I<digest> as it's MGF1 |
7751098e DSH |
178 | parameter. |
179 | ||
2f0ea936 | 180 | =item B<rsa_pss_keygen_saltlen>:I<len> |
7751098e | 181 | |
2f0ea936 | 182 | If set the key is restricted and I<len> specifies the minimum salt length. |
7751098e DSH |
183 | |
184 | =back | |
185 | ||
77579510 MC |
186 | =head2 EC Key Generation Options |
187 | ||
188 | The EC key generation options can also be used for parameter generation. | |
49131a7d DSH |
189 | |
190 | =over 4 | |
191 | ||
2f0ea936 | 192 | =item B<ec_paramgen_curve>:I<curve> |
49131a7d | 193 | |
77579510 MC |
194 | The EC curve to use. OpenSSL supports NIST curve names such as "P-256". |
195 | ||
2f0ea936 | 196 | =item B<ec_param_enc>:I<encoding> |
77579510 | 197 | |
2f0ea936 RL |
198 | The encoding to use for parameters. The I<encoding> parameter must be either |
199 | B<named_curve> or B<explicit>. The default value is B<named_curve>. | |
49131a7d | 200 | |
677741f8 AP |
201 | =back |
202 | ||
f1ffaaee SL |
203 | =head2 DH Key Generation Options |
204 | ||
205 | =over 4 | |
206 | ||
207 | =item B<group>:I<name> | |
208 | ||
209 | The B<paramfile> option is not required if a named group is used here. | |
210 | See the L</DH Parameter Generation Options> section below. | |
211 | ||
212 | =back | |
213 | ||
214 | ||
77579510 MC |
215 | =head1 PARAMETER GENERATION OPTIONS |
216 | ||
217 | The options supported by each algorithm and indeed each implementation of an | |
218 | algorithm can vary. The options for the OpenSSL implementations are detailed | |
219 | below. | |
220 | ||
221 | =head2 DSA Parameter Generation Options | |
49131a7d DSH |
222 | |
223 | =over 4 | |
224 | ||
2f0ea936 | 225 | =item B<dsa_paramgen_bits>:I<numbits> |
49131a7d | 226 | |
70b0b977 | 227 | The number of bits in the generated prime. If not specified 2048 is used. |
49131a7d | 228 | |
2f0ea936 | 229 | =item B<dsa_paramgen_q_bits>:I<numbits> |
49131a7d | 230 | |
b03ec3b5 SL |
231 | =item B<qbits>:I<numbits> |
232 | ||
77579510 | 233 | The number of bits in the q parameter. Must be one of 160, 224 or 256. If not |
70b0b977 | 234 | specified 224 is used. |
49131a7d | 235 | |
2f0ea936 | 236 | =item B<dsa_paramgen_md>:I<digest> |
618eb125 | 237 | |
b03ec3b5 SL |
238 | =item B<digest>:I<digest> |
239 | ||
77579510 MC |
240 | The digest to use during parameter generation. Must be one of B<sha1>, B<sha224> |
241 | or B<sha256>. If set, then the number of bits in B<q> will match the output size | |
242 | of the specified digest and the B<dsa_paramgen_q_bits> parameter will be | |
243 | ignored. If not set, then a digest will be used that gives an output matching | |
244 | the number of bits in B<q>, i.e. B<sha1> if q length is 160, B<sha224> if it 224 | |
245 | or B<sha256> if it is 256. | |
618eb125 | 246 | |
b03ec3b5 SL |
247 | =item B<properties>:I<query> |
248 | ||
249 | The I<digest> property I<query> string to use when fetching a digest from a provider. | |
250 | ||
251 | =item B<type>:I<type> | |
252 | ||
253 | The type of generation to use. Set this to 1 to use legacy FIPS186-2 parameter | |
254 | generation. The default of 0 uses FIPS186-4 parameter generation. | |
255 | ||
256 | =item B<gindex>:I<index> | |
257 | ||
258 | The index to use for canonical generation and verification of the generator g. | |
259 | Set this to a positive value ranging from 0..255 to use this mode. Larger values | |
260 | will only use the bottom byte. | |
261 | This I<index> must then be reused during key validation to verify the value of g. | |
262 | If this value is not set then g is not verifiable. The default value is -1. | |
263 | ||
264 | =item B<hexseed>:I<seed> | |
265 | ||
266 | The seed I<seed> data to use instead of generating a random seed internally. | |
267 | This should be used for testing purposes only. This will either produced fixed | |
268 | values for the generated parameters OR it will fail if the seed did not | |
269 | generate valid primes. | |
270 | ||
49131a7d DSH |
271 | =back |
272 | ||
77579510 | 273 | =head2 DH Parameter Generation Options |
146ca72c | 274 | |
f1ffaaee SL |
275 | For most use cases it is recommended to use the B<group> option rather than |
276 | the B<type> options. Note that the B<group> option is not used by default if | |
277 | no parameter generation options are specified. | |
278 | ||
49131a7d DSH |
279 | =over 4 |
280 | ||
f1ffaaee SL |
281 | =item B<group>:I<name> |
282 | ||
283 | =item B<dh_param>:I<name> | |
284 | ||
285 | Use a named DH group to select constant values for the DH parameters. | |
286 | All other options will be ignored if this value is set. | |
287 | ||
288 | Valid values that are associated with the B<algorithm> of B<"DH"> are: | |
289 | "ffdhe2048", "ffdhe3072", "ffdhe4096", "ffdhe6144", "ffdhe8192", | |
290 | "modp_1536", "modp_2048", "modp_3072", "modp_4096", "modp_6144", "modp_8192". | |
291 | ||
292 | Valid values that are associated with the B<algorithm> of B<"DHX"> are the | |
293 | RFC5114 names "dh_1024_160", "dh_2048_224", "dh_2048_256". | |
294 | ||
295 | =item B<dh_rfc5114>:I<num> | |
296 | ||
297 | If this option is set, then the appropriate RFC5114 parameters are used | |
298 | instead of generating new parameters. The value I<num> can be one of | |
e304aa87 | 299 | 1, 2 or 3 that are equivalent to using the option B<group> with one of |
f1ffaaee SL |
300 | "dh_1024_160", "dh_2048_224" or "dh_2048_256". |
301 | All other options will be ignored if this value is set. | |
302 | ||
303 | =item B<pbits>:I<numbits> | |
304 | ||
2f0ea936 | 305 | =item B<dh_paramgen_prime_len>:I<numbits> |
146ca72c | 306 | |
2f0ea936 | 307 | The number of bits in the prime parameter I<p>. The default is 2048. |
49131a7d | 308 | |
f1ffaaee SL |
309 | =item B<qbits>:I<numbits> |
310 | ||
2f0ea936 | 311 | =item B<dh_paramgen_subprime_len>:I<numbits> |
49131a7d | 312 | |
f1ffaaee SL |
313 | The number of bits in the sub prime parameter I<q>. The default is 224. |
314 | Only relevant if used in conjunction with the B<dh_paramgen_type> option to | |
315 | generate DHX parameters. | |
316 | ||
317 | =item B<safeprime-generator>:I<value> | |
e5fa864f | 318 | |
2f0ea936 | 319 | =item B<dh_paramgen_generator>:I<value> |
e5fa864f | 320 | |
2f0ea936 | 321 | The value to use for the generator I<g>. The default is 2. |
f1ffaaee SL |
322 | The B<algorithm> option must be B<"DH"> for this parameter to be used. |
323 | ||
324 | =item B<type>:I<string> | |
325 | ||
326 | The type name of DH parameters to generate. Valid values are: | |
327 | ||
328 | =over 4 | |
329 | ||
330 | =item "generator" | |
331 | ||
332 | Use a safe prime generator with the option B<safeprime_generator> | |
333 | The B<algorithm> option must be B<"DH">. | |
334 | ||
335 | =item "fips186_4" | |
336 | ||
337 | FIPS186-4 parameter generation. | |
338 | The B<algorithm> option must be B<"DHX">. | |
339 | ||
340 | =item "fips186_2" | |
341 | ||
342 | FIPS186-4 parameter generation. | |
343 | The B<algorithm> option must be B<"DHX">. | |
344 | ||
345 | =item "group" | |
346 | ||
347 | Can be used with the option B<pbits> to select one of | |
348 | "ffdhe2048", "ffdhe3072", "ffdhe4096", "ffdhe6144" or "ffdhe8192". | |
349 | The B<algorithm> option must be B<"DH">. | |
350 | ||
351 | =item "default" | |
352 | ||
353 | Selects a default type based on the B<algorithm>. This is used by the | |
e304aa87 | 354 | OpenSSL default provider to set the type for backwards compatibility. |
f1ffaaee SL |
355 | If B<algorithm> is B<"DH"> then B<"generator"> is used. |
356 | If B<algorithm> is B<"DHX"> then B<"fips186_2"> is used. | |
357 | ||
358 | =back | |
e5fa864f | 359 | |
2f0ea936 | 360 | =item B<dh_paramgen_type>:I<value> |
e5fa864f | 361 | |
f1ffaaee SL |
362 | The type of DH parameters to generate. Valid values are 0, 1, 2 or 3 |
363 | which correspond to setting the option B<type> to | |
364 | "generator", "fips186_2", "fips186_4" or "group". | |
e5fa864f | 365 | |
f1ffaaee | 366 | =item B<digest>:I<digest> |
e5fa864f | 367 | |
f1ffaaee SL |
368 | The digest to use during parameter generation. Must be one of B<sha1>, B<sha224> |
369 | or B<sha256>. If set, then the number of bits in B<qbits> will match the output | |
370 | size of the specified digest and the B<qbits> parameter will be | |
371 | ignored. If not set, then a digest will be used that gives an output matching | |
372 | the number of bits in B<q>, i.e. B<sha1> if q length is 160, B<sha224> if it is | |
373 | 224 or B<sha256> if it is 256. | |
374 | This is only used by "fips186_4" and "fips186_2" key generation. | |
375 | ||
376 | =item B<properties>:I<query> | |
377 | ||
378 | The I<digest> property I<query> string to use when fetching a digest from a provider. | |
379 | This is only used by "fips186_4" and "fips186_2" key generation. | |
380 | ||
381 | =item B<gindex>:I<index> | |
382 | ||
383 | The index to use for canonical generation and verification of the generator g. | |
384 | Set this to a positive value ranging from 0..255 to use this mode. Larger values | |
385 | will only use the bottom byte. | |
386 | This I<index> must then be reused during key validation to verify the value of g. | |
387 | If this value is not set then g is not verifiable. The default value is -1. | |
388 | This is only used by "fips186_4" and "fips186_2" key generation. | |
389 | ||
390 | =item B<hexseed>:I<seed> | |
391 | ||
392 | The seed I<seed> data to use instead of generating a random seed internally. | |
393 | This should be used for testing purposes only. This will either produced fixed | |
394 | values for the generated parameters OR it will fail if the seed did not | |
395 | generate valid primes. | |
396 | This is only used by "fips186_4" and "fips186_2" key generation. | |
e5fa864f DSH |
397 | |
398 | =back | |
399 | ||
77579510 | 400 | =head2 EC Parameter Generation Options |
e5fa864f | 401 | |
77579510 | 402 | The EC parameter generation options are the same as for key generation. See |
f5c14c63 | 403 | L</EC Key Generation Options> above. |
e5fa864f | 404 | |
49131a7d DSH |
405 | =head1 NOTES |
406 | ||
407 | The use of the genpkey program is encouraged over the algorithm specific | |
408 | utilities because additional algorithm options and ENGINE provided algorithms | |
409 | can be used. | |
410 | ||
411 | =head1 EXAMPLES | |
412 | ||
413 | Generate an RSA private key using default parameters: | |
414 | ||
146ca72c | 415 | openssl genpkey -algorithm RSA -out key.pem |
49131a7d DSH |
416 | |
417 | Encrypt output private key using 128 bit AES and the passphrase "hello": | |
418 | ||
e5fa864f | 419 | openssl genpkey -algorithm RSA -out key.pem -aes-128-cbc -pass pass:hello |
49131a7d DSH |
420 | |
421 | Generate a 2048 bit RSA key using 3 as the public exponent: | |
422 | ||
dfee8626 RS |
423 | openssl genpkey -algorithm RSA -out key.pem \ |
424 | -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:3 | |
49131a7d | 425 | |
b03ec3b5 SL |
426 | Generate 2048 bit DSA parameters that can be validated: The output values for |
427 | gindex and seed are required for key validation purposes and are not saved to | |
428 | the output pem file). | |
49131a7d | 429 | |
b03ec3b5 SL |
430 | openssl genpkey -genparam -algorithm DSA -out dsap.pem -pkeyopt pbits:2048 \ |
431 | -pkeyopt qbits:224 -pkeyopt digest:SHA256 -pkeyopt gindex:1 -text | |
49131a7d DSH |
432 | |
433 | Generate DSA key from parameters: | |
434 | ||
146ca72c | 435 | openssl genpkey -paramfile dsap.pem -out dsakey.pem |
49131a7d | 436 | |
f1ffaaee SL |
437 | Generate 4096 bit DH Key using safe prime group ffdhe4096: |
438 | ||
439 | openssl genpkey -algorithm DH -out dhkey.pem -pkeyopt group:ffdhe4096 | |
440 | ||
441 | Generate 2048 bit X9.42 DH key with 256 bit subgroup using RFC5114 group3: | |
442 | ||
443 | openssl genpkey -algorithm DHX -out dhkey.pem -pkeyopt dh_rfc5114:3 | |
444 | ||
445 | Generate a DH key using a DH parameters file: | |
446 | ||
447 | openssl genpkey -paramfile dhp.pem -out dhkey.pem | |
448 | ||
449 | Output DH parameters for safe prime group ffdhe2048: | |
450 | ||
451 | openssl genpkey -genparam -algorithm DH -out dhp.pem -pkeyopt group:ffdhe2048 | |
452 | ||
453 | Output 2048 bit X9.42 DH parameters with 224 bit subgroup using RFC5114 group2: | |
454 | ||
455 | openssl genpkey -genparam -algorithm DHX -out dhp.pem -pkeyopt dh_rfc5114:2 | |
456 | ||
457 | Output 2048 bit X9.42 DH parameters with 224 bit subgroup using FIP186-4 keygen: | |
458 | ||
459 | openssl genpkey -genparam -algorithm DHX -out dhp.pem -text \ | |
460 | -pkeyopt pbits:2048 -pkeyopt qbits:224 -pkeyopt digest:SHA256 \ | |
461 | -pkeyopt gindex:1 -pkeyopt dh_paramgen_type:2 | |
462 | ||
463 | Output 1024 bit X9.42 DH parameters with 160 bit subgroup using FIP186-2 keygen: | |
464 | ||
465 | openssl genpkey -genparam -algorithm DHX -out dhp.pem -text \ | |
466 | -pkeyopt pbits:1024 -pkeyopt qbits:160 -pkeyopt digest:SHA1 \ | |
467 | -pkeyopt gindex:1 -pkeyopt dh_paramgen_type:1 | |
468 | ||
469 | Output 2048 bit DH parameters: | |
49131a7d DSH |
470 | |
471 | openssl genpkey -genparam -algorithm DH -out dhp.pem \ | |
dfee8626 | 472 | -pkeyopt dh_paramgen_prime_len:2048 |
77579510 | 473 | |
f1ffaaee | 474 | Output 2048 bit DH parameters using a generator: |
77579510 MC |
475 | |
476 | openssl genpkey -genparam -algorithm DH -out dhpx.pem \ | |
dfee8626 RS |
477 | -pkeyopt dh_paramgen_prime_len:2048 \ |
478 | -pkeyopt dh_paramgen_type:1 | |
49131a7d | 479 | |
146ca72c DSH |
480 | Generate EC parameters: |
481 | ||
482 | openssl genpkey -genparam -algorithm EC -out ecp.pem \ | |
1bc74519 RS |
483 | -pkeyopt ec_paramgen_curve:secp384r1 \ |
484 | -pkeyopt ec_param_enc:named_curve | |
146ca72c DSH |
485 | |
486 | Generate EC key from parameters: | |
487 | ||
488 | openssl genpkey -paramfile ecp.pem -out eckey.pem | |
489 | ||
a528d4f0 | 490 | Generate EC key directly: |
49131a7d | 491 | |
146ca72c | 492 | openssl genpkey -algorithm EC -out eckey.pem \ |
1bc74519 RS |
493 | -pkeyopt ec_paramgen_curve:P-384 \ |
494 | -pkeyopt ec_param_enc:named_curve | |
49131a7d | 495 | |
c082201a DSH |
496 | Generate an X25519 private key: |
497 | ||
498 | openssl genpkey -algorithm X25519 -out xkey.pem | |
499 | ||
77579510 MC |
500 | Generate an ED448 private key: |
501 | ||
502 | openssl genpkey -algorithm ED448 -out xkey.pem | |
503 | ||
a528d4f0 RS |
504 | =head1 HISTORY |
505 | ||
506 | The ability to use NIST curve names, and to generate an EC key directly, | |
fc5ecadd DMSP |
507 | were added in OpenSSL 1.0.2. |
508 | The ability to generate X25519 keys was added in OpenSSL 1.1.0. | |
509 | The ability to generate X448, ED25519 and ED448 keys was added in OpenSSL 1.1.1. | |
a528d4f0 | 510 | |
0f221d9c P |
511 | The B<-engine> option was deprecated in OpenSSL 3.0. |
512 | ||
e2f92610 RS |
513 | =head1 COPYRIGHT |
514 | ||
b6461792 | 515 | Copyright 2006-2024 The OpenSSL Project Authors. All Rights Reserved. |
e2f92610 | 516 | |
449040b4 | 517 | Licensed under the Apache License 2.0 (the "License"). You may not use |
e2f92610 RS |
518 | this file except in compliance with the License. You can obtain a copy |
519 | in the file LICENSE in the source distribution or at | |
520 | L<https://www.openssl.org/source/license.html>. | |
521 | ||
522 | =cut |