| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | DH_generate_parameters_ex, DH_generate_parameters, | 
					
						
							| 
									
										
										
										
											2017-11-01 00:45:24 +08:00
										 |  |  | DH_check, DH_check_params, | 
					
						
							|  |  |  | DH_check_ex, DH_check_params_ex, DH_check_pub_key_ex | 
					
						
							|  |  |  | - generate and check Diffie-Hellman | 
					
						
							| 
									
										
										
										
											2017-01-16 01:20:49 +08:00
										 |  |  | parameters | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/dh.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-03 17:05:31 +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)>: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-19 21:27:53 +08:00
										 |  |  |  int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, BN_GENCB *cb); | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |  int DH_check(DH *dh, int *codes); | 
					
						
							| 
									
										
										
										
											2017-01-16 01:20:49 +08:00
										 |  |  |  int DH_check_params(DH *dh, int *codes); | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-01 00:45:24 +08:00
										 |  |  |  int DH_check_ex(const DH *dh); | 
					
						
							|  |  |  |  int DH_check_params_ex(const DH *dh); | 
					
						
							|  |  |  |  int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							|  |  |  |  DH *DH_generate_parameters(int prime_len, int generator, | 
					
						
							| 
									
										
										
										
											2017-01-21 02:58:49 +08:00
										 |  |  |                             void (*callback)(int, int, void *), void *cb_arg); | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-03 17:05:31 +08:00
										 |  |  | All of the functions described on this page are deprecated. | 
					
						
							|  |  |  | Applications should instead use L<EVP_PKEY_check(3)>, | 
					
						
							|  |  |  | L<EVP_PKEY_public_check(3)>, L<EVP_PKEY_private_check(3)> and | 
					
						
							|  |  |  | L<EVP_PKEY_param_check(3)>. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | DH_generate_parameters_ex() generates Diffie-Hellman parameters that can | 
					
						
							|  |  |  | be shared among a group of users, and stores them in the provided B<DH> | 
					
						
							|  |  |  | structure. The pseudo-random number generator must be | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | seeded before calling it. | 
					
						
							|  |  |  | The parameters generated by DH_generate_parameters_ex() should not be used in | 
					
						
							|  |  |  | signature schemes. | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | B<prime_len> is the length in bits of the safe prime to be generated. | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  | B<generator> is a small number E<gt> 1, typically 2 or 5. | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +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 | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | called as described in L<BN_generate_prime(3)> while a random prime | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | number is generated, and when a prime has been found, B<BN_GENCB_call(cb, 3, 0)> | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | is called. See L<BN_generate_prime_ex(3)> for information on | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | the BN_GENCB_call() function. | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | DH_generate_parameters() is similar to DH_generate_prime_ex() but | 
					
						
							|  |  |  | expects an old-style callback function; see | 
					
						
							|  |  |  | L<BN_generate_prime(3)> for information on the old-style callback. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-16 01:20:49 +08:00
										 |  |  | DH_check_params() confirms that the B<p> and B<g> are likely enough to | 
					
						
							|  |  |  | be valid. | 
					
						
							|  |  |  | This is a lightweight check, if a more thorough check is needed, use | 
					
						
							|  |  |  | DH_check(). | 
					
						
							|  |  |  | The value of B<*codes> is updated with any problems found. | 
					
						
							|  |  |  | If B<*codes> is zero then no problems were found, otherwise the | 
					
						
							|  |  |  | following bits may be set: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_CHECK_P_NOT_PRIME | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The parameter B<p> has been determined to not being an odd prime. | 
					
						
							|  |  |  | Note that the lack of this bit doesn't guarantee that B<p> is a | 
					
						
							|  |  |  | prime. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_NOT_SUITABLE_GENERATOR | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The generator B<g> is not suitable. | 
					
						
							|  |  |  | Note that the lack of this bit doesn't guarantee that B<g> is | 
					
						
							|  |  |  | suitable, unless B<p> is known to be a strong prime. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-07 05:38:49 +08:00
										 |  |  | =item DH_MODULUS_TOO_SMALL | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The modulus is too small. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_MODULUS_TOO_LARGE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The modulus is too large. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-16 01:20:49 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-27 20:26:03 +08:00
										 |  |  | DH_check() confirms that the Diffie-Hellman parameters B<dh> are valid. The | 
					
						
							|  |  |  | value of B<*codes> is updated with any problems found. If B<*codes> is zero then | 
					
						
							|  |  |  | no problems were found, otherwise the following bits may be set: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_CHECK_P_NOT_PRIME | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The parameter B<p> is not prime. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_CHECK_P_NOT_SAFE_PRIME | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The parameter B<p> is not a safe prime and no B<q> value is present. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_UNABLE_TO_CHECK_GENERATOR | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The generator B<g> cannot be checked for suitability. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_NOT_SUITABLE_GENERATOR | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The generator B<g> is not suitable. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_CHECK_Q_NOT_PRIME | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The parameter B<q> is not prime. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_CHECK_INVALID_Q_VALUE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The parameter B<q> is invalid. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH_CHECK_INVALID_J_VALUE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The parameter B<j> is invalid. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-08 20:59:50 +08:00
										 |  |  | DH_check_ex(), DH_check_params() and DH_check_pub_key_ex() are similar to | 
					
						
							|  |  |  | DH_check() and DH_check_params() respectively, but the error reasons are added | 
					
						
							|  |  |  | to the thread's error queue instead of provided as return values from the | 
					
						
							|  |  |  | function. | 
					
						
							| 
									
										
										
										
											2017-11-01 00:45:24 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | =head1 RETURN VALUES | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-16 01:20:49 +08:00
										 |  |  | DH_generate_parameters_ex(), DH_check() and DH_check_params() return 1 | 
					
						
							|  |  |  | if the check could be performed, 0 otherwise. | 
					
						
							| 
									
										
										
										
											2013-06-13 06:42:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | DH_generate_parameters() returns a pointer to the DH structure or NULL if | 
					
						
							|  |  |  | the parameter generation fails. | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-01 00:45:24 +08:00
										 |  |  | DH_check_ex(), DH_check_params() and DH_check_pub_key_ex() return 1 if the | 
					
						
							|  |  |  | check is successful, 0 for failed. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | The error codes can be obtained by L<ERR_get_error(3)>. | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-11 16:33:09 +08:00
										 |  |  | L<DH_new(3)>, L<ERR_get_error(3)>, L<RAND_bytes(3)>, | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<DH_free(3)> | 
					
						
							| 
									
										
										
										
											2000-01-23 04:05:23 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | =head1 HISTORY | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-03 17:05:31 +08:00
										 |  |  | All of these functions were deprecated in OpenSSL 3.0. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-03 04:12:12 +08:00
										 |  |  | DH_generate_parameters() was deprecated in OpenSSL 0.9.8; use | 
					
						
							| 
									
										
										
										
											2017-09-02 21:35:50 +08:00
										 |  |  | DH_generate_parameters_ex() instead. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-23 20:55:52 +08:00
										 |  |  | Copyright 2000-2020 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 |