| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | OPENSSL_init_ssl - OpenSSL (libssl and libcrypto) initialisation | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/ssl.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 21:59:15 +08:00
										 |  |  |  int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | During normal operation OpenSSL (libssl and libcrypto) will allocate various | 
					
						
							|  |  |  | resources at start up that must, subsequently, be freed on close down of the | 
					
						
							|  |  |  | library. Additionally some resources are allocated on a per thread basis (if the | 
					
						
							|  |  |  | application is multi-threaded), and these resources must be freed prior to the | 
					
						
							|  |  |  | thread closing. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | As of version 1.1.0 OpenSSL will automatically allocate all resources that it | 
					
						
							|  |  |  | needs so no explicit initialisation is required. Similarly it will also | 
					
						
							|  |  |  | automatically deinitialise as required. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 07:32:22 +08:00
										 |  |  | However, there may be situations when explicit initialisation is desirable or | 
					
						
							| 
									
										
										
										
											2020-07-17 18:31:26 +08:00
										 |  |  | needed, for example when some nondefault initialisation is required. The | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | function OPENSSL_init_ssl() can be used for this purpose. Calling | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | this function will explicitly initialise BOTH libcrypto and libssl. To | 
					
						
							|  |  |  | explicitly initialise ONLY libcrypto see the | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | L<OPENSSL_init_crypto(3)> function. | 
					
						
							| 
									
										
										
										
											2016-02-09 21:12:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | Numerous internal OpenSSL functions call OPENSSL_init_ssl(). | 
					
						
							| 
									
										
										
										
											2020-07-17 18:31:26 +08:00
										 |  |  | Therefore, in order to perform nondefault initialisation, | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | OPENSSL_init_ssl() MUST be called by application code prior to | 
					
						
							| 
									
										
										
										
											2016-02-09 21:12:34 +08:00
										 |  |  | any other OpenSSL function calls. | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | The B<opts> parameter specifies which aspects of libssl and libcrypto should be | 
					
						
							|  |  |  | initialised. Valid options for libcrypto are described on the | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | L<OPENSSL_init_crypto(3)> page. In addition to any libcrypto | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | specific option the following libssl options can also be used: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item OPENSSL_INIT_NO_LOAD_SSL_STRINGS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | Suppress automatic loading of the libssl error strings. This option is | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | not a default option. Once selected subsequent calls to | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | OPENSSL_init_ssl() with the option | 
					
						
							|  |  |  | B<OPENSSL_INIT_LOAD_SSL_STRINGS> will be ignored. | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item OPENSSL_INIT_LOAD_SSL_STRINGS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | Automatic loading of the libssl error strings. This option is a | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | default option. Once selected subsequent calls to | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | OPENSSL_init_ssl() with the option | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | B<OPENSSL_INIT_LOAD_SSL_STRINGS> will be ignored. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 22:55:48 +08:00
										 |  |  | OPENSSL_init_ssl() takes a B<settings> parameter which can be used to | 
					
						
							|  |  |  | set parameter values.  See L<OPENSSL_init_crypto(3)> for details. | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 21:59:15 +08:00
										 |  |  | =head1 RETURN VALUES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The function OPENSSL_init_ssl() returns 1 on success or 0 on error. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | L<OPENSSL_init_crypto(3)> | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 HISTORY | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-10 00:52:40 +08:00
										 |  |  | The OPENSSL_init_ssl() function was added in OpenSSL 1.1.0. | 
					
						
							| 
									
										
										
										
											2016-02-09 18:17:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-06 20:22:30 +08:00
										 |  |  | Copyright 2016-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 |