TLS plugin (OpenSSL): don't use the deprecated functions
If we have OPENSSL_NO_DEPRECATED_3_0 defined. This includes RSA, DSA, EC and DH-related APIs. As of now, we only make sure the code still compiles. Pick-to: 6.2 5.15 Fixes: QTBUG-83733 Change-Id: Id455b851421ce0dcdfb0229fa515ba2b2ed690b1 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>bb10
parent
4748369eb2
commit
4b282e0602
|
|
@ -734,6 +734,7 @@ QT_WARNING_POP
|
|||
}
|
||||
|
||||
if (!dhparams.isEmpty()) {
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
const QByteArray ¶ms = dhparams.d->derData;
|
||||
const char *ptr = params.constData();
|
||||
DH *dh = q_d2i_DHparams(nullptr, reinterpret_cast<const unsigned char **>(&ptr),
|
||||
|
|
@ -742,6 +743,9 @@ QT_WARNING_POP
|
|||
qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form");
|
||||
q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh);
|
||||
q_DH_free(dh);
|
||||
#else
|
||||
qCWarning(lcTlsBackend, "Diffie-Hellman parameters are not supported, because OpenSSL v3 was built with deprecated API removed");
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@
|
|||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
|
||||
namespace {
|
||||
|
||||
bool isSafeDH(DH *dh)
|
||||
|
|
@ -102,8 +104,11 @@ bool isSafeDH(DH *dh)
|
|||
|
||||
} // unnamed namespace
|
||||
|
||||
#endif
|
||||
|
||||
int QTlsBackendOpenSSL::dhParametersFromDer(const QByteArray &der, QByteArray *derData) const
|
||||
{
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
Q_ASSERT(derData);
|
||||
|
||||
if (der.isEmpty())
|
||||
|
|
@ -127,12 +132,17 @@ int QTlsBackendOpenSSL::dhParametersFromDer(const QByteArray &der, QByteArray *d
|
|||
} else {
|
||||
return DHParams::InvalidInputDataError;
|
||||
}
|
||||
|
||||
#else
|
||||
Q_UNUSED(der);
|
||||
Q_UNUSED(derData);
|
||||
qCWarning(lcTlsBackend, "Diffie-Hellman parameters are not supported, because OpenSSL v3 was built with deprecated API removed");
|
||||
#endif
|
||||
return DHParams::NoError;
|
||||
}
|
||||
|
||||
int QTlsBackendOpenSSL::dhParametersFromPem(const QByteArray &pem, QByteArray *data) const
|
||||
{
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
Q_ASSERT(data);
|
||||
|
||||
if (pem.isEmpty())
|
||||
|
|
@ -173,7 +183,11 @@ int QTlsBackendOpenSSL::dhParametersFromPem(const QByteArray &pem, QByteArray *d
|
|||
} else {
|
||||
return DHParams::InvalidInputDataError;
|
||||
}
|
||||
|
||||
#else
|
||||
Q_UNUSED(pem);
|
||||
Q_UNUSED(data);
|
||||
qCWarning(lcTlsBackend, "Diffie-Hellman parameters are not supported, because OpenSSL v3 was built with deprecated API removed");
|
||||
#endif
|
||||
return DHParams::NoError;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -258,8 +258,6 @@ DEFINEFUNC3(int, BIO_read, BIO *a, a, void *b, b, int c, c, return -1, return)
|
|||
DEFINEFUNC3(int, BIO_write, BIO *a, a, const void *b, b, int c, c, return -1, return)
|
||||
DEFINEFUNC(int, BN_num_bits, const BIGNUM *a, a, return 0, return)
|
||||
DEFINEFUNC2(BN_ULONG, BN_mod_word, const BIGNUM *a, a, BN_ULONG w, w, return static_cast<BN_ULONG>(-1), return)
|
||||
DEFINEFUNC(DSA *, DSA_new, DUMMYARG, DUMMYARG, return nullptr, return)
|
||||
DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG)
|
||||
DEFINEFUNC3(X509 *, d2i_X509, X509 **a, a, const unsigned char **b, b, long c, c, return nullptr, return)
|
||||
DEFINEFUNC2(char *, ERR_error_string, unsigned long a, a, char *b, b, return nullptr, return)
|
||||
DEFINEFUNC3(void, ERR_error_string_n, unsigned long e, e, char *b, b, size_t len, len, return, DUMMYARG)
|
||||
|
|
@ -307,8 +305,6 @@ DEFINEFUNC2(int, PEM_write_bio_PUBKEY, BIO *a, a, EVP_PKEY *b, b, return 0, retu
|
|||
DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG)
|
||||
DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return)
|
||||
DEFINEFUNC2(int, RAND_bytes, unsigned char *b, b, int n, n, return 0, return)
|
||||
DEFINEFUNC(RSA *, RSA_new, DUMMYARG, DUMMYARG, return nullptr, return)
|
||||
DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG)
|
||||
DEFINEFUNC(int, SSL_accept, SSL *a, a, return -1, return)
|
||||
DEFINEFUNC(int, SSL_clear, SSL *a, a, return -1, return)
|
||||
DEFINEFUNC3(char *, SSL_CIPHER_description, const SSL_CIPHER *a, a, char *b, b, int c, c, return nullptr, return)
|
||||
|
|
@ -327,7 +323,6 @@ DEFINEFUNC2(void, SSL_CTX_set_verify_depth, SSL_CTX *a, a, int b, b, return, DUM
|
|||
DEFINEFUNC2(int, SSL_CTX_use_certificate, SSL_CTX *a, a, X509 *b, b, return -1, return)
|
||||
DEFINEFUNC3(int, SSL_CTX_use_certificate_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return)
|
||||
DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return -1, return)
|
||||
DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return)
|
||||
DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return)
|
||||
DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return)
|
||||
DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return);
|
||||
|
|
@ -476,9 +471,6 @@ DEFINEFUNC2(int, DH_check, DH *dh, dh, int *codes, codes, return 0, return)
|
|||
DEFINEFUNC3(BIGNUM *, BN_bin2bn, const unsigned char *s, s, int len, len, BIGNUM *ret, ret, return nullptr, return)
|
||||
|
||||
#ifndef OPENSSL_NO_EC
|
||||
DEFINEFUNC(EC_KEY *, EC_KEY_dup, const EC_KEY *ec, ec, return nullptr, return)
|
||||
DEFINEFUNC(EC_KEY *, EC_KEY_new_by_curve_name, int nid, nid, return nullptr, return)
|
||||
DEFINEFUNC(void, EC_KEY_free, EC_KEY *ecdh, ecdh, return, DUMMYARG)
|
||||
DEFINEFUNC2(size_t, EC_get_builtin_curves, EC_builtin_curve * r, r, size_t nitems, nitems, return 0, return)
|
||||
DEFINEFUNC(int, EC_curve_nist2nid, const char *name, name, return 0, return)
|
||||
#endif // OPENSSL_NO_EC
|
||||
|
|
@ -500,6 +492,14 @@ DEFINEFUNC2(int, PEM_write_bio_RSA_PUBKEY, BIO *a, a, RSA *b, b, return 0, retur
|
|||
DEFINEFUNC7(int, PEM_write_bio_DSAPrivateKey, BIO *a, a, DSA *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
|
||||
DEFINEFUNC7(int, PEM_write_bio_RSAPrivateKey, BIO *a, a, RSA *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
|
||||
|
||||
DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return)
|
||||
|
||||
DEFINEFUNC(DSA *, DSA_new, DUMMYARG, DUMMYARG, return nullptr, return)
|
||||
DEFINEFUNC(void, DSA_free, DSA *a, a, return, DUMMYARG)
|
||||
|
||||
DEFINEFUNC(RSA *, RSA_new, DUMMYARG, DUMMYARG, return nullptr, return)
|
||||
DEFINEFUNC(void, RSA_free, RSA *a, a, return, DUMMYARG)
|
||||
|
||||
DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return)
|
||||
DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return)
|
||||
DEFINEFUNC(int, DH_bits, DH *dh, dh, return 0, return)
|
||||
|
|
@ -529,6 +529,10 @@ DEFINEFUNC(int, EC_GROUP_get_degree, const EC_GROUP* g, g, return 0, return)
|
|||
DEFINEFUNC2(int, EVP_PKEY_set1_EC_KEY, EVP_PKEY *a, a, EC_KEY *b, b, return -1, return)
|
||||
DEFINEFUNC(EC_KEY *, EVP_PKEY_get1_EC_KEY, EVP_PKEY *a, a, return nullptr, return)
|
||||
|
||||
DEFINEFUNC(EC_KEY *, EC_KEY_dup, const EC_KEY *ec, ec, return nullptr, return)
|
||||
DEFINEFUNC(EC_KEY *, EC_KEY_new_by_curve_name, int nid, nid, return nullptr, return)
|
||||
DEFINEFUNC(void, EC_KEY_free, EC_KEY *ecdh, ecdh, return, DUMMYARG)
|
||||
|
||||
#endif // OPENSSL_NO_EC
|
||||
|
||||
|
||||
|
|
@ -1021,8 +1025,6 @@ bool q_resolveOpenSslSymbols()
|
|||
RESOLVEFUNC(BN_num_bits)
|
||||
RESOLVEFUNC(BN_is_word)
|
||||
RESOLVEFUNC(BN_mod_word)
|
||||
RESOLVEFUNC(DSA_new)
|
||||
RESOLVEFUNC(DSA_free)
|
||||
RESOLVEFUNC(ERR_error_string)
|
||||
RESOLVEFUNC(ERR_error_string_n)
|
||||
RESOLVEFUNC(ERR_get_error)
|
||||
|
|
@ -1067,8 +1069,6 @@ bool q_resolveOpenSslSymbols()
|
|||
RESOLVEFUNC(RAND_seed)
|
||||
RESOLVEFUNC(RAND_status)
|
||||
RESOLVEFUNC(RAND_bytes)
|
||||
RESOLVEFUNC(RSA_new)
|
||||
RESOLVEFUNC(RSA_free)
|
||||
RESOLVEFUNC(SSL_CIPHER_description)
|
||||
RESOLVEFUNC(SSL_CIPHER_get_bits)
|
||||
RESOLVEFUNC(SSL_get_rbio)
|
||||
|
|
@ -1084,7 +1084,6 @@ bool q_resolveOpenSslSymbols()
|
|||
RESOLVEFUNC(SSL_CTX_use_certificate)
|
||||
RESOLVEFUNC(SSL_CTX_use_certificate_file)
|
||||
RESOLVEFUNC(SSL_CTX_use_PrivateKey)
|
||||
RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
|
||||
RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
|
||||
RESOLVEFUNC(SSL_CTX_get_cert_store);
|
||||
RESOLVEFUNC(SSL_CONF_CTX_new);
|
||||
|
|
@ -1133,6 +1132,13 @@ bool q_resolveOpenSslSymbols()
|
|||
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(RSA_new)
|
||||
RESOLVEFUNC(RSA_free)
|
||||
|
||||
RESOLVEFUNC(DH_bits)
|
||||
RESOLVEFUNC(DSA_bits)
|
||||
|
|
@ -1148,6 +1154,9 @@ bool q_resolveOpenSslSymbols()
|
|||
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
|
||||
|
||||
|
|
@ -1255,9 +1264,6 @@ bool q_resolveOpenSslSymbols()
|
|||
RESOLVEFUNC(BN_bin2bn)
|
||||
|
||||
#ifndef OPENSSL_NO_EC
|
||||
RESOLVEFUNC(EC_KEY_dup)
|
||||
RESOLVEFUNC(EC_KEY_new_by_curve_name)
|
||||
RESOLVEFUNC(EC_KEY_free)
|
||||
RESOLVEFUNC(EC_get_builtin_curves)
|
||||
#endif // OPENSSL_NO_EC
|
||||
|
||||
|
|
|
|||
|
|
@ -378,8 +378,6 @@ int q_BN_num_bits(const BIGNUM *a);
|
|||
int q_BN_is_word(BIGNUM *a, BN_ULONG w);
|
||||
BN_ULONG q_BN_mod_word(const BIGNUM *a, BN_ULONG w);
|
||||
|
||||
DSA *q_DSA_new();
|
||||
void q_DSA_free(DSA *a);
|
||||
X509 *q_d2i_X509(X509 **a, const unsigned char **b, long c);
|
||||
char *q_ERR_error_string(unsigned long a, char *b);
|
||||
void q_ERR_error_string_n(unsigned long e, char *buf, size_t len);
|
||||
|
|
@ -436,8 +434,6 @@ int q_PEM_write_bio_PUBKEY(BIO *a, EVP_PKEY *b);
|
|||
void q_RAND_seed(const void *a, int b);
|
||||
int q_RAND_status();
|
||||
int q_RAND_bytes(unsigned char *b, int n);
|
||||
RSA *q_RSA_new();
|
||||
void q_RSA_free(RSA *a);
|
||||
int q_SSL_accept(SSL *a);
|
||||
int q_SSL_clear(SSL *a);
|
||||
char *q_SSL_CIPHER_description(const SSL_CIPHER *a, char *b, int c);
|
||||
|
|
@ -459,7 +455,6 @@ long q_SSL_CTX_callback_ctrl(SSL_CTX *, int, GenericCallbackType);
|
|||
int q_SSL_CTX_use_certificate(SSL_CTX *a, X509 *b);
|
||||
int q_SSL_CTX_use_certificate_file(SSL_CTX *a, const char *b, int c);
|
||||
int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b);
|
||||
int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b);
|
||||
int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c);
|
||||
X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a);
|
||||
SSL_CONF_CTX *q_SSL_CONF_CTX_new();
|
||||
|
|
@ -552,9 +547,6 @@ BIGNUM *q_BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
|
|||
|
||||
#ifndef OPENSSL_NO_EC
|
||||
// EC Diffie-Hellman support
|
||||
EC_KEY *q_EC_KEY_dup(const EC_KEY *src);
|
||||
EC_KEY *q_EC_KEY_new_by_curve_name(int nid);
|
||||
void q_EC_KEY_free(EC_KEY *ecdh);
|
||||
#define q_SSL_CTX_set_tmp_ecdh(ctx, ecdh) q_SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_ECDH, 0, (char *)ecdh)
|
||||
|
||||
// EC curves management
|
||||
|
|
@ -724,6 +716,22 @@ int q_EVP_PKEY_base_id(EVP_PKEY *a);
|
|||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
|
||||
DSA *q_DSA_new();
|
||||
void q_DSA_free(DSA *a);
|
||||
|
||||
RSA *q_RSA_new();
|
||||
void q_RSA_free(RSA *a);
|
||||
|
||||
#ifndef OPENSSL_NO_EC
|
||||
|
||||
EC_KEY *q_EC_KEY_dup(const EC_KEY *src);
|
||||
EC_KEY *q_EC_KEY_new_by_curve_name(int nid);
|
||||
void q_EC_KEY_free(EC_KEY *ecdh);
|
||||
|
||||
#endif // OPENSSL_NO_EC
|
||||
|
||||
int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b);
|
||||
|
||||
DSA *q_PEM_read_bio_DSA_PUBKEY(BIO *a, DSA **b, pem_password_cb *c, void *d);
|
||||
RSA *q_PEM_read_bio_RSA_PUBKEY(BIO *a, RSA **b, pem_password_cb *c, void *d);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue