|
|
|
@ -37,6 +37,13 @@
|
|
|
|
|
#define GET_CRYPTOLIB_SYMBOL(a) ((_cryptoLib->hasSymbol(a)) ? _cryptoLib->symbol(a) : NULL)
|
|
|
|
|
#define GET_SSLLIB_SYMBOL(a) ((_sslLib->hasSymbol(a)) ? _sslLib->symbol(a) : NULL)
|
|
|
|
|
|
|
|
|
|
// taken from OpenSSL 1.1 header, used to call OPENSSL_init_crypto
|
|
|
|
|
#if !defined(OPENSSL_INIT_ADD_ALL_CIPHERS)
|
|
|
|
|
# define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L
|
|
|
|
|
# define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L
|
|
|
|
|
# define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
extern "C" {
|
|
|
|
|
#ifdef KSSL_HAVE_SSL
|
|
|
|
|
static int (*K_SSL_connect) (SSL *) = 0L;
|
|
|
|
@ -675,8 +682,22 @@ KConfig *cfg;
|
|
|
|
|
|
|
|
|
|
// Initialize the library (once only!)
|
|
|
|
|
void *x;
|
|
|
|
|
x = GET_SSLLIB_SYMBOL("SSL_library_init");
|
|
|
|
|
if (_cryptoLib) {
|
|
|
|
|
x = GET_SSLLIB_SYMBOL("OPENSSL_init_ssl");
|
|
|
|
|
if (x) {
|
|
|
|
|
// OpenSSL >= 1.1
|
|
|
|
|
if (_cryptoLib) {
|
|
|
|
|
((int (*)(unsigned long, void*))x)(0, NULL);
|
|
|
|
|
x = GET_CRYPTOLIB_SYMBOL("OPENSSL_init_crypto");
|
|
|
|
|
if (x) ((int (*)(unsigned long, void*))x)(OPENSSL_INIT_ADD_ALL_CIPHERS
|
|
|
|
|
| OPENSSL_INIT_ADD_ALL_DIGESTS
|
|
|
|
|
| OPENSSL_INIT_LOAD_CONFIG,
|
|
|
|
|
NULL);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// OpenSSL < 1.1
|
|
|
|
|
x = GET_SSLLIB_SYMBOL("SSL_library_init");
|
|
|
|
|
if (_cryptoLib) {
|
|
|
|
|
if (x) ((int (*)())x)();
|
|
|
|
|
x = GET_CRYPTOLIB_SYMBOL("OpenSSL_add_all_algorithms");
|
|
|
|
|
if (!x)
|
|
|
|
@ -705,6 +726,7 @@ KConfig *cfg;
|
|
|
|
|
if (!x)
|
|
|
|
|
x = GET_CRYPTOLIB_SYMBOL("OPENSSL_add_all_digests");
|
|
|
|
|
if (x) ((void (*)())x)();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|