diff options
Diffstat (limited to 'src/network/ssl/qsslcertificate_qt.cpp')
-rw-r--r-- | src/network/ssl/qsslcertificate_qt.cpp | 15 |
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 |