summaryrefslogtreecommitdiffstats
path: root/src/network/ssl/qsslkey_p.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/ssl/qsslkey_p.cpp')
-rw-r--r--src/network/ssl/qsslkey_p.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/network/ssl/qsslkey_p.cpp b/src/network/ssl/qsslkey_p.cpp
index 37936fad10..40e9231177 100644
--- a/src/network/ssl/qsslkey_p.cpp
+++ b/src/network/ssl/qsslkey_p.cpp
@@ -228,7 +228,11 @@ QSslKey::QSslKey(QIODevice *device, QSsl::KeyAlgorithm algorithm, QSsl::Encoding
QSslKey::QSslKey(Qt::HANDLE handle, QSsl::KeyType type)
: d(new QSslKeyPrivate)
{
+#ifndef QT_NO_OPENSSL
d->opaque = reinterpret_cast<EVP_PKEY *>(handle);
+#else
+ d->opaque = handle;
+#endif
d->algorithm = QSsl::Opaque;
d->type = type;
d->isNull = !d->opaque;
@@ -323,7 +327,15 @@ QByteArray QSslKey::toDer(const QByteArray &passPhrase) const
if (d->isNull || d->algorithm == QSsl::Opaque)
return QByteArray();
+#ifndef QT_NO_OPENSSL
return d->derFromPem(toPem(passPhrase));
+#else
+ // Encrypted DER is nonsense, see QTBUG-41038.
+ if (d->type == QSsl::PrivateKey && !passPhrase.isEmpty())
+ return QByteArray();
+
+ return d->derData;
+#endif
}
/*!