diff options
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/ssl/qsslkey_openssl.cpp | 6 | ||||
-rw-r--r-- | src/network/ssl/qsslkey_p.cpp | 7 | ||||
-rw-r--r-- | src/network/ssl/qsslkey_p.h | 2 |
3 files changed, 12 insertions, 3 deletions
diff --git a/src/network/ssl/qsslkey_openssl.cpp b/src/network/ssl/qsslkey_openssl.cpp index a6dab2ba38..14559d6618 100644 --- a/src/network/ssl/qsslkey_openssl.cpp +++ b/src/network/ssl/qsslkey_openssl.cpp @@ -109,6 +109,12 @@ bool QSslKeyPrivate::fromEVP_PKEY(EVP_PKEY *pkey) return false; } +void QSslKeyPrivate::decodeDer(const QByteArray &der, const QByteArray &passPhrase, + bool deepClear) +{ + decodePem(pemFromDer(der), passPhrase, deepClear); +} + void QSslKeyPrivate::decodePem(const QByteArray &pem, const QByteArray &passPhrase, bool deepClear) { diff --git a/src/network/ssl/qsslkey_p.cpp b/src/network/ssl/qsslkey_p.cpp index c6e873dc49..991b29792e 100644 --- a/src/network/ssl/qsslkey_p.cpp +++ b/src/network/ssl/qsslkey_p.cpp @@ -189,9 +189,10 @@ QSslKey::QSslKey(const QByteArray &encoded, QSsl::KeyAlgorithm algorithm, { d->type = type; d->algorithm = algorithm; - d->decodePem((encoding == QSsl::Der) - ? d->pemFromDer(encoded) : encoded, - passPhrase); + if (encoding == QSsl::Der) + d->decodeDer(encoded, passPhrase); + else + d->decodePem(encoded, passPhrase); } /*! diff --git a/src/network/ssl/qsslkey_p.h b/src/network/ssl/qsslkey_p.h index fd5f97c291..e12bbadc06 100644 --- a/src/network/ssl/qsslkey_p.h +++ b/src/network/ssl/qsslkey_p.h @@ -86,6 +86,8 @@ public: void clear(bool deep = true); bool fromEVP_PKEY(EVP_PKEY *pkey); + void decodeDer(const QByteArray &der, const QByteArray &passPhrase, + bool deepClear = true); void decodePem(const QByteArray &pem, const QByteArray &passPhrase, bool deepClear = true); QByteArray pemHeader() const; |