diff options
author | André Klitzing <aklitzing@gmail.com> | 2014-11-18 10:18:18 +0100 |
---|---|---|
committer | André Klitzing <aklitzing@gmail.com> | 2015-01-18 10:18:43 +0100 |
commit | 962ea5690cb9351822c30da534ecae7aeeba667d (patch) | |
tree | c3fef960ae04c61bd55426cc05c7a910b8b48f52 /src/network/ssl/qsslkey_p.cpp | |
parent | a6a865e24999bf878f6f80341b7fc14f2b67a05e (diff) |
Add elliptic curve support to QSsl
Add possibility to get length and other information of EC based
certificates. Also it is possible to parse those public/private
keys from PEM and DER encoded files.
Based on patch by Remco Bloemen
[ChangeLog][QtNetwork][SSL/TLS support] It is now possible to
parse elliptic curve certificates.
Change-Id: I4b11f726296aecda89c3cbd195d7c817ae6fc47b
Task-number: QTBUG-18972
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/network/ssl/qsslkey_p.cpp')
-rw-r--r-- | src/network/ssl/qsslkey_p.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/network/ssl/qsslkey_p.cpp b/src/network/ssl/qsslkey_p.cpp index 6162034fd7..99d502e8f9 100644 --- a/src/network/ssl/qsslkey_p.cpp +++ b/src/network/ssl/qsslkey_p.cpp @@ -103,7 +103,13 @@ QByteArray QSslKeyPrivate::pemHeader() const return QByteArrayLiteral("-----BEGIN PUBLIC KEY-----"); else if (algorithm == QSsl::Rsa) return QByteArrayLiteral("-----BEGIN RSA PRIVATE KEY-----"); - return QByteArrayLiteral("-----BEGIN DSA PRIVATE KEY-----"); + else if (algorithm == QSsl::Dsa) + return QByteArrayLiteral("-----BEGIN DSA PRIVATE KEY-----"); + else if (algorithm == QSsl::Ec) + return QByteArrayLiteral("-----BEGIN EC PRIVATE KEY-----"); + + Q_UNREACHABLE(); + return QByteArray(); } /*! @@ -115,7 +121,13 @@ QByteArray QSslKeyPrivate::pemFooter() const return QByteArrayLiteral("-----END PUBLIC KEY-----"); else if (algorithm == QSsl::Rsa) return QByteArrayLiteral("-----END RSA PRIVATE KEY-----"); - return QByteArrayLiteral("-----END DSA PRIVATE KEY-----"); + else if (algorithm == QSsl::Dsa) + return QByteArrayLiteral("-----END DSA PRIVATE KEY-----"); + else if (algorithm == QSsl::Ec) + return QByteArrayLiteral("-----END EC PRIVATE KEY-----"); + + Q_UNREACHABLE(); + return QByteArray(); } /*! @@ -438,7 +450,7 @@ QDebug operator<<(QDebug debug, const QSslKey &key) debug << "QSslKey(" << (key.type() == QSsl::PublicKey ? "PublicKey" : "PrivateKey") << ", " << (key.algorithm() == QSsl::Opaque ? "OPAQUE" : - (key.algorithm() == QSsl::Rsa ? "RSA" : "DSA")) + (key.algorithm() == QSsl::Rsa ? "RSA" : ((key.algorithm() == QSsl::Dsa) ? "DSA" : "EC"))) << ", " << key.length() << ')'; return debug; |