OpenSSL 1.1 moved the DSO_* API into an internal API, so we want to use dlopen() and friends instead. --- src/Makefile.am | 1 + src/e_ibmca.c | 57 ++++++++++++++++++++++++++------------------------------- 2 files changed, 27 insertions(+), 31 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am index fbebf39..58e7f4e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,7 @@ lib_LTLIBRARIES=libibmca.la libibmca_la_SOURCES=e_ibmca.c e_ibmca_err.c +libibmca_la_LIBADD=-ldl libibmca_la_LDFLAGS=-module -version-info 0:2:0 -shared -no-undefined -avoid-version dist_libibmca_la_SOURCES=e_ibmca_err.h e_os.h cryptlib.h diff --git a/src/e_ibmca.c b/src/e_ibmca.c index 57452b1..925372b 100644 --- a/src/e_ibmca.c +++ b/src/e_ibmca.c @@ -83,11 +83,7 @@ #include <ica_api.h> #include "e_ibmca_err.h" -#ifdef OLDER_OPENSSL -#include <openssl/dso.h> -#else -typedef struct dso_st DSO; -#endif +#include <dlfcn.h> #define IBMCA_LIB_NAME "ibmca engine" @@ -1530,7 +1526,7 @@ static int ibmca_destroy(ENGINE * e) * operating with global locks, so this should be thread-safe * implicitly. */ -static DSO *ibmca_dso = NULL; +void *ibmca_dso = NULL; /* These are the function pointers that are (un)set when the library has * successfully (un)loaded. */ @@ -1641,42 +1637,41 @@ static int ibmca_init(ENGINE * e) /* WJH XXX check name translation */ - ibmca_dso = DSO_load(NULL, LIBICA_NAME, NULL, - /* DSO_FLAG_NAME_TRANSLATION */ 0); + ibmca_dso = dlopen(LIBICA_NAME, RTLD_NOW); if (ibmca_dso == NULL) { IBMCAerr(IBMCA_F_IBMCA_INIT, IBMCA_R_DSO_FAILURE); goto err; } - if (!(p_ica_open_adapter = (ica_open_adapter_t)DSO_bind_func(ibmca_dso, "ica_open_adapter")) - || !(p_ica_close_adapter = (ica_close_adapter_t)DSO_bind_func(ibmca_dso, + if (!(p_ica_open_adapter = (ica_open_adapter_t)dlsym(ibmca_dso, "ica_open_adapter")) + || !(p_ica_close_adapter = (ica_close_adapter_t)dlsym(ibmca_dso, "ica_close_adapter")) - || !(p_ica_rsa_mod_expo = (ica_rsa_mod_expo_t)DSO_bind_func(ibmca_dso, + || !(p_ica_rsa_mod_expo = (ica_rsa_mod_expo_t)dlsym(ibmca_dso, "ica_rsa_mod_expo")) || !(p_ica_random_number_generate = - (ica_random_number_generate_t)DSO_bind_func(ibmca_dso, + (ica_random_number_generate_t)dlsym(ibmca_dso, "ica_random_number_generate")) - || !(p_ica_rsa_crt = (ica_rsa_crt_t)DSO_bind_func(ibmca_dso, "ica_rsa_crt")) - || !(p_ica_sha1 = (ica_sha1_t)DSO_bind_func(ibmca_dso, "ica_sha1")) - || !(p_ica_des_encrypt = (ica_des_encrypt_t)DSO_bind_func(ibmca_dso, "ica_des_encrypt")) - || !(p_ica_des_decrypt = (ica_des_decrypt_t)DSO_bind_func(ibmca_dso, "ica_des_decrypt")) - || !(p_ica_3des_encrypt = (ica_3des_encrypt_t)DSO_bind_func(ibmca_dso, + || !(p_ica_rsa_crt = (ica_rsa_crt_t)dlsym(ibmca_dso, "ica_rsa_crt")) + || !(p_ica_sha1 = (ica_sha1_t)dlsym(ibmca_dso, "ica_sha1")) + || !(p_ica_des_encrypt = (ica_des_encrypt_t)dlsym(ibmca_dso, "ica_des_encrypt")) + || !(p_ica_des_decrypt = (ica_des_decrypt_t)dlsym(ibmca_dso, "ica_des_decrypt")) + || !(p_ica_3des_encrypt = (ica_3des_encrypt_t)dlsym(ibmca_dso, "ica_3des_encrypt")) - || !(p_ica_3des_decrypt = (ica_3des_decrypt_t)DSO_bind_func(ibmca_dso, + || !(p_ica_3des_decrypt = (ica_3des_decrypt_t)dlsym(ibmca_dso, "ica_3des_decrypt")) - || !(p_ica_aes_encrypt = (ica_aes_encrypt_t)DSO_bind_func(ibmca_dso, "ica_aes_encrypt")) - || !(p_ica_aes_decrypt = (ica_aes_decrypt_t)DSO_bind_func(ibmca_dso, "ica_aes_decrypt")) - || !(p_ica_sha256 = (ica_sha256_t)DSO_bind_func(ibmca_dso, "ica_sha256")) - || !(p_ica_sha512 = (ica_sha512_t)DSO_bind_func(ibmca_dso, "ica_sha512")) - || !(p_ica_aes_ofb = (ica_aes_ofb_t)DSO_bind_func(ibmca_dso, "ica_aes_ofb")) - || !(p_ica_des_ofb = (ica_des_ofb_t)DSO_bind_func(ibmca_dso, "ica_des_ofb")) - || !(p_ica_3des_ofb = (ica_3des_ofb_t)DSO_bind_func(ibmca_dso, "ica_3des_ofb")) - || !(p_ica_aes_cfb = (ica_aes_cfb_t)DSO_bind_func(ibmca_dso, "ica_aes_cfb")) - || !(p_ica_des_cfb = (ica_des_cfb_t)DSO_bind_func(ibmca_dso, "ica_des_cfb")) - || !(p_ica_get_functionlist = (ica_get_functionlist_t)DSO_bind_func(ibmca_dso, + || !(p_ica_aes_encrypt = (ica_aes_encrypt_t)dlsym(ibmca_dso, "ica_aes_encrypt")) + || !(p_ica_aes_decrypt = (ica_aes_decrypt_t)dlsym(ibmca_dso, "ica_aes_decrypt")) + || !(p_ica_sha256 = (ica_sha256_t)dlsym(ibmca_dso, "ica_sha256")) + || !(p_ica_sha512 = (ica_sha512_t)dlsym(ibmca_dso, "ica_sha512")) + || !(p_ica_aes_ofb = (ica_aes_ofb_t)dlsym(ibmca_dso, "ica_aes_ofb")) + || !(p_ica_des_ofb = (ica_des_ofb_t)dlsym(ibmca_dso, "ica_des_ofb")) + || !(p_ica_3des_ofb = (ica_3des_ofb_t)dlsym(ibmca_dso, "ica_3des_ofb")) + || !(p_ica_aes_cfb = (ica_aes_cfb_t)dlsym(ibmca_dso, "ica_aes_cfb")) + || !(p_ica_des_cfb = (ica_des_cfb_t)dlsym(ibmca_dso, "ica_des_cfb")) + || !(p_ica_get_functionlist = (ica_get_functionlist_t)dlsym(ibmca_dso, "ica_get_functionlist")) - || !(p_ica_3des_cfb = (ica_3des_cfb_t)DSO_bind_func(ibmca_dso, "ica_3des_cfb"))) { + || !(p_ica_3des_cfb = (ica_3des_cfb_t)dlsym(ibmca_dso, "ica_3des_cfb"))) { IBMCAerr(IBMCA_F_IBMCA_INIT, IBMCA_R_DSO_FAILURE); goto err; } @@ -1695,7 +1690,7 @@ static int ibmca_init(ENGINE * e) return 1; err: if (ibmca_dso) { - DSO_free(ibmca_dso); + dlclose(ibmca_dso); ibmca_dso = NULL; } @@ -1730,7 +1725,7 @@ static int ibmca_finish(ENGINE * e) return 0; } release_context(ibmca_handle); - if (!DSO_free(ibmca_dso)) { + if (!dlclose(ibmca_dso)) { IBMCAerr(IBMCA_F_IBMCA_FINISH, IBMCA_R_DSO_FAILURE); return 0; } -- 2.7.4 ------------------------------------------------------------------------------ Announcing the Oxford Dictionaries API! The API offers world-renowned dictionary content that is easy and intuitive to access. Sign up for an account today to start using our lexical data to power your apps and projects. Get started today and enter our developer competition. http://sdm.link/oxford _______________________________________________ Opencryptoki-tech mailing list Opencryptoki-tech@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opencryptoki-tech