diff options
author | Andrew Knight <andrew.knight@digia.com> | 2014-08-09 11:15:42 +0300 |
---|---|---|
committer | Andrew Knight <andrew.knight@digia.com> | 2014-08-11 23:29:22 +0200 |
commit | 259cf68e06bbcb8bd9bae5806f5911369cae3f2f (patch) | |
tree | f7a36c813bcfd17453ae1b466f1fe0d821c73c7f | |
parent | 2fe8efbefe07605d7cd59b08bce358b48580ca7c (diff) |
SSL backend: Add a decodeDer() method to the private API
This allows QSslKey to avoid converting to pem format if the backend
supports native der decoding.
Change-Id: I0822a21401ad0ca81c6eeb6c7d53c421e1e2e93a
Reviewed-by: Richard J. Moore <rich@kde.org>
-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; |