#include <internal/cryptlib_int.h>
#include <openssl/err.h>
#include <openssl/evp.h>
-#if 0
#include <internal/evp_int.h>
#include <internal/conf.h>
#include <internal/async.h>
#include <internal/engine.h>
-#endif
-#include <openssl/conf.h>
-#include <openssl/async.h>
-#include <openssl/engine.h>
#include <openssl/comp.h>
-#if 0
#include <internal/err.h>
-#endif
#include <stdlib.h>
+static void ossl_init_thread_stop(struct thread_local_inits_st *locals);
+
/* Implement "once" functionality */
#if !defined(OPENSSL_THREADS)
typedef int OPENSSL_INIT_ONCE;
static void ossl_init_load_crypto_strings(void)
{
-#ifndef OPENSSL_NO_ERR
+ /*
+ * OPENSSL_NO_AUTOERRINIT is provided here to prevent at compile time
+ * pulling in all the error strings during static linking
+ */
+#if !defined(OPENSSL_NO_ERR) && !defined(OPENSSL_NO_AUTOERRINIT)
# ifdef OPENSSL_INIT_DEBUG
fprintf(stderr, "OPENSSL_INIT: ossl_init_load_crypto_strings: "
"err_load_crypto_strings_intern()\n");
# endif
-#if 0
err_load_crypto_strings_intern();
-#endif
#endif
load_crypto_strings_inited = 1;
}
fprintf(stderr, "OPENSSL_INIT: ossl_init_add_all_ciphers: "
"openssl_add_all_ciphers_internal()\n");
# endif
-#if 0
openssl_add_all_ciphers_internal();
-#endif
# ifndef OPENSSL_NO_ENGINE
# if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)
ENGINE_setup_bsd_cryptodev();
fprintf(stderr, "OPENSSL_INIT: ossl_init_add_all_digests: "
"openssl_add_all_digests_internal()\n");
# endif
-#if 0
openssl_add_all_digests_internal();
-#endif
# ifndef OPENSSL_NO_ENGINE
# if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)
ENGINE_setup_bsd_cryptodev();
"OPENSSL_INIT: ossl_init_config: openssl_config_internal(%s)\n",
config_filename==NULL?"NULL":config_filename);
#endif
-#if 0
openssl_config_internal(config_filename);
-#endif
config_inited = 1;
}
static void ossl_init_no_config(void)
fprintf(stderr,
"OPENSSL_INIT: ossl_init_config: openssl_no_config_internal()\n");
#endif
-#if 0
openssl_no_config_internal();
-#endif
config_inited = 1;
}
#ifdef OPENSSL_INIT_DEBUG
fprintf(stderr, "OPENSSL_INIT: ossl_init_async: async_init()\n");
#endif
-#if 0
async_init();
-#endif
async_inited = 1;
}
fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_openssl: "
"engine_load_openssl_internal()\n");
# endif
-#if 0
engine_load_openssl_internal();
-#endif
engine_inited = 1;
}
# if !defined(OPENSSL_NO_HW) && \
fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_cryptodev: "
"engine_load_cryptodev_internal()\n");
# endif
-#if 0
engine_load_cryptodev_internal();
-#endif
engine_inited = 1;
}
# endif
fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_rdrand: "
"engine_load_rdrand_internal()\n");
# endif
-#if 0
engine_load_rdrand_internal();
-#endif
engine_inited = 1;
}
# endif
fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_dynamic: "
"engine_load_dynamic_internal()\n");
# endif
-#if 0
engine_load_dynamic_internal();
-#endif
engine_inited = 1;
}
# ifndef OPENSSL_NO_STATIC_ENGINE
fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_padlock: "
"engine_load_padlock_internal()\n");
# endif
-#if 0
engine_load_padlock_internal();
-#endif
engine_inited = 1;
}
# endif
fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_capi: "
"engine_load_capi_internal()\n");
# endif
-#if 0
engine_load_capi_internal();
-#endif
engine_inited = 1;
}
# endif
fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_dasync: "
"engine_load_dasync_internal()\n");
# endif
-#if 0
engine_load_dasync_internal();
-#endif
engine_inited = 1;
}
# endif
zlib_inited = 1;
}
-void ossl_init_thread_stop(struct thread_local_inits_st *locals)
+static void ossl_init_thread_stop(struct thread_local_inits_st *locals)
{
/* Can't do much about this */
if (locals == NULL)
ossl_init_thread_stop_cleanup();
}
+void OPENSSL_INIT_thread_stop(void)
+{
+ ossl_init_thread_stop(
+ (struct thread_local_inits_st *)ossl_init_get_thread_local(0));
+}
+
int ossl_init_thread_start(uint64_t opts)
{
struct thread_local_inits_st *locals = ossl_init_get_thread_local(1);
}
if (opts & OPENSSL_INIT_LOAD_CONFIG) {
+ CRYPTO_w_lock(CRYPTO_LOCK_INIT);
if (settings != NULL) {
const OPENSSL_INIT_SETTINGS *curr;
curr = ossl_init_get_setting(settings,
OPENSSL_INIT_SET_CONF_FILENAME);
- config_filename = curr == NULL ? NULL : curr->value.type_string;
+ config_filename = (curr == NULL) ? NULL : curr->value.type_string;
+ } else {
+ config_filename = NULL;
}
ossl_init_once_run(&config, ossl_init_config);
+ CRYPTO_w_unlock(CRYPTO_LOCK_INIT);
}
if (opts & OPENSSL_INIT_ASYNC) {