1*2175Sjp161948=pod 2*2175Sjp161948 3*2175Sjp161948=head1 NAME 4*2175Sjp161948 5*2175Sjp161948dhparam - DH parameter manipulation and generation 6*2175Sjp161948 7*2175Sjp161948=head1 SYNOPSIS 8*2175Sjp161948 9*2175Sjp161948B<openssl dhparam> 10*2175Sjp161948[B<-inform DER|PEM>] 11*2175Sjp161948[B<-outform DER|PEM>] 12*2175Sjp161948[B<-in> I<filename>] 13*2175Sjp161948[B<-out> I<filename>] 14*2175Sjp161948[B<-dsaparam>] 15*2175Sjp161948[B<-noout>] 16*2175Sjp161948[B<-text>] 17*2175Sjp161948[B<-C>] 18*2175Sjp161948[B<-2>] 19*2175Sjp161948[B<-5>] 20*2175Sjp161948[B<-rand> I<file(s)>] 21*2175Sjp161948[B<-engine id>] 22*2175Sjp161948[I<numbits>] 23*2175Sjp161948 24*2175Sjp161948=head1 DESCRIPTION 25*2175Sjp161948 26*2175Sjp161948This command is used to manipulate DH parameter files. 27*2175Sjp161948 28*2175Sjp161948=head1 OPTIONS 29*2175Sjp161948 30*2175Sjp161948=over 4 31*2175Sjp161948 32*2175Sjp161948=item B<-inform DER|PEM> 33*2175Sjp161948 34*2175Sjp161948This specifies the input format. The B<DER> option uses an ASN1 DER encoded 35*2175Sjp161948form compatible with the PKCS#3 DHparameter structure. The PEM form is the 36*2175Sjp161948default format: it consists of the B<DER> format base64 encoded with 37*2175Sjp161948additional header and footer lines. 38*2175Sjp161948 39*2175Sjp161948=item B<-outform DER|PEM> 40*2175Sjp161948 41*2175Sjp161948This specifies the output format, the options have the same meaning as the 42*2175Sjp161948B<-inform> option. 43*2175Sjp161948 44*2175Sjp161948=item B<-in> I<filename> 45*2175Sjp161948 46*2175Sjp161948This specifies the input filename to read parameters from or standard input if 47*2175Sjp161948this option is not specified. 48*2175Sjp161948 49*2175Sjp161948=item B<-out> I<filename> 50*2175Sjp161948 51*2175Sjp161948This specifies the output filename parameters to. Standard output is used 52*2175Sjp161948if this option is not present. The output filename should B<not> be the same 53*2175Sjp161948as the input filename. 54*2175Sjp161948 55*2175Sjp161948=item B<-dsaparam> 56*2175Sjp161948 57*2175Sjp161948If this option is used, DSA rather than DH parameters are read or created; 58*2175Sjp161948they are converted to DH format. Otherwise, "strong" primes (such 59*2175Sjp161948that (p-1)/2 is also prime) will be used for DH parameter generation. 60*2175Sjp161948 61*2175Sjp161948DH parameter generation with the B<-dsaparam> option is much faster, 62*2175Sjp161948and the recommended exponent length is shorter, which makes DH key 63*2175Sjp161948exchange more efficient. Beware that with such DSA-style DH 64*2175Sjp161948parameters, a fresh DH key should be created for each use to 65*2175Sjp161948avoid small-subgroup attacks that may be possible otherwise. 66*2175Sjp161948 67*2175Sjp161948=item B<-2>, B<-5> 68*2175Sjp161948 69*2175Sjp161948The generator to use, either 2 or 5. 2 is the default. If present then the 70*2175Sjp161948input file is ignored and parameters are generated instead. 71*2175Sjp161948 72*2175Sjp161948=item B<-rand> I<file(s)> 73*2175Sjp161948 74*2175Sjp161948a file or files containing random data used to seed the random number 75*2175Sjp161948generator, or an EGD socket (see L<RAND_egd(3)|RAND_egd(3)>). 76*2175Sjp161948Multiple files can be specified separated by a OS-dependent character. 77*2175Sjp161948The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for 78*2175Sjp161948all others. 79*2175Sjp161948 80*2175Sjp161948=item I<numbits> 81*2175Sjp161948 82*2175Sjp161948this option specifies that a parameter set should be generated of size 83*2175Sjp161948I<numbits>. It must be the last option. If not present then a value of 512 84*2175Sjp161948is used. If this option is present then the input file is ignored and 85*2175Sjp161948parameters are generated instead. 86*2175Sjp161948 87*2175Sjp161948=item B<-noout> 88*2175Sjp161948 89*2175Sjp161948this option inhibits the output of the encoded version of the parameters. 90*2175Sjp161948 91*2175Sjp161948=item B<-text> 92*2175Sjp161948 93*2175Sjp161948this option prints out the DH parameters in human readable form. 94*2175Sjp161948 95*2175Sjp161948=item B<-C> 96*2175Sjp161948 97*2175Sjp161948this option converts the parameters into C code. The parameters can then 98*2175Sjp161948be loaded by calling the B<get_dh>I<numbits>B<()> function. 99*2175Sjp161948 100*2175Sjp161948=item B<-engine id> 101*2175Sjp161948 102*2175Sjp161948specifying an engine (by it's unique B<id> string) will cause B<req> 103*2175Sjp161948to attempt to obtain a functional reference to the specified engine, 104*2175Sjp161948thus initialising it if needed. The engine will then be set as the default 105*2175Sjp161948for all available algorithms. 106*2175Sjp161948 107*2175Sjp161948=back 108*2175Sjp161948 109*2175Sjp161948=head1 WARNINGS 110*2175Sjp161948 111*2175Sjp161948The program B<dhparam> combines the functionality of the programs B<dh> and 112*2175Sjp161948B<gendh> in previous versions of OpenSSL and SSLeay. The B<dh> and B<gendh> 113*2175Sjp161948programs are retained for now but may have different purposes in future 114*2175Sjp161948versions of OpenSSL. 115*2175Sjp161948 116*2175Sjp161948=head1 NOTES 117*2175Sjp161948 118*2175Sjp161948PEM format DH parameters use the header and footer lines: 119*2175Sjp161948 120*2175Sjp161948 -----BEGIN DH PARAMETERS----- 121*2175Sjp161948 -----END DH PARAMETERS----- 122*2175Sjp161948 123*2175Sjp161948OpenSSL currently only supports the older PKCS#3 DH, not the newer X9.42 124*2175Sjp161948DH. 125*2175Sjp161948 126*2175Sjp161948This program manipulates DH parameters not keys. 127*2175Sjp161948 128*2175Sjp161948=head1 BUGS 129*2175Sjp161948 130*2175Sjp161948There should be a way to generate and manipulate DH keys. 131*2175Sjp161948 132*2175Sjp161948=head1 SEE ALSO 133*2175Sjp161948 134*2175Sjp161948L<dsaparam(1)|dsaparam(1)> 135*2175Sjp161948 136*2175Sjp161948=head1 HISTORY 137*2175Sjp161948 138*2175Sjp161948The B<dhparam> command was added in OpenSSL 0.9.5. 139*2175Sjp161948The B<-dsaparam> option was added in OpenSSL 0.9.6. 140*2175Sjp161948 141*2175Sjp161948=cut 142