| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | DSA_generate_parameters_ex, DSA_generate_parameters - generate DSA parameters | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/dsa.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 07:39:19 +08:00
										 |  |  | Deprecated since OpenSSL 3.0, can be hidden entirely by defining | 
					
						
							|  |  |  | B<OPENSSL_API_COMPAT> with a suitable version value, see | 
					
						
							|  |  |  | L<openssl_user_macros(7)>: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  |  int DSA_generate_parameters_ex(DSA *dsa, int bits, | 
					
						
							| 
									
										
										
										
											2017-01-21 02:58:49 +08:00
										 |  |  |                                 const unsigned char *seed, int seed_len, | 
					
						
							|  |  |  |                                 int *counter_ret, unsigned long *h_ret, | 
					
						
							|  |  |  |                                 BN_GENCB *cb); | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-03 17:59:11 +08:00
										 |  |  | Deprecated since OpenSSL 0.9.8, can be hidden entirely by defining | 
					
						
							|  |  |  | B<OPENSSL_API_COMPAT> with a suitable version value, see | 
					
						
							|  |  |  | L<openssl_user_macros(7)>: | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-21 02:58:49 +08:00
										 |  |  |  DSA *DSA_generate_parameters(int bits, unsigned char *seed, int seed_len, | 
					
						
							|  |  |  |                               int *counter_ret, unsigned long *h_ret, | 
					
						
							|  |  |  |                               void (*callback)(int, int, void *), void *cb_arg); | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 07:39:19 +08:00
										 |  |  | All of the functions described on this page are deprecated. | 
					
						
							|  |  |  | Applications should instead use L<EVP_PKEY_paramgen_init(3)> and | 
					
						
							|  |  |  | L<EVP_PKEY_keygen(3)> as described in L<EVP_PKEY-DSA(7)>. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | DSA_generate_parameters_ex() generates primes p and q and a generator g | 
					
						
							|  |  |  | for use in the DSA and stores the result in B<dsa>. | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-08 10:14:47 +08:00
										 |  |  | B<bits> is the length of the prime p to be generated. | 
					
						
							|  |  |  | For lengths under 2048 bits, the length of q is 160 bits; for lengths | 
					
						
							| 
									
										
										
										
											2015-08-29 00:41:50 +08:00
										 |  |  | greater than or equal to 2048 bits, the length of q is set to 256 bits. | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-08 10:14:47 +08:00
										 |  |  | If B<seed> is NULL, the primes will be generated at random. | 
					
						
							|  |  |  | If B<seed_len> is less than the length of q, an error is returned. | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | DSA_generate_parameters_ex() places the iteration count in | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | *B<counter_ret> and a counter used for finding a generator in | 
					
						
							| 
									
										
										
										
											2000-01-30 10:23:03 +08:00
										 |  |  | *B<h_ret>, unless these are B<NULL>. | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | A callback function may be used to provide feedback about the progress | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | of the key generation. If B<cb> is not B<NULL>, it will be | 
					
						
							|  |  |  | called as shown below. For information on the BN_GENCB structure and the | 
					
						
							|  |  |  | BN_GENCB_call function discussed below, refer to | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<BN_generate_prime(3)>. | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | DSA_generate_prime() is similar to DSA_generate_prime_ex() but | 
					
						
							|  |  |  | expects an old-style callback function; see | 
					
						
							|  |  |  | L<BN_generate_prime(3)> for information on the old-style callback. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-08 01:37:47 +08:00
										 |  |  | =over 2 | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | When a candidate for q is generated, B<BN_GENCB_call(cb, 0, m++)> is called | 
					
						
							| 
									
										
										
										
											2000-01-30 10:23:03 +08:00
										 |  |  | (m is 0 for the first candidate). | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-30 11:32:28 +08:00
										 |  |  | When a candidate for q has passed a test by trial division, | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | B<BN_GENCB_call(cb, 1, -1)> is called. | 
					
						
							| 
									
										
										
										
											2000-01-30 11:32:28 +08:00
										 |  |  | While a candidate for q is tested by Miller-Rabin primality tests, | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | B<BN_GENCB_call(cb, 1, i)> is called in the outer loop | 
					
						
							| 
									
										
										
										
											2000-01-30 11:32:28 +08:00
										 |  |  | (once for each witness that confirms that the candidate may be prime); | 
					
						
							| 
									
										
										
										
											2000-01-30 10:23:03 +08:00
										 |  |  | i is the loop counter (starting at 0). | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | When a prime q has been found, B<BN_GENCB_call(cb, 2, 0)> and | 
					
						
							|  |  |  | B<BN_GENCB_call(cb, 3, 0)> are called. | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-30 10:23:03 +08:00
										 |  |  | Before a candidate for p (other than the first) is generated and tested, | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | B<BN_GENCB_call(cb, 0, counter)> is called. | 
					
						
							| 
									
										
										
										
											2000-01-30 10:23:03 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-30 11:32:28 +08:00
										 |  |  | When a candidate for p has passed the test by trial division, | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | B<BN_GENCB_call(cb, 1, -1)> is called. | 
					
						
							| 
									
										
										
										
											2000-01-30 11:32:28 +08:00
										 |  |  | While it is tested by the Miller-Rabin primality test, | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | B<BN_GENCB_call(cb, 1, i)> is called in the outer loop | 
					
						
							| 
									
										
										
										
											2000-01-30 10:23:03 +08:00
										 |  |  | (once for each witness that confirms that the candidate may be prime). | 
					
						
							|  |  |  | i is the loop counter (starting at 0). | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | When p has been found, B<BN_GENCB_call(cb, 2, 1)> is called. | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item * | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | When the generator has been found, B<BN_GENCB_call(cb, 3, 1)> is called. | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-25 17:50:39 +08:00
										 |  |  | =head1 RETURN VALUES | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | DSA_generate_parameters_ex() returns a 1 on success, or 0 otherwise. | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | The error codes can be obtained by L<ERR_get_error(3)>. | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | DSA_generate_parameters() returns a pointer to the DSA structure or | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | B<NULL> if the parameter generation fails. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | =head1 BUGS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | Seed lengths greater than 20 are not supported. | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-11 16:33:09 +08:00
										 |  |  | L<DSA_new(3)>, L<ERR_get_error(3)>, L<RAND_bytes(3)>, | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<DSA_free(3)>, L<BN_generate_prime(3)> | 
					
						
							| 
									
										
										
										
											2000-01-28 03:31:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | =head1 HISTORY | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 07:39:19 +08:00
										 |  |  | DSA_generate_parameters_ex() was deprecated in OpenSSL 3.0. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-03 04:12:12 +08:00
										 |  |  | DSA_generate_parameters() was deprecated in OpenSSL 0.9.8; use | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | DSA_generate_parameters_ex() instead. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 01:01:46 +08:00
										 |  |  | Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-06 21:04:44 +08:00
										 |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |