diff options
author | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2021-02-02 14:55:00 +0100 |
---|---|---|
committer | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2021-02-19 11:57:05 +0100 |
commit | 43d933bf5095170aef1f8223d333a13ea07c3031 (patch) | |
tree | 425331de13b19166f784c8c5e27b3e45eb09bfe3 /src/network/ssl/qsslcertificate_qt.cpp | |
parent | 9385e5407102240555ea1c18871f9adbff600afa (diff) |
Port QSslKey to the new plugin-based implementation
The idea is to have QSslKey(Private) backend-neutral and hide
all library-specific code inside plugins.
Fixes: QTBUG-90953
Task-number: QTBUG-65922
Change-Id: I2eeee3b2b72c78c2e24f2fb914abce3caa913be8
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
(cherry picked from commit 0352cf8e1bf57615b9faf3f6f383896444e762ac)
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
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 |