SSH: Add support for SHA-256 HMAC.

As recommended in RFC 6668.

Task-number: QTCREATORBUG-14008
Change-Id: Icd4613dda9cce2b482499c626b863c17e8fa0c20
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
This commit is contained in:
Christian Kandeler
2015-02-20 15:43:00 +01:00
parent 143af2845d
commit 2244adcca8
3 changed files with 13 additions and 6 deletions

View File

@@ -94,16 +94,20 @@ inline const char *botanSha1Name() { return "SHA-1"; }
inline const char *botanHMacAlgoName(const QByteArray &rfcAlgoName) inline const char *botanHMacAlgoName(const QByteArray &rfcAlgoName)
{ {
Q_ASSERT(rfcAlgoName == SshCapabilities::HMacSha1); Q_ASSERT(rfcAlgoName == SshCapabilities::HMacSha1
Q_UNUSED(rfcAlgoName); || rfcAlgoName == SshCapabilities::HMacSha256);
if (rfcAlgoName == SshCapabilities::HMacSha1)
return botanSha1Name(); return botanSha1Name();
return "SHA-256";
} }
inline quint32 botanHMacKeyLen(const QByteArray &rfcAlgoName) inline quint32 botanHMacKeyLen(const QByteArray &rfcAlgoName)
{ {
Q_ASSERT(rfcAlgoName == SshCapabilities::HMacSha1); Q_ASSERT(rfcAlgoName == SshCapabilities::HMacSha1
Q_UNUSED(rfcAlgoName); || rfcAlgoName == SshCapabilities::HMacSha256);
if (rfcAlgoName == SshCapabilities::HMacSha1)
return 20; return 20;
return 32;
} }
} // namespace Internal } // namespace Internal

View File

@@ -78,8 +78,10 @@ const QList<QByteArray> SshCapabilities::EncryptionAlgorithms
const QByteArray SshCapabilities::HMacSha1("hmac-sha1"); const QByteArray SshCapabilities::HMacSha1("hmac-sha1");
const QByteArray SshCapabilities::HMacSha196("hmac-sha1-96"); const QByteArray SshCapabilities::HMacSha196("hmac-sha1-96");
const QByteArray SshCapabilities::HMacSha256("hmac-sha2-256");
const QList<QByteArray> SshCapabilities::MacAlgorithms const QList<QByteArray> SshCapabilities::MacAlgorithms
= QList<QByteArray>() /* << SshCapabilities::HMacSha196 */ = QList<QByteArray>() /* << SshCapabilities::HMacSha196 */
<< SshCapabilities::HMacSha256 // Recommended as per RFC 6668
<< SshCapabilities::HMacSha1; << SshCapabilities::HMacSha1;
const QList<QByteArray> SshCapabilities::CompressionAlgorithms const QList<QByteArray> SshCapabilities::CompressionAlgorithms

View File

@@ -58,6 +58,7 @@ public:
static const QByteArray HMacSha1; static const QByteArray HMacSha1;
static const QByteArray HMacSha196; static const QByteArray HMacSha196;
static const QByteArray HMacSha256;
static const QList<QByteArray> MacAlgorithms; static const QList<QByteArray> MacAlgorithms;
static const QList<QByteArray> CompressionAlgorithms; static const QList<QByteArray> CompressionAlgorithms;