TLS backend OpenSSL: Use function-static variable for symbol loading
Replace a combination of a mutex, atomic variable, and another variable by a function-local variable initialized by lambda. C++17 standard guarantees that the lambda is called only once and that any other callers will waiting for initialization to complete. Task-number: QTBUG-103559 Change-Id: If9af8584e648ddb9ec518498ce035105e52413a2 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This commit is contained in:
parent
aed7b5f370
commit
1c217ba6f7
@ -28,7 +28,6 @@
|
||||
#elif QT_CONFIG(library)
|
||||
# include <QtCore/qlibrary.h>
|
||||
#endif
|
||||
#include <QtCore/qmutex.h>
|
||||
#include <QtCore/qdatetime.h>
|
||||
#if defined(Q_OS_UNIX)
|
||||
#include <QtCore/qdir.h>
|
||||
@ -832,412 +831,401 @@ static LoadedOpenSsl loadOpenSsl()
|
||||
}
|
||||
#endif
|
||||
|
||||
Q_CONSTINIT static QBasicMutex symbolResolveMutex;
|
||||
Q_CONSTINIT static QBasicAtomicInt symbolsResolved = Q_BASIC_ATOMIC_INITIALIZER(false);
|
||||
Q_CONSTINIT static bool triedToResolveSymbols = false;
|
||||
|
||||
bool q_resolveOpenSslSymbols()
|
||||
{
|
||||
if (symbolsResolved.loadAcquire())
|
||||
return true;
|
||||
QMutexLocker locker(&symbolResolveMutex);
|
||||
if (symbolsResolved.loadRelaxed())
|
||||
return true;
|
||||
if (triedToResolveSymbols)
|
||||
return false;
|
||||
triedToResolveSymbols = true;
|
||||
static bool symbolsResolved = []() {
|
||||
LoadedOpenSsl libs = loadOpenSsl();
|
||||
if (!libs.ssl || !libs.crypto) {
|
||||
qCWarning(lcTlsBackend, "Failed to load libssl/libcrypto.");
|
||||
return false;
|
||||
}
|
||||
|
||||
LoadedOpenSsl libs = loadOpenSsl();
|
||||
if (!libs.ssl || !libs.crypto) {
|
||||
qCWarning(lcTlsBackend, "Failed to load libssl/libcrypto.");
|
||||
return false;
|
||||
}
|
||||
|
||||
RESOLVEFUNC(OPENSSL_init_ssl)
|
||||
RESOLVEFUNC(OPENSSL_init_crypto)
|
||||
RESOLVEFUNC(ASN1_STRING_get0_data)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_reset)
|
||||
RESOLVEFUNC(AUTHORITY_INFO_ACCESS_free)
|
||||
RESOLVEFUNC(EVP_PKEY_up_ref)
|
||||
RESOLVEFUNC(EVP_PKEY_CTX_new)
|
||||
RESOLVEFUNC(EVP_PKEY_param_check)
|
||||
RESOLVEFUNC(EVP_PKEY_CTX_free)
|
||||
RESOLVEFUNC(OPENSSL_sk_new_null)
|
||||
RESOLVEFUNC(OPENSSL_sk_push)
|
||||
RESOLVEFUNC(OPENSSL_sk_free)
|
||||
RESOLVEFUNC(OPENSSL_sk_num)
|
||||
RESOLVEFUNC(OPENSSL_sk_pop_free)
|
||||
RESOLVEFUNC(OPENSSL_sk_value)
|
||||
RESOLVEFUNC(DH_get0_pqg)
|
||||
RESOLVEFUNC(SSL_CTX_set_options)
|
||||
RESOLVEFUNC(SSL_set_info_callback)
|
||||
RESOLVEFUNC(SSL_alert_type_string)
|
||||
RESOLVEFUNC(SSL_alert_desc_string_long)
|
||||
RESOLVEFUNC(SSL_CTX_get_security_level)
|
||||
RESOLVEFUNC(SSL_CTX_set_security_level)
|
||||
RESOLVEFUNC(OPENSSL_init_ssl)
|
||||
RESOLVEFUNC(OPENSSL_init_crypto)
|
||||
RESOLVEFUNC(ASN1_STRING_get0_data)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_reset)
|
||||
RESOLVEFUNC(AUTHORITY_INFO_ACCESS_free)
|
||||
RESOLVEFUNC(EVP_PKEY_up_ref)
|
||||
RESOLVEFUNC(EVP_PKEY_CTX_new)
|
||||
RESOLVEFUNC(EVP_PKEY_param_check)
|
||||
RESOLVEFUNC(EVP_PKEY_CTX_free)
|
||||
RESOLVEFUNC(OPENSSL_sk_new_null)
|
||||
RESOLVEFUNC(OPENSSL_sk_push)
|
||||
RESOLVEFUNC(OPENSSL_sk_free)
|
||||
RESOLVEFUNC(OPENSSL_sk_num)
|
||||
RESOLVEFUNC(OPENSSL_sk_pop_free)
|
||||
RESOLVEFUNC(OPENSSL_sk_value)
|
||||
RESOLVEFUNC(DH_get0_pqg)
|
||||
RESOLVEFUNC(SSL_CTX_set_options)
|
||||
RESOLVEFUNC(SSL_set_info_callback)
|
||||
RESOLVEFUNC(SSL_alert_type_string)
|
||||
RESOLVEFUNC(SSL_alert_desc_string_long)
|
||||
RESOLVEFUNC(SSL_CTX_get_security_level)
|
||||
RESOLVEFUNC(SSL_CTX_set_security_level)
|
||||
#ifdef TLS1_3_VERSION
|
||||
RESOLVEFUNC(SSL_CTX_set_ciphersuites)
|
||||
RESOLVEFUNC(SSL_set_psk_use_session_callback)
|
||||
RESOLVEFUNC(SSL_CTX_sess_set_new_cb)
|
||||
RESOLVEFUNC(SSL_SESSION_is_resumable)
|
||||
RESOLVEFUNC(SSL_CTX_set_ciphersuites)
|
||||
RESOLVEFUNC(SSL_set_psk_use_session_callback)
|
||||
RESOLVEFUNC(SSL_CTX_sess_set_new_cb)
|
||||
RESOLVEFUNC(SSL_SESSION_is_resumable)
|
||||
#endif // TLS 1.3 or OpenSSL > 1.1.1
|
||||
|
||||
RESOLVEFUNC(SSL_get_client_random)
|
||||
RESOLVEFUNC(SSL_SESSION_get_master_key)
|
||||
RESOLVEFUNC(SSL_session_reused)
|
||||
RESOLVEFUNC(SSL_get_session)
|
||||
RESOLVEFUNC(SSL_set_options)
|
||||
RESOLVEFUNC(CRYPTO_get_ex_new_index)
|
||||
RESOLVEFUNC(TLS_method)
|
||||
RESOLVEFUNC(TLS_client_method)
|
||||
RESOLVEFUNC(TLS_server_method)
|
||||
RESOLVEFUNC(X509_up_ref)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get0_chain)
|
||||
RESOLVEFUNC(X509_getm_notBefore)
|
||||
RESOLVEFUNC(X509_getm_notAfter)
|
||||
RESOLVEFUNC(ASN1_item_free)
|
||||
RESOLVEFUNC(X509V3_conf_free)
|
||||
RESOLVEFUNC(X509_get_version)
|
||||
RESOLVEFUNC(X509_get_pubkey)
|
||||
RESOLVEFUNC(X509_STORE_set_verify_cb)
|
||||
RESOLVEFUNC(X509_STORE_set_ex_data)
|
||||
RESOLVEFUNC(X509_STORE_get_ex_data)
|
||||
RESOLVEFUNC(CRYPTO_free)
|
||||
RESOLVEFUNC(OpenSSL_version_num)
|
||||
RESOLVEFUNC(OpenSSL_version)
|
||||
RESOLVEFUNC(SSL_get_client_random)
|
||||
RESOLVEFUNC(SSL_SESSION_get_master_key)
|
||||
RESOLVEFUNC(SSL_session_reused)
|
||||
RESOLVEFUNC(SSL_get_session)
|
||||
RESOLVEFUNC(SSL_set_options)
|
||||
RESOLVEFUNC(CRYPTO_get_ex_new_index)
|
||||
RESOLVEFUNC(TLS_method)
|
||||
RESOLVEFUNC(TLS_client_method)
|
||||
RESOLVEFUNC(TLS_server_method)
|
||||
RESOLVEFUNC(X509_up_ref)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get0_chain)
|
||||
RESOLVEFUNC(X509_getm_notBefore)
|
||||
RESOLVEFUNC(X509_getm_notAfter)
|
||||
RESOLVEFUNC(ASN1_item_free)
|
||||
RESOLVEFUNC(X509V3_conf_free)
|
||||
RESOLVEFUNC(X509_get_version)
|
||||
RESOLVEFUNC(X509_get_pubkey)
|
||||
RESOLVEFUNC(X509_STORE_set_verify_cb)
|
||||
RESOLVEFUNC(X509_STORE_set_ex_data)
|
||||
RESOLVEFUNC(X509_STORE_get_ex_data)
|
||||
RESOLVEFUNC(CRYPTO_free)
|
||||
RESOLVEFUNC(OpenSSL_version_num)
|
||||
RESOLVEFUNC(OpenSSL_version)
|
||||
|
||||
if (!_q_OpenSSL_version || !_q_OpenSSL_version_num) {
|
||||
// Apparently, we were built with OpenSSL 1.1 enabled but are now using
|
||||
// a wrong library.
|
||||
qCWarning(lcTlsBackend, "Incompatible version of OpenSSL");
|
||||
return false;
|
||||
}
|
||||
if (!_q_OpenSSL_version || !_q_OpenSSL_version_num) {
|
||||
// Apparently, we were built with OpenSSL 1.1 enabled but are now using
|
||||
// a wrong library.
|
||||
qCWarning(lcTlsBackend, "Incompatible version of OpenSSL");
|
||||
return false;
|
||||
}
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x30000000
|
||||
if (q_OpenSSL_version_num() < 0x30000000) {
|
||||
qCWarning(lcTlsBackend, "Incompatible version of OpenSSL (built with OpenSSL >= 3.x, runtime version is < 3.x)");
|
||||
return false;
|
||||
}
|
||||
if (q_OpenSSL_version_num() < 0x30000000) {
|
||||
qCWarning(lcTlsBackend, "Incompatible version of OpenSSL (built with OpenSSL >= 3.x, runtime version is < 3.x)");
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
if (q_OpenSSL_version_num() >= 0x30000000) {
|
||||
qCWarning(lcTlsBackend, "Incompatible version of OpenSSL (built with OpenSSL 1.x, runtime version is >= 3.x)");
|
||||
return false;
|
||||
}
|
||||
if (q_OpenSSL_version_num() >= 0x30000000) {
|
||||
qCWarning(lcTlsBackend, "Incompatible version of OpenSSL (built with OpenSSL 1.x, runtime version is >= 3.x)");
|
||||
return false;
|
||||
}
|
||||
#endif // OPENSSL_VERSION_NUMBER
|
||||
|
||||
RESOLVEFUNC(SSL_SESSION_get_ticket_lifetime_hint)
|
||||
RESOLVEFUNC(SSL_SESSION_get_ticket_lifetime_hint)
|
||||
|
||||
#if QT_CONFIG(dtls)
|
||||
RESOLVEFUNC(DTLSv1_listen)
|
||||
RESOLVEFUNC(BIO_ADDR_new)
|
||||
RESOLVEFUNC(BIO_ADDR_free)
|
||||
RESOLVEFUNC(BIO_meth_new)
|
||||
RESOLVEFUNC(BIO_meth_free)
|
||||
RESOLVEFUNC(BIO_meth_set_write)
|
||||
RESOLVEFUNC(BIO_meth_set_read)
|
||||
RESOLVEFUNC(BIO_meth_set_puts)
|
||||
RESOLVEFUNC(BIO_meth_set_ctrl)
|
||||
RESOLVEFUNC(BIO_meth_set_create)
|
||||
RESOLVEFUNC(BIO_meth_set_destroy)
|
||||
RESOLVEFUNC(DTLSv1_listen)
|
||||
RESOLVEFUNC(BIO_ADDR_new)
|
||||
RESOLVEFUNC(BIO_ADDR_free)
|
||||
RESOLVEFUNC(BIO_meth_new)
|
||||
RESOLVEFUNC(BIO_meth_free)
|
||||
RESOLVEFUNC(BIO_meth_set_write)
|
||||
RESOLVEFUNC(BIO_meth_set_read)
|
||||
RESOLVEFUNC(BIO_meth_set_puts)
|
||||
RESOLVEFUNC(BIO_meth_set_ctrl)
|
||||
RESOLVEFUNC(BIO_meth_set_create)
|
||||
RESOLVEFUNC(BIO_meth_set_destroy)
|
||||
#endif // dtls
|
||||
|
||||
#if QT_CONFIG(ocsp)
|
||||
RESOLVEFUNC(OCSP_SINGLERESP_get0_id)
|
||||
RESOLVEFUNC(d2i_OCSP_RESPONSE)
|
||||
RESOLVEFUNC(OCSP_RESPONSE_free)
|
||||
RESOLVEFUNC(OCSP_response_status)
|
||||
RESOLVEFUNC(OCSP_response_get1_basic)
|
||||
RESOLVEFUNC(OCSP_BASICRESP_free)
|
||||
RESOLVEFUNC(OCSP_basic_verify)
|
||||
RESOLVEFUNC(OCSP_resp_count)
|
||||
RESOLVEFUNC(OCSP_resp_get0)
|
||||
RESOLVEFUNC(OCSP_single_get0_status)
|
||||
RESOLVEFUNC(OCSP_check_validity)
|
||||
RESOLVEFUNC(OCSP_cert_to_id)
|
||||
RESOLVEFUNC(OCSP_id_get0_info)
|
||||
RESOLVEFUNC(OCSP_resp_get0_certs)
|
||||
RESOLVEFUNC(OCSP_basic_sign)
|
||||
RESOLVEFUNC(OCSP_response_create)
|
||||
RESOLVEFUNC(i2d_OCSP_RESPONSE)
|
||||
RESOLVEFUNC(OCSP_basic_add1_status)
|
||||
RESOLVEFUNC(OCSP_BASICRESP_new)
|
||||
RESOLVEFUNC(OCSP_CERTID_free)
|
||||
RESOLVEFUNC(OCSP_cert_to_id)
|
||||
RESOLVEFUNC(OCSP_id_cmp)
|
||||
RESOLVEFUNC(OCSP_SINGLERESP_get0_id)
|
||||
RESOLVEFUNC(d2i_OCSP_RESPONSE)
|
||||
RESOLVEFUNC(OCSP_RESPONSE_free)
|
||||
RESOLVEFUNC(OCSP_response_status)
|
||||
RESOLVEFUNC(OCSP_response_get1_basic)
|
||||
RESOLVEFUNC(OCSP_BASICRESP_free)
|
||||
RESOLVEFUNC(OCSP_basic_verify)
|
||||
RESOLVEFUNC(OCSP_resp_count)
|
||||
RESOLVEFUNC(OCSP_resp_get0)
|
||||
RESOLVEFUNC(OCSP_single_get0_status)
|
||||
RESOLVEFUNC(OCSP_check_validity)
|
||||
RESOLVEFUNC(OCSP_cert_to_id)
|
||||
RESOLVEFUNC(OCSP_id_get0_info)
|
||||
RESOLVEFUNC(OCSP_resp_get0_certs)
|
||||
RESOLVEFUNC(OCSP_basic_sign)
|
||||
RESOLVEFUNC(OCSP_response_create)
|
||||
RESOLVEFUNC(i2d_OCSP_RESPONSE)
|
||||
RESOLVEFUNC(OCSP_basic_add1_status)
|
||||
RESOLVEFUNC(OCSP_BASICRESP_new)
|
||||
RESOLVEFUNC(OCSP_CERTID_free)
|
||||
RESOLVEFUNC(OCSP_cert_to_id)
|
||||
RESOLVEFUNC(OCSP_id_cmp)
|
||||
#endif // ocsp
|
||||
|
||||
RESOLVEFUNC(BIO_set_data)
|
||||
RESOLVEFUNC(BIO_get_data)
|
||||
RESOLVEFUNC(BIO_set_init)
|
||||
RESOLVEFUNC(BIO_get_shutdown)
|
||||
RESOLVEFUNC(BIO_set_shutdown)
|
||||
RESOLVEFUNC(ASN1_INTEGER_get)
|
||||
RESOLVEFUNC(ASN1_INTEGER_cmp)
|
||||
RESOLVEFUNC(ASN1_STRING_length)
|
||||
RESOLVEFUNC(ASN1_STRING_to_UTF8)
|
||||
RESOLVEFUNC(ASN1_TIME_to_tm)
|
||||
RESOLVEFUNC(BIO_ctrl)
|
||||
RESOLVEFUNC(BIO_free)
|
||||
RESOLVEFUNC(BIO_new)
|
||||
RESOLVEFUNC(BIO_new_mem_buf)
|
||||
RESOLVEFUNC(BIO_read)
|
||||
RESOLVEFUNC(BIO_s_mem)
|
||||
RESOLVEFUNC(BIO_write)
|
||||
RESOLVEFUNC(BIO_set_flags)
|
||||
RESOLVEFUNC(BIO_clear_flags)
|
||||
RESOLVEFUNC(BIO_set_ex_data)
|
||||
RESOLVEFUNC(BIO_get_ex_data)
|
||||
RESOLVEFUNC(BN_num_bits)
|
||||
RESOLVEFUNC(BN_is_word)
|
||||
RESOLVEFUNC(BN_mod_word)
|
||||
RESOLVEFUNC(ERR_error_string)
|
||||
RESOLVEFUNC(ERR_error_string_n)
|
||||
RESOLVEFUNC(ERR_get_error)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_new)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_free)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_ctrl)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_set_key_length)
|
||||
RESOLVEFUNC(EVP_CipherInit)
|
||||
RESOLVEFUNC(EVP_CipherInit_ex)
|
||||
RESOLVEFUNC(EVP_CipherUpdate)
|
||||
RESOLVEFUNC(EVP_CipherFinal)
|
||||
RESOLVEFUNC(EVP_get_digestbyname)
|
||||
RESOLVEFUNC(BIO_set_data)
|
||||
RESOLVEFUNC(BIO_get_data)
|
||||
RESOLVEFUNC(BIO_set_init)
|
||||
RESOLVEFUNC(BIO_get_shutdown)
|
||||
RESOLVEFUNC(BIO_set_shutdown)
|
||||
RESOLVEFUNC(ASN1_INTEGER_get)
|
||||
RESOLVEFUNC(ASN1_INTEGER_cmp)
|
||||
RESOLVEFUNC(ASN1_STRING_length)
|
||||
RESOLVEFUNC(ASN1_STRING_to_UTF8)
|
||||
RESOLVEFUNC(ASN1_TIME_to_tm)
|
||||
RESOLVEFUNC(BIO_ctrl)
|
||||
RESOLVEFUNC(BIO_free)
|
||||
RESOLVEFUNC(BIO_new)
|
||||
RESOLVEFUNC(BIO_new_mem_buf)
|
||||
RESOLVEFUNC(BIO_read)
|
||||
RESOLVEFUNC(BIO_s_mem)
|
||||
RESOLVEFUNC(BIO_write)
|
||||
RESOLVEFUNC(BIO_set_flags)
|
||||
RESOLVEFUNC(BIO_clear_flags)
|
||||
RESOLVEFUNC(BIO_set_ex_data)
|
||||
RESOLVEFUNC(BIO_get_ex_data)
|
||||
RESOLVEFUNC(BN_num_bits)
|
||||
RESOLVEFUNC(BN_is_word)
|
||||
RESOLVEFUNC(BN_mod_word)
|
||||
RESOLVEFUNC(ERR_error_string)
|
||||
RESOLVEFUNC(ERR_error_string_n)
|
||||
RESOLVEFUNC(ERR_get_error)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_new)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_free)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_ctrl)
|
||||
RESOLVEFUNC(EVP_CIPHER_CTX_set_key_length)
|
||||
RESOLVEFUNC(EVP_CipherInit)
|
||||
RESOLVEFUNC(EVP_CipherInit_ex)
|
||||
RESOLVEFUNC(EVP_CipherUpdate)
|
||||
RESOLVEFUNC(EVP_CipherFinal)
|
||||
RESOLVEFUNC(EVP_get_digestbyname)
|
||||
#ifndef OPENSSL_NO_DES
|
||||
RESOLVEFUNC(EVP_des_cbc)
|
||||
RESOLVEFUNC(EVP_des_ede3_cbc)
|
||||
RESOLVEFUNC(EVP_des_cbc)
|
||||
RESOLVEFUNC(EVP_des_ede3_cbc)
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RC2
|
||||
RESOLVEFUNC(EVP_rc2_cbc)
|
||||
RESOLVEFUNC(EVP_rc2_cbc)
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_AES
|
||||
RESOLVEFUNC(EVP_aes_128_cbc)
|
||||
RESOLVEFUNC(EVP_aes_192_cbc)
|
||||
RESOLVEFUNC(EVP_aes_256_cbc)
|
||||
RESOLVEFUNC(EVP_aes_128_cbc)
|
||||
RESOLVEFUNC(EVP_aes_192_cbc)
|
||||
RESOLVEFUNC(EVP_aes_256_cbc)
|
||||
#endif
|
||||
RESOLVEFUNC(EVP_sha1)
|
||||
RESOLVEFUNC(EVP_PKEY_free)
|
||||
RESOLVEFUNC(EVP_PKEY_new)
|
||||
RESOLVEFUNC(EVP_PKEY_type)
|
||||
RESOLVEFUNC(OBJ_nid2sn)
|
||||
RESOLVEFUNC(OBJ_nid2ln)
|
||||
RESOLVEFUNC(OBJ_sn2nid)
|
||||
RESOLVEFUNC(OBJ_ln2nid)
|
||||
RESOLVEFUNC(i2t_ASN1_OBJECT)
|
||||
RESOLVEFUNC(OBJ_obj2txt)
|
||||
RESOLVEFUNC(OBJ_obj2nid)
|
||||
RESOLVEFUNC(PEM_read_bio_PrivateKey)
|
||||
RESOLVEFUNC(PEM_read_bio_DHparams)
|
||||
RESOLVEFUNC(PEM_write_bio_PrivateKey)
|
||||
RESOLVEFUNC(PEM_write_bio_PrivateKey_traditional)
|
||||
RESOLVEFUNC(PEM_read_bio_PUBKEY)
|
||||
RESOLVEFUNC(PEM_write_bio_PUBKEY)
|
||||
RESOLVEFUNC(RAND_seed)
|
||||
RESOLVEFUNC(RAND_status)
|
||||
RESOLVEFUNC(RAND_bytes)
|
||||
RESOLVEFUNC(SSL_CIPHER_description)
|
||||
RESOLVEFUNC(SSL_CIPHER_get_bits)
|
||||
RESOLVEFUNC(SSL_get_rbio)
|
||||
RESOLVEFUNC(SSL_CTX_check_private_key)
|
||||
RESOLVEFUNC(SSL_CTX_ctrl)
|
||||
RESOLVEFUNC(SSL_CTX_free)
|
||||
RESOLVEFUNC(SSL_CTX_new)
|
||||
RESOLVEFUNC(SSL_CTX_set_cipher_list)
|
||||
RESOLVEFUNC(SSL_CTX_callback_ctrl)
|
||||
RESOLVEFUNC(SSL_CTX_set_default_verify_paths)
|
||||
RESOLVEFUNC(SSL_CTX_set_verify)
|
||||
RESOLVEFUNC(SSL_CTX_set_verify_depth)
|
||||
RESOLVEFUNC(SSL_CTX_use_certificate)
|
||||
RESOLVEFUNC(SSL_CTX_use_certificate_file)
|
||||
RESOLVEFUNC(SSL_CTX_use_PrivateKey)
|
||||
RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
|
||||
RESOLVEFUNC(SSL_CTX_get_cert_store);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_new);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_free);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_set_flags);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_finish);
|
||||
RESOLVEFUNC(SSL_CONF_cmd);
|
||||
RESOLVEFUNC(SSL_accept)
|
||||
RESOLVEFUNC(SSL_clear)
|
||||
RESOLVEFUNC(SSL_connect)
|
||||
RESOLVEFUNC(SSL_free)
|
||||
RESOLVEFUNC(SSL_get_ciphers)
|
||||
RESOLVEFUNC(SSL_get_current_cipher)
|
||||
RESOLVEFUNC(SSL_version)
|
||||
RESOLVEFUNC(SSL_get_error)
|
||||
RESOLVEFUNC(SSL_get_peer_cert_chain)
|
||||
RESOLVEFUNC(EVP_sha1)
|
||||
RESOLVEFUNC(EVP_PKEY_free)
|
||||
RESOLVEFUNC(EVP_PKEY_new)
|
||||
RESOLVEFUNC(EVP_PKEY_type)
|
||||
RESOLVEFUNC(OBJ_nid2sn)
|
||||
RESOLVEFUNC(OBJ_nid2ln)
|
||||
RESOLVEFUNC(OBJ_sn2nid)
|
||||
RESOLVEFUNC(OBJ_ln2nid)
|
||||
RESOLVEFUNC(i2t_ASN1_OBJECT)
|
||||
RESOLVEFUNC(OBJ_obj2txt)
|
||||
RESOLVEFUNC(OBJ_obj2nid)
|
||||
RESOLVEFUNC(PEM_read_bio_PrivateKey)
|
||||
RESOLVEFUNC(PEM_read_bio_DHparams)
|
||||
RESOLVEFUNC(PEM_write_bio_PrivateKey)
|
||||
RESOLVEFUNC(PEM_write_bio_PrivateKey_traditional)
|
||||
RESOLVEFUNC(PEM_read_bio_PUBKEY)
|
||||
RESOLVEFUNC(PEM_write_bio_PUBKEY)
|
||||
RESOLVEFUNC(RAND_seed)
|
||||
RESOLVEFUNC(RAND_status)
|
||||
RESOLVEFUNC(RAND_bytes)
|
||||
RESOLVEFUNC(SSL_CIPHER_description)
|
||||
RESOLVEFUNC(SSL_CIPHER_get_bits)
|
||||
RESOLVEFUNC(SSL_get_rbio)
|
||||
RESOLVEFUNC(SSL_CTX_check_private_key)
|
||||
RESOLVEFUNC(SSL_CTX_ctrl)
|
||||
RESOLVEFUNC(SSL_CTX_free)
|
||||
RESOLVEFUNC(SSL_CTX_new)
|
||||
RESOLVEFUNC(SSL_CTX_set_cipher_list)
|
||||
RESOLVEFUNC(SSL_CTX_callback_ctrl)
|
||||
RESOLVEFUNC(SSL_CTX_set_default_verify_paths)
|
||||
RESOLVEFUNC(SSL_CTX_set_verify)
|
||||
RESOLVEFUNC(SSL_CTX_set_verify_depth)
|
||||
RESOLVEFUNC(SSL_CTX_use_certificate)
|
||||
RESOLVEFUNC(SSL_CTX_use_certificate_file)
|
||||
RESOLVEFUNC(SSL_CTX_use_PrivateKey)
|
||||
RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
|
||||
RESOLVEFUNC(SSL_CTX_get_cert_store);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_new);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_free);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_set_flags);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_finish);
|
||||
RESOLVEFUNC(SSL_CONF_cmd);
|
||||
RESOLVEFUNC(SSL_accept)
|
||||
RESOLVEFUNC(SSL_clear)
|
||||
RESOLVEFUNC(SSL_connect)
|
||||
RESOLVEFUNC(SSL_free)
|
||||
RESOLVEFUNC(SSL_get_ciphers)
|
||||
RESOLVEFUNC(SSL_get_current_cipher)
|
||||
RESOLVEFUNC(SSL_version)
|
||||
RESOLVEFUNC(SSL_get_error)
|
||||
RESOLVEFUNC(SSL_get_peer_cert_chain)
|
||||
|
||||
#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
|
||||
RESOLVEFUNC(SSL_get1_peer_certificate)
|
||||
RESOLVEFUNC(EVP_PKEY_get_bits)
|
||||
RESOLVEFUNC(EVP_PKEY_get_base_id)
|
||||
RESOLVEFUNC(SSL_get1_peer_certificate)
|
||||
RESOLVEFUNC(EVP_PKEY_get_bits)
|
||||
RESOLVEFUNC(EVP_PKEY_get_base_id)
|
||||
#else
|
||||
RESOLVEFUNC(SSL_get_peer_certificate)
|
||||
RESOLVEFUNC(EVP_PKEY_base_id)
|
||||
RESOLVEFUNC(SSL_get_peer_certificate)
|
||||
RESOLVEFUNC(EVP_PKEY_base_id)
|
||||
#endif // OPENSSL_VERSION_MAJOR >= 3
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
RESOLVEFUNC(EVP_PKEY_assign)
|
||||
RESOLVEFUNC(EVP_PKEY_cmp)
|
||||
RESOLVEFUNC(EVP_PKEY_assign)
|
||||
RESOLVEFUNC(EVP_PKEY_cmp)
|
||||
|
||||
RESOLVEFUNC(EVP_PKEY_set1_RSA)
|
||||
RESOLVEFUNC(EVP_PKEY_set1_DSA)
|
||||
RESOLVEFUNC(EVP_PKEY_set1_DH)
|
||||
RESOLVEFUNC(EVP_PKEY_set1_RSA)
|
||||
RESOLVEFUNC(EVP_PKEY_set1_DSA)
|
||||
RESOLVEFUNC(EVP_PKEY_set1_DH)
|
||||
|
||||
RESOLVEFUNC(EVP_PKEY_get1_DSA)
|
||||
RESOLVEFUNC(EVP_PKEY_get1_RSA)
|
||||
RESOLVEFUNC(EVP_PKEY_get1_DH)
|
||||
RESOLVEFUNC(EVP_PKEY_get1_DSA)
|
||||
RESOLVEFUNC(EVP_PKEY_get1_RSA)
|
||||
RESOLVEFUNC(EVP_PKEY_get1_DH)
|
||||
|
||||
RESOLVEFUNC(PEM_read_bio_DSA_PUBKEY)
|
||||
RESOLVEFUNC(PEM_read_bio_RSA_PUBKEY)
|
||||
RESOLVEFUNC(PEM_read_bio_DSAPrivateKey)
|
||||
RESOLVEFUNC(PEM_read_bio_RSAPrivateKey)
|
||||
RESOLVEFUNC(PEM_read_bio_DSA_PUBKEY)
|
||||
RESOLVEFUNC(PEM_read_bio_RSA_PUBKEY)
|
||||
RESOLVEFUNC(PEM_read_bio_DSAPrivateKey)
|
||||
RESOLVEFUNC(PEM_read_bio_RSAPrivateKey)
|
||||
|
||||
RESOLVEFUNC(PEM_write_bio_DSA_PUBKEY)
|
||||
RESOLVEFUNC(PEM_write_bio_RSA_PUBKEY)
|
||||
RESOLVEFUNC(PEM_write_bio_DSAPrivateKey)
|
||||
RESOLVEFUNC(PEM_write_bio_RSAPrivateKey)
|
||||
RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
|
||||
RESOLVEFUNC(PEM_write_bio_DSA_PUBKEY)
|
||||
RESOLVEFUNC(PEM_write_bio_RSA_PUBKEY)
|
||||
RESOLVEFUNC(PEM_write_bio_DSAPrivateKey)
|
||||
RESOLVEFUNC(PEM_write_bio_RSAPrivateKey)
|
||||
RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
|
||||
|
||||
RESOLVEFUNC(DSA_new)
|
||||
RESOLVEFUNC(DSA_free)
|
||||
RESOLVEFUNC(DSA_new)
|
||||
RESOLVEFUNC(DSA_free)
|
||||
|
||||
RESOLVEFUNC(RSA_new)
|
||||
RESOLVEFUNC(RSA_free)
|
||||
RESOLVEFUNC(RSA_new)
|
||||
RESOLVEFUNC(RSA_free)
|
||||
|
||||
RESOLVEFUNC(DH_bits)
|
||||
RESOLVEFUNC(DSA_bits)
|
||||
RESOLVEFUNC(RSA_bits)
|
||||
RESOLVEFUNC(DH_bits)
|
||||
RESOLVEFUNC(DSA_bits)
|
||||
RESOLVEFUNC(RSA_bits)
|
||||
|
||||
#ifndef OPENSSL_NO_EC
|
||||
|
||||
RESOLVEFUNC(EVP_PKEY_set1_EC_KEY)
|
||||
RESOLVEFUNC(EVP_PKEY_get1_EC_KEY)
|
||||
RESOLVEFUNC(PEM_read_bio_EC_PUBKEY)
|
||||
RESOLVEFUNC(PEM_read_bio_ECPrivateKey)
|
||||
RESOLVEFUNC(PEM_write_bio_EC_PUBKEY)
|
||||
RESOLVEFUNC(PEM_write_bio_ECPrivateKey)
|
||||
RESOLVEFUNC(EC_KEY_get0_group)
|
||||
RESOLVEFUNC(EC_GROUP_get_degree)
|
||||
RESOLVEFUNC(EC_KEY_dup)
|
||||
RESOLVEFUNC(EC_KEY_new_by_curve_name)
|
||||
RESOLVEFUNC(EC_KEY_free)
|
||||
RESOLVEFUNC(EVP_PKEY_set1_EC_KEY)
|
||||
RESOLVEFUNC(EVP_PKEY_get1_EC_KEY)
|
||||
RESOLVEFUNC(PEM_read_bio_EC_PUBKEY)
|
||||
RESOLVEFUNC(PEM_read_bio_ECPrivateKey)
|
||||
RESOLVEFUNC(PEM_write_bio_EC_PUBKEY)
|
||||
RESOLVEFUNC(PEM_write_bio_ECPrivateKey)
|
||||
RESOLVEFUNC(EC_KEY_get0_group)
|
||||
RESOLVEFUNC(EC_GROUP_get_degree)
|
||||
RESOLVEFUNC(EC_KEY_dup)
|
||||
RESOLVEFUNC(EC_KEY_new_by_curve_name)
|
||||
RESOLVEFUNC(EC_KEY_free)
|
||||
|
||||
#endif // OPENSSL_NO_EC
|
||||
|
||||
#endif // OPENSSL_NO_DEPRECATED_3_0
|
||||
|
||||
RESOLVEFUNC(SSL_get_verify_result)
|
||||
RESOLVEFUNC(SSL_new)
|
||||
RESOLVEFUNC(SSL_get_SSL_CTX)
|
||||
RESOLVEFUNC(SSL_ctrl)
|
||||
RESOLVEFUNC(SSL_read)
|
||||
RESOLVEFUNC(SSL_set_accept_state)
|
||||
RESOLVEFUNC(SSL_set_bio)
|
||||
RESOLVEFUNC(SSL_set_connect_state)
|
||||
RESOLVEFUNC(SSL_shutdown)
|
||||
RESOLVEFUNC(SSL_in_init)
|
||||
RESOLVEFUNC(SSL_get_shutdown)
|
||||
RESOLVEFUNC(SSL_set_session)
|
||||
RESOLVEFUNC(SSL_SESSION_free)
|
||||
RESOLVEFUNC(SSL_get1_session)
|
||||
RESOLVEFUNC(SSL_get_session)
|
||||
RESOLVEFUNC(SSL_set_ex_data)
|
||||
RESOLVEFUNC(SSL_get_ex_data)
|
||||
RESOLVEFUNC(SSL_get_ex_data_X509_STORE_CTX_idx)
|
||||
RESOLVEFUNC(SSL_get_verify_result)
|
||||
RESOLVEFUNC(SSL_new)
|
||||
RESOLVEFUNC(SSL_get_SSL_CTX)
|
||||
RESOLVEFUNC(SSL_ctrl)
|
||||
RESOLVEFUNC(SSL_read)
|
||||
RESOLVEFUNC(SSL_set_accept_state)
|
||||
RESOLVEFUNC(SSL_set_bio)
|
||||
RESOLVEFUNC(SSL_set_connect_state)
|
||||
RESOLVEFUNC(SSL_shutdown)
|
||||
RESOLVEFUNC(SSL_in_init)
|
||||
RESOLVEFUNC(SSL_get_shutdown)
|
||||
RESOLVEFUNC(SSL_set_session)
|
||||
RESOLVEFUNC(SSL_SESSION_free)
|
||||
RESOLVEFUNC(SSL_get1_session)
|
||||
RESOLVEFUNC(SSL_get_session)
|
||||
RESOLVEFUNC(SSL_set_ex_data)
|
||||
RESOLVEFUNC(SSL_get_ex_data)
|
||||
RESOLVEFUNC(SSL_get_ex_data_X509_STORE_CTX_idx)
|
||||
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
RESOLVEFUNC(SSL_set_psk_client_callback)
|
||||
RESOLVEFUNC(SSL_set_psk_server_callback)
|
||||
RESOLVEFUNC(SSL_CTX_use_psk_identity_hint)
|
||||
RESOLVEFUNC(SSL_set_psk_client_callback)
|
||||
RESOLVEFUNC(SSL_set_psk_server_callback)
|
||||
RESOLVEFUNC(SSL_CTX_use_psk_identity_hint)
|
||||
#endif // !OPENSSL_NO_PSK
|
||||
|
||||
RESOLVEFUNC(SSL_write)
|
||||
RESOLVEFUNC(X509_NAME_entry_count)
|
||||
RESOLVEFUNC(X509_NAME_get_entry)
|
||||
RESOLVEFUNC(X509_NAME_ENTRY_get_data)
|
||||
RESOLVEFUNC(X509_NAME_ENTRY_get_object)
|
||||
RESOLVEFUNC(X509_PUBKEY_get)
|
||||
RESOLVEFUNC(X509_STORE_free)
|
||||
RESOLVEFUNC(X509_STORE_new)
|
||||
RESOLVEFUNC(X509_STORE_add_cert)
|
||||
RESOLVEFUNC(X509_STORE_CTX_free)
|
||||
RESOLVEFUNC(X509_STORE_CTX_init)
|
||||
RESOLVEFUNC(X509_STORE_CTX_new)
|
||||
RESOLVEFUNC(X509_STORE_CTX_set_purpose)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get_error)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get_error_depth)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get_current_cert)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get0_store)
|
||||
RESOLVEFUNC(X509_cmp)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get_ex_data)
|
||||
RESOLVEFUNC(X509_dup)
|
||||
RESOLVEFUNC(X509_print)
|
||||
RESOLVEFUNC(X509_digest)
|
||||
RESOLVEFUNC(X509_EXTENSION_get_object)
|
||||
RESOLVEFUNC(X509_free)
|
||||
RESOLVEFUNC(X509_gmtime_adj)
|
||||
RESOLVEFUNC(ASN1_TIME_free)
|
||||
RESOLVEFUNC(X509_get_ext)
|
||||
RESOLVEFUNC(X509_get_ext_count)
|
||||
RESOLVEFUNC(X509_get_ext_d2i)
|
||||
RESOLVEFUNC(X509V3_EXT_get)
|
||||
RESOLVEFUNC(X509V3_EXT_d2i)
|
||||
RESOLVEFUNC(X509_EXTENSION_get_critical)
|
||||
RESOLVEFUNC(X509_EXTENSION_get_data)
|
||||
RESOLVEFUNC(BASIC_CONSTRAINTS_free)
|
||||
RESOLVEFUNC(AUTHORITY_KEYID_free)
|
||||
RESOLVEFUNC(GENERAL_NAME_free)
|
||||
RESOLVEFUNC(ASN1_STRING_print)
|
||||
RESOLVEFUNC(X509_check_issued)
|
||||
RESOLVEFUNC(X509_get_issuer_name)
|
||||
RESOLVEFUNC(X509_get_subject_name)
|
||||
RESOLVEFUNC(X509_get_serialNumber)
|
||||
RESOLVEFUNC(X509_verify_cert)
|
||||
RESOLVEFUNC(d2i_X509)
|
||||
RESOLVEFUNC(i2d_X509)
|
||||
RESOLVEFUNC(SSL_write)
|
||||
RESOLVEFUNC(X509_NAME_entry_count)
|
||||
RESOLVEFUNC(X509_NAME_get_entry)
|
||||
RESOLVEFUNC(X509_NAME_ENTRY_get_data)
|
||||
RESOLVEFUNC(X509_NAME_ENTRY_get_object)
|
||||
RESOLVEFUNC(X509_PUBKEY_get)
|
||||
RESOLVEFUNC(X509_STORE_free)
|
||||
RESOLVEFUNC(X509_STORE_new)
|
||||
RESOLVEFUNC(X509_STORE_add_cert)
|
||||
RESOLVEFUNC(X509_STORE_CTX_free)
|
||||
RESOLVEFUNC(X509_STORE_CTX_init)
|
||||
RESOLVEFUNC(X509_STORE_CTX_new)
|
||||
RESOLVEFUNC(X509_STORE_CTX_set_purpose)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get_error)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get_error_depth)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get_current_cert)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get0_store)
|
||||
RESOLVEFUNC(X509_cmp)
|
||||
RESOLVEFUNC(X509_STORE_CTX_get_ex_data)
|
||||
RESOLVEFUNC(X509_dup)
|
||||
RESOLVEFUNC(X509_print)
|
||||
RESOLVEFUNC(X509_digest)
|
||||
RESOLVEFUNC(X509_EXTENSION_get_object)
|
||||
RESOLVEFUNC(X509_free)
|
||||
RESOLVEFUNC(X509_gmtime_adj)
|
||||
RESOLVEFUNC(ASN1_TIME_free)
|
||||
RESOLVEFUNC(X509_get_ext)
|
||||
RESOLVEFUNC(X509_get_ext_count)
|
||||
RESOLVEFUNC(X509_get_ext_d2i)
|
||||
RESOLVEFUNC(X509V3_EXT_get)
|
||||
RESOLVEFUNC(X509V3_EXT_d2i)
|
||||
RESOLVEFUNC(X509_EXTENSION_get_critical)
|
||||
RESOLVEFUNC(X509_EXTENSION_get_data)
|
||||
RESOLVEFUNC(BASIC_CONSTRAINTS_free)
|
||||
RESOLVEFUNC(AUTHORITY_KEYID_free)
|
||||
RESOLVEFUNC(GENERAL_NAME_free)
|
||||
RESOLVEFUNC(ASN1_STRING_print)
|
||||
RESOLVEFUNC(X509_check_issued)
|
||||
RESOLVEFUNC(X509_get_issuer_name)
|
||||
RESOLVEFUNC(X509_get_subject_name)
|
||||
RESOLVEFUNC(X509_get_serialNumber)
|
||||
RESOLVEFUNC(X509_verify_cert)
|
||||
RESOLVEFUNC(d2i_X509)
|
||||
RESOLVEFUNC(i2d_X509)
|
||||
#if OPENSSL_VERSION_MAJOR < 3
|
||||
RESOLVEFUNC(SSL_CTX_load_verify_locations)
|
||||
RESOLVEFUNC(SSL_CTX_load_verify_locations)
|
||||
#else
|
||||
RESOLVEFUNC(SSL_CTX_load_verify_dir)
|
||||
RESOLVEFUNC(SSL_CTX_load_verify_dir)
|
||||
#endif // OPENSSL_VERSION_MAJOR
|
||||
RESOLVEFUNC(i2d_SSL_SESSION)
|
||||
RESOLVEFUNC(d2i_SSL_SESSION)
|
||||
RESOLVEFUNC(i2d_SSL_SESSION)
|
||||
RESOLVEFUNC(d2i_SSL_SESSION)
|
||||
|
||||
#ifndef OPENSSL_NO_NEXTPROTONEG
|
||||
RESOLVEFUNC(SSL_select_next_proto)
|
||||
RESOLVEFUNC(SSL_CTX_set_next_proto_select_cb)
|
||||
RESOLVEFUNC(SSL_get0_next_proto_negotiated)
|
||||
RESOLVEFUNC(SSL_set_alpn_protos)
|
||||
RESOLVEFUNC(SSL_CTX_set_alpn_select_cb)
|
||||
RESOLVEFUNC(SSL_get0_alpn_selected)
|
||||
RESOLVEFUNC(SSL_select_next_proto)
|
||||
RESOLVEFUNC(SSL_CTX_set_next_proto_select_cb)
|
||||
RESOLVEFUNC(SSL_get0_next_proto_negotiated)
|
||||
RESOLVEFUNC(SSL_set_alpn_protos)
|
||||
RESOLVEFUNC(SSL_CTX_set_alpn_select_cb)
|
||||
RESOLVEFUNC(SSL_get0_alpn_selected)
|
||||
#endif // !OPENSSL_NO_NEXTPROTONEG
|
||||
|
||||
#if QT_CONFIG(dtls)
|
||||
RESOLVEFUNC(SSL_CTX_set_cookie_generate_cb)
|
||||
RESOLVEFUNC(SSL_CTX_set_cookie_verify_cb)
|
||||
RESOLVEFUNC(DTLS_server_method)
|
||||
RESOLVEFUNC(DTLS_client_method)
|
||||
RESOLVEFUNC(SSL_CTX_set_cookie_generate_cb)
|
||||
RESOLVEFUNC(SSL_CTX_set_cookie_verify_cb)
|
||||
RESOLVEFUNC(DTLS_server_method)
|
||||
RESOLVEFUNC(DTLS_client_method)
|
||||
#endif // dtls
|
||||
|
||||
RESOLVEFUNC(CRYPTO_malloc)
|
||||
RESOLVEFUNC(DH_new)
|
||||
RESOLVEFUNC(DH_free)
|
||||
RESOLVEFUNC(d2i_DHparams)
|
||||
RESOLVEFUNC(i2d_DHparams)
|
||||
RESOLVEFUNC(DH_check)
|
||||
RESOLVEFUNC(BN_bin2bn)
|
||||
RESOLVEFUNC(CRYPTO_malloc)
|
||||
RESOLVEFUNC(DH_new)
|
||||
RESOLVEFUNC(DH_free)
|
||||
RESOLVEFUNC(d2i_DHparams)
|
||||
RESOLVEFUNC(i2d_DHparams)
|
||||
RESOLVEFUNC(DH_check)
|
||||
RESOLVEFUNC(BN_bin2bn)
|
||||
|
||||
#ifndef OPENSSL_NO_EC
|
||||
RESOLVEFUNC(EC_get_builtin_curves)
|
||||
RESOLVEFUNC(EC_get_builtin_curves)
|
||||
#endif // OPENSSL_NO_EC
|
||||
|
||||
RESOLVEFUNC(PKCS12_parse)
|
||||
RESOLVEFUNC(d2i_PKCS12_bio)
|
||||
RESOLVEFUNC(PKCS12_free)
|
||||
RESOLVEFUNC(PKCS12_parse)
|
||||
RESOLVEFUNC(d2i_PKCS12_bio)
|
||||
RESOLVEFUNC(PKCS12_free)
|
||||
return true;
|
||||
}();
|
||||
|
||||
symbolsResolved.storeRelease(true);
|
||||
return true;
|
||||
return symbolsResolved;
|
||||
}
|
||||
#endif // QT_CONFIG(library)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user