diff options
43 files changed, 239 insertions, 291 deletions
diff --git a/apps/openssl.c b/apps/openssl.c index e558b71d22..4a6185b1e2 100644 --- a/apps/openssl.c +++ b/apps/openssl.c @@ -172,8 +172,8 @@ static int apps_startup() #endif /* Set non-default library initialisation settings */ - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ENGINE_ALL_BUILTIN - | OPENSSL_INIT_LOAD_CONFIG, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_ALL_BUILTIN + | OPENSSL_INIT_LOAD_CONFIG, NULL); setup_ui_method(); diff --git a/crypto/async/async.c b/crypto/async/async.c index 024aaf6122..db511442ba 100644 --- a/crypto/async/async.c +++ b/crypto/async/async.c @@ -97,7 +97,7 @@ err: static async_ctx *async_get_ctx(void) { - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ASYNC, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ASYNC, NULL); return async_arch_get_ctx(); } @@ -361,7 +361,7 @@ int ASYNC_init_thread(size_t max_size, size_t init_size) return 0; } - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ASYNC, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ASYNC, NULL); if (!ossl_init_thread_start(OPENSSL_INIT_THREAD_ASYNC)) { ASYNCerr(ASYNC_F_ASYNC_INIT_THREAD, ERR_R_MALLOC_FAILURE); return 0; diff --git a/crypto/comp/c_zlib.c b/crypto/comp/c_zlib.c index 899dadfe21..619765ceff 100644 --- a/crypto/comp/c_zlib.c +++ b/crypto/comp/c_zlib.c @@ -291,7 +291,7 @@ COMP_METHOD *COMP_zlib(void) zlib_loaded++; if (zlib_loaded) meth = &zlib_stateful_method; - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ZLIB, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ZLIB, NULL); } } #endif diff --git a/crypto/conf/conf_sap.c b/crypto/conf/conf_sap.c index e0d6c5aad9..3b42993143 100644 --- a/crypto/conf/conf_sap.c +++ b/crypto/conf/conf_sap.c @@ -83,7 +83,7 @@ void OPENSSL_config(const char *config_name) settings[0].value.type_string = config_name; settings[1].name = OPENSSL_INIT_SET_END; settings[1].value.type_int = 0; - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_LOAD_CONFIG, settings); + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, settings); } void openssl_config_internal(const char *config_name) diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c index b53081830f..1b2a365baa 100644 --- a/crypto/cryptlib.c +++ b/crypto/cryptlib.c @@ -234,7 +234,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: - OPENSSL_INIT_thread_stop(); + OPENSSL_thread_stop(); break; case DLL_PROCESS_DETACH: break; diff --git a/crypto/err/err.c b/crypto/err/err.c index 7e8bcc1cce..d92e41e3e9 100644 --- a/crypto/err/err.c +++ b/crypto/err/err.c @@ -894,8 +894,7 @@ ERR_STATE *ERR_get_state(void) * the first one that we just replaced. */ ERR_STATE_free(tmpp); - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, - NULL); + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); /* Ignore failures from this */ ossl_init_thread_start(OPENSSL_INIT_THREAD_ERR_STATE); } diff --git a/crypto/evp/names.c b/crypto/evp/names.c index 97a37a5815..f6e5004471 100644 --- a/crypto/evp/names.c +++ b/crypto/evp/names.c @@ -110,7 +110,7 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name) { const EVP_CIPHER *cp; - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL); cp = (const EVP_CIPHER *)OBJ_NAME_get(name, OBJ_NAME_TYPE_CIPHER_METH); return (cp); @@ -120,7 +120,7 @@ const EVP_MD *EVP_get_digestbyname(const char *name) { const EVP_MD *cp; - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL); cp = (const EVP_MD *)OBJ_NAME_get(name, OBJ_NAME_TYPE_MD_METH); return (cp); @@ -166,7 +166,7 @@ void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, { struct doall_cipher dc; - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL); dc.fn = fn; dc.arg = arg; @@ -179,7 +179,7 @@ void EVP_CIPHER_do_all_sorted(void (*fn) (const EVP_CIPHER *ciph, { struct doall_cipher dc; - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL); dc.fn = fn; dc.arg = arg; @@ -207,7 +207,7 @@ void EVP_MD_do_all(void (*fn) (const EVP_MD *md, { struct doall_md dc; - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL); dc.fn = fn; dc.arg = arg; @@ -220,7 +220,7 @@ void EVP_MD_do_all_sorted(void (*fn) (const EVP_MD *md, { struct doall_md dc; - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL); + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL); dc.fn = fn; dc.arg = arg; diff --git a/crypto/include/internal/conf.h b/crypto/include/internal/conf.h deleted file mode 100644 index 8feaf62328..0000000000 --- a/crypto/include/internal/conf.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Written by Matt Caswell for the OpenSSL project - */ -/* ==================================================================== - * Copyright (c) 2015 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#include <openssl/conf.h> - -void openssl_config_internal(const char *config_name); -void openssl_no_config_internal(void); - diff --git a/crypto/init.c b/crypto/init.c index e2f3583b45..04191ded62 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -268,7 +268,7 @@ static void ossl_init_base(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_base: Setting up stop handlers\n"); #endif ossl_init_setup_thread_stop(); - atexit(OPENSSL_INIT_library_stop); + atexit(OPENSSL_cleanup); OPENSSL_cpuid_setup(); base_inited = 1; } @@ -499,7 +499,7 @@ static void ossl_init_thread_stop(struct thread_local_inits_st *locals) ossl_init_thread_stop_cleanup(); } -void OPENSSL_INIT_thread_stop(void) +void OPENSSL_thread_stop(void) { ossl_init_thread_stop( (struct thread_local_inits_st *)ossl_init_get_thread_local(0)); @@ -531,7 +531,7 @@ int ossl_init_thread_start(uint64_t opts) return 1; } -void OPENSSL_INIT_library_stop(void) +void OPENSSL_cleanup(void) { OPENSSL_INIT_STOP *currhandler, *lasthandler; @@ -565,7 +565,7 @@ void OPENSSL_INIT_library_stop(void) if (zlib_inited) { #ifdef OPENSSL_INIT_DEBUG - fprintf(stderr, "OPENSSL_INIT: OPENSSL_INIT_library_stop: " + fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: " "COMP_zlib_cleanup()\n"); #endif COMP_zlib_cleanup(); @@ -574,7 +574,7 @@ void OPENSSL_INIT_library_stop(void) #ifndef OPENSSL_NO_ENGINE if (engine_inited) { # ifdef OPENSSL_INIT_DEBUG - fprintf(stderr, "OPENSSL_INIT: OPENSSL_INIT_library_stop: " + fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: " "ENGINE_cleanup()\n"); # endif ENGINE_cleanup(); @@ -583,7 +583,7 @@ void OPENSSL_INIT_library_stop(void) if (load_crypto_strings_inited) { #ifdef OPENSSL_INIT_DEBUG - fprintf(stderr, "OPENSSL_INIT: OPENSSL_INIT_library_stop: " + fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: " "ERR_free_strings()\n"); #endif ERR_free_strings(); @@ -626,8 +626,7 @@ static const OPENSSL_INIT_SETTINGS *ossl_init_get_setting( * called prior to any threads making calls to any OpenSSL functions, * i.e. passing a non-null settings value is assumed to be single-threaded. */ -void OPENSSL_INIT_crypto_library_start(uint64_t opts, - const OPENSSL_INIT_SETTINGS *settings) +void OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) { /* XXX TODO WARNING To be updated to return a value not assert. */ assert(!stopped); @@ -719,7 +718,7 @@ void OPENSSL_INIT_crypto_library_start(uint64_t opts, } } -int OPENSSL_INIT_register_stop_handler(void (*handler)(void)) +int OPENSSL_atexit(void (*handler)(void)) { OPENSSL_INIT_STOP *newhand; diff --git a/crypto/mem_dbg.c b/crypto/mem_dbg.c index c3d98caec9..adabb2db95 100644 --- a/crypto/mem_dbg.c +++ b/crypto/mem_dbg.c @@ -640,7 +640,7 @@ int CRYPTO_mem_leaks(BIO *b) return 1; /* Ensure all resources are released */ - OPENSSL_INIT_library_stop(); + OPENSSL_cleanup(); CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE); diff --git a/doc/apps/errstr.pod b/doc/apps/errstr.pod index 02bd3dcd7b..7d1fee47cb 100644 --- a/doc/apps/errstr.pod +++ b/doc/apps/errstr.pod @@ -31,9 +31,6 @@ to produce the error message: =head1 SEE ALSO -L<err(3)>, -L<ERR_load_crypto_strings(3)>, -L<SSL_load_error_strings(3)> - +L<err(3)> =cut diff --git a/doc/crypto/BIO_f_ssl.pod b/doc/crypto/BIO_f_ssl.pod index bd9b605602..4d49dc789b 100644 --- a/doc/crypto/BIO_f_ssl.pod +++ b/doc/crypto/BIO_f_ssl.pod @@ -140,10 +140,6 @@ unencrypted example in L<BIO_s_connect(3)>. SSL_CTX *ctx; SSL *ssl; - ERR_load_crypto_strings(); - ERR_load_SSL_strings(); - OpenSSL_add_all_algorithms(); - /* We would seed the PRNG here if the platform didn't * do it automatically */ @@ -207,10 +203,6 @@ a client and also echoes the request to standard output. SSL_CTX *ctx; SSL *ssl; - ERR_load_crypto_strings(); - ERR_load_SSL_strings(); - OpenSSL_add_all_algorithms(); - /* Might seed PRNG here */ ctx = SSL_CTX_new(TLS_server_method()); diff --git a/doc/crypto/BIO_s_accept.pod b/doc/crypto/BIO_s_accept.pod index 2feb72bc83..ec8fa3a0ca 100644 --- a/doc/crypto/BIO_s_accept.pod +++ b/doc/crypto/BIO_s_accept.pod @@ -160,7 +160,7 @@ This example accepts two connections on port 4444, sends messages down each and finally closes both down. BIO *abio, *cbio, *cbio2; - ERR_load_crypto_strings(); + abio = BIO_new_accept("4444"); /* First call to BIO_accept() sets up accept BIO */ diff --git a/doc/crypto/BIO_s_connect.pod b/doc/crypto/BIO_s_connect.pod index 648e8ed42b..7adb78da70 100644 --- a/doc/crypto/BIO_s_connect.pod +++ b/doc/crypto/BIO_s_connect.pod @@ -164,7 +164,7 @@ to retrieve a page and copy the result to standard output. BIO *cbio, *out; int len; char tmpbuf[1024]; - ERR_load_crypto_strings(); + cbio = BIO_new_connect("localhost:http"); out = BIO_new_fp(stdout, BIO_NOCLOSE); if(BIO_do_connect(cbio) <= 0) { diff --git a/doc/crypto/CMS_decrypt.pod b/doc/crypto/CMS_decrypt.pod index 06bc1062bc..4b1e97e8fd 100644 --- a/doc/crypto/CMS_decrypt.pod +++ b/doc/crypto/CMS_decrypt.pod @@ -22,9 +22,6 @@ is detached. It will normally be set to NULL. =head1 NOTES -OpenSSL_add_all_algorithms() (or equivalent) should be called before using this -function or errors about unknown algorithms will occur. - Although the recipients certificate is not needed to decrypt the data it is needed to locate the appropriate (of possible several) recipients in the CMS structure. diff --git a/doc/crypto/CONF_modules_load_file.pod b/doc/crypto/CONF_modules_load_file.pod index 53202a7d57..84f7184c7a 100644 --- a/doc/crypto/CONF_modules_load_file.pod +++ b/doc/crypto/CONF_modules_load_file.pod @@ -45,12 +45,6 @@ return an error. B<CONF_MFLAGS_DEFAULT_SECTION> if set and B<appname> is not NULL will use the default section pointed to by B<openssl_conf> if B<appname> does not exist. -Applications should call these functions after loading builtin modules using -OPENSSL_load_builtin_modules(), any ENGINEs for example using -ENGINE_load_builtin_engines(), any algorithms for example -OPENSSL_add_all_algorithms() and (if the application uses libssl) -SSL_library_init(). - By using CONF_modules_load_file() with appropriate flags an application can customise application configuration to best suit its needs. In some cases the use of a configuration file is optional and its absence is not an error: in diff --git a/doc/crypto/ERR_error_string.pod b/doc/crypto/ERR_error_string.pod index 68d1a535e8..81ca61c9db 100644 --- a/doc/crypto/ERR_error_string.pod +++ b/doc/crypto/ERR_error_string.pod @@ -42,10 +42,6 @@ ERR_lib_error_string(), ERR_func_error_string() and ERR_reason_error_string() return the library name, function name and reason string respectively. -The OpenSSL error strings should be loaded by calling -L<ERR_load_crypto_strings(3)> or, for SSL -applications, L<SSL_load_error_strings(3)> -first. If there is no text string registered for the given error code, the error string will contain the numeric code. @@ -64,8 +60,6 @@ none is registered for the error code. =head1 SEE ALSO L<err(3)>, L<ERR_get_error(3)>, -L<ERR_load_crypto_strings(3)>, -L<SSL_load_error_strings(3)> L<ERR_print_errors(3)> =cut diff --git a/doc/crypto/ERR_load_crypto_strings.pod b/doc/crypto/ERR_load_crypto_strings.pod index b4af1fc509..88678d9020 100644 --- a/doc/crypto/ERR_load_crypto_strings.pod +++ b/doc/crypto/ERR_load_crypto_strings.pod @@ -37,4 +37,10 @@ ERR_free_strings() return no values. L<err(3)>, L<ERR_error_string(3)> +=head1 HISTORY + +The ERR_load_crypto_strings(), SSL_load_error_strings(), and +ERR_free_strings() functions were deprecated in OpenSSL 1.1.0 by +OPENSSL_init_crypto() and OPENSSL_init_ssl(). + =cut diff --git a/doc/crypto/ERR_print_errors.pod b/doc/crypto/ERR_print_errors.pod index 3b0defe407..aec8a1029a 100644 --- a/doc/crypto/ERR_print_errors.pod +++ b/doc/crypto/ERR_print_errors.pod @@ -39,8 +39,6 @@ ERR_print_errors() and ERR_print_errors_fp() return no values. =head1 SEE ALSO L<err(3)>, L<ERR_error_string(3)>, -L<ERR_get_error(3)>, -L<ERR_load_crypto_strings(3)>, -L<SSL_load_error_strings(3)> +L<ERR_get_error(3)>. =cut diff --git a/doc/crypto/EVP_DigestInit.pod b/doc/crypto/EVP_DigestInit.pod index 1b98c1c0fa..db9c04004e 100644 --- a/doc/crypto/EVP_DigestInit.pod +++ b/doc/crypto/EVP_DigestInit.pod @@ -143,8 +143,7 @@ returns is of zero length. EVP_get_digestbyname(), EVP_get_digestbynid() and EVP_get_digestbyobj() return an B<EVP_MD> structure when passed a digest name, a digest NID or -an ASN1_OBJECT structure respectively. The digest table must be initialized -using, for example, OpenSSL_add_all_digests() for these functions to work. +an ASN1_OBJECT structure respectively. =head1 RETURN VALUES @@ -210,8 +209,6 @@ digest name passed on the command line. unsigned char md_value[EVP_MAX_MD_SIZE]; int md_len, i; - OpenSSL_add_all_digests(); - if(!argv[1]) { printf("Usage: mdtest digestname\n"); exit(1); diff --git a/doc/crypto/OPENSSL_config.pod b/doc/crypto/OPENSSL_config.pod index fbf8b6d2c3..4c82566097 100644 --- a/doc/crypto/OPENSSL_config.pod +++ b/doc/crypto/OPENSSL_config.pod @@ -60,4 +60,9 @@ L<conf(5)>, L<CONF_modules_load_file(3)>, L<CONF_modules_free(3)> +=head1 HISTORY + +The OPENSSL_no_config() and OPENSSL_config() functions were +deprecated in OpenSSL 1.1.0 by OPENSSL_init_crypto(). + =cut diff --git a/doc/crypto/OPENSSL_INIT_crypto_library_start.pod b/doc/crypto/OPENSSL_init_crypto.pod index 16f95fe604..11bc1c7f7b 100644 --- a/doc/crypto/OPENSSL_INIT_crypto_library_start.pod +++ b/doc/crypto/OPENSSL_init_crypto.pod @@ -2,19 +2,18 @@ =head1 NAME -OPENSSL_INIT_crypto_library_start, OPENSSL_INIT_library_stop, -OPENSSL_INIT_register_stop_handler, OPENSSL_INIT_thread_stop - OpenSSL +OPENSSL_init_crypto, OPENSSL_cleanup, +OPENSSL_atexit, OPENSSL_thread_stop - OpenSSL initialisation and deinitialisation functions =head1 SYNOPSIS #include <openssl/crypto.h> - void OPENSSL_INIT_library_stop(void); - void OPENSSL_INIT_crypto_library_start(uint64_t opts, - const OPENSSL_INIT_SETTINGS *settings); - int OPENSSL_INIT_register_stop_handler(void (*handler)(void)); - void OPENSSL_INIT_thread_stop(void); + void OPENSSL_cleanup(void); + void OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + int OPENSSL_atexit(void (*handler)(void)); + void OPENSSL_thread_stop(void); =head1 DESCRIPTION @@ -30,13 +29,13 @@ automatically deinitialise as required. However, there way be situations when explicit initialisation is desirable or needed, for example when some non-default initialisation is required. The -function OPENSSL_INIT_crypto_library_start() can be used for this purpose for -libcrypto (see also L<OPENSSL_INIT_ssl_library_start(3)> for the libssl +function OPENSSL_init_crypto() can be used for this purpose for +libcrypto (see also L<OPENSSL_init_ssl(3)> for the libssl equivalent). -Numerous internal OpenSSL functions call OPENSSL_INIT_crypto_library_start(). +Numerous internal OpenSSL functions call OPENSSL_init_crypto(). Therefore, in order to perform non-default initialisation, -OPENSSL_INIT_crypto_library_start() MUST be called by application code prior to +OPENSSL_init_crypto() MUST be called by application code prior to any other OpenSSL function calls. The B<opts> parameter specifies which aspects of libcrypto should be @@ -46,49 +45,45 @@ initialised. Valid options are: =item OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS -Suppress automatic loading of the libcrypto error strings. With this option the -library will not automatically call ERR_load_crypto_strings(). This option is +Suppress automatic loading of the libcrypto error strings. This option is not a default option. Once selected subsequent calls to -OPENSSL_INIT_crypto_library_start() with the option -B<OPENSSL_INIT_LOAD_CRYPTO_STRINGS> will be ignored. Applications may call -ERR_load_crypto_strings() directly if they wish even if this option has been -selected. If they do so then they must also explicitly call ERR_free_strings() -on application close down. +OPENSSL_init_crypto() with the option +B<OPENSSL_INIT_LOAD_CRYPTO_STRINGS> will be ignored. =item OPENSSL_INIT_LOAD_CRYPTO_STRINGS Automatic loading of the libcrypto error strings. With this option the -library will automatically call ERR_load_crypto_strings(). This option is a -default option. Once selected subsequent calls to -OPENSSL_INIT_crypto_library_start() with the option +library will automatically load the libcrypto error strings. +This option is a default option. Once selected subsequent calls to +OPENSSL_init_crypto() with the option B<OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS> will be ignored. =item OPENSSL_INIT_ADD_ALL_CIPHERS With this option the library will automatically load and make available all libcrypto ciphers. This option is a default option. Once selected subsequent -calls to OPENSSL_INIT_crypto_library_start() with the option +calls to OPENSSL_init_crypto() with the option B<OPENSSL_INIT_NO_ADD_ALL_CIPHERS> will be ignored. =item OPENSSL_INIT_ADD_ALL_DIGESTS With this option the library will automatically load and make available all libcrypto digests. This option is a default option. Once selected subsequent -calls to OPENSSL_INIT_crypto_library_start() with the option +calls to OPENSSL_init_crypto() with the option B<OPENSSL_INIT_NO_ADD_ALL_CIPHERS> will be ignored. =item OPENSSL_INIT_NO_ADD_ALL_CIPHERS With this option the library will suppress automatic loading of libcrypto ciphers. This option is not a default option. Once selected subsequent -calls to OPENSSL_INIT_crypto_library_start() with the option +calls to OPENSSL_init_crypto() with the option B<OPENSSL_INIT_ADD_ALL_CIPHERS> will be ignored. =item OPENSSL_INIT_NO_ADD_ALL_DIGESTS With this option the library will suppress automatic loading of libcrypto digests. This option is not a default option. Once selected subsequent -calls to OPENSSL_INIT_crypto_library_start() with the option +calls to OPENSSL_init_crypto() with the option B<OPENSSL_INIT_ADD_ALL_DIGESTS> will be ignored. =item OPENSSL_INIT_LOAD_CONFIG @@ -168,30 +163,30 @@ configuration file is assumed. For example { OPENSSL_INIT_SET_CONF_FILENAME, .value.type_string = "myconf.cnf" }, { OPENSSL_INIT_SET_END, .value.type_int = 0 } }; - OPENSSL_INIT_crypto_library_start(OPENSSL_INIT_LOAD_CONFIG, settings); + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, settings); The B<settings> parameter must be an array of OPENSSL_INIT_SETTINGS values terminated with an OPENSSL_INIT_SET_END entry. -The OPENSSL_INIT_library_stop() function deinitialises OpenSSL (both libcrypto +The OPENSSL_cleanup() function deinitialises OpenSSL (both libcrypto and libssl). All resources allocated by OpenSSL are freed. Typically there should be no need to call this function directly as it |