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