summaryrefslogtreecommitdiffstats
path: root/src/network/ssl/qsslcertificate_qt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/ssl/qsslcertificate_qt.cpp')
-rw-r--r--src/network/ssl/qsslcertificate_qt.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/network/ssl/qsslcertificate_qt.cpp b/src/network/ssl/qsslcertificate_qt.cpp
index 7c050e9c3b..d17ce534cb 100644
--- a/src/network/ssl/qsslcertificate_qt.cpp
+++ b/src/network/ssl/qsslcertificate_qt.cpp
@@ -39,6 +39,8 @@
#include "qsslcertificate.h"
#include "qsslcertificate_p.h"
+#include "qtlsbackend_p.h"
+#include "qtlskey_generic_p.h"
#include "qssl_p.h"
#ifndef QT_NO_SSL
@@ -153,11 +155,14 @@ Qt::HANDLE QSslCertificate::handle() const
QSslKey QSslCertificate::publicKey() const
{
QSslKey key;
- key.d->type = QSsl::PublicKey;
- if (d->publicKeyAlgorithm != QSsl::Opaque) {
- key.d->algorithm = d->publicKeyAlgorithm;
- key.d->decodeDer(d->publicKeyDerData);
- }
+ auto *tlsKey = QTlsBackend::backend<QSsl::TlsKeyGeneric>(key);
+ if (!tlsKey)
+ return key;
+
+ tlsKey->keyType = QSsl::PublicKey;
+ if (d->publicKeyAlgorithm != QSsl::Opaque)
+ tlsKey->decodeDer(QSsl::PublicKey, d->publicKeyAlgorithm, d->publicKeyDerData, {}, false);
+
return key;
}
#endif