diff options
author | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-07-20 16:19:58 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-07-21 16:11:59 +0000 |
commit | 815caedceb9ea0075292e00639d12104be287aba (patch) | |
tree | 8b969113f29e015092e480ddc198b750f66a9b3c /src/libs/ssh/sshcapabilities.cpp | |
parent | 0aadfbd4537e83bab7b65c3658aa323c003610c4 (diff) |
SSH: Support more ECDSA public key sizes.
Namely, 384 and 521 bits.
Change-Id: I245f8521b86d615163e5c071014e455a584c1305
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Diffstat (limited to 'src/libs/ssh/sshcapabilities.cpp')
-rw-r--r-- | src/libs/ssh/sshcapabilities.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/libs/ssh/sshcapabilities.cpp b/src/libs/ssh/sshcapabilities.cpp index 725f01c1a0..6bef99b91d 100644 --- a/src/libs/ssh/sshcapabilities.cpp +++ b/src/libs/ssh/sshcapabilities.cpp @@ -65,9 +65,14 @@ const QList<QByteArray> SshCapabilities::KeyExchangeMethods = QList<QByteArray>( const QByteArray SshCapabilities::PubKeyDss("ssh-dss"); const QByteArray SshCapabilities::PubKeyRsa("ssh-rsa"); -const QByteArray SshCapabilities::PubKeyEcdsa256("ecdsa-sha2-nistp256"); +const QByteArray SshCapabilities::PubKeyEcdsaPrefix("ecdsa-sha2-nistp"); +const QByteArray SshCapabilities::PubKeyEcdsa256 = SshCapabilities::PubKeyEcdsaPrefix + "256"; +const QByteArray SshCapabilities::PubKeyEcdsa384 = SshCapabilities::PubKeyEcdsaPrefix + "384"; +const QByteArray SshCapabilities::PubKeyEcdsa521 = SshCapabilities::PubKeyEcdsaPrefix + "521"; const QList<QByteArray> SshCapabilities::PublicKeyAlgorithms = QList<QByteArray>() << SshCapabilities::PubKeyEcdsa256 + << SshCapabilities::PubKeyEcdsa384 + << SshCapabilities::PubKeyEcdsa521 << SshCapabilities::PubKeyRsa << SshCapabilities::PubKeyDss; @@ -134,6 +139,22 @@ int SshCapabilities::ecdsaIntegerWidthInBytes(const QByteArray &ecdsaAlgo) { if (ecdsaAlgo == PubKeyEcdsa256) return 32; + if (ecdsaAlgo == PubKeyEcdsa384) + return 48; + if (ecdsaAlgo == PubKeyEcdsa521) + return 66; + throw SshClientException(SshInternalError, SSH_TR("Unexpected ecdsa algorithm \"%1\"") + .arg(QString::fromLatin1(ecdsaAlgo))); +} + +const char *SshCapabilities::oid(const QByteArray &ecdsaAlgo) +{ + if (ecdsaAlgo == PubKeyEcdsa256) + return "secp256r1"; + if (ecdsaAlgo == PubKeyEcdsa384) + return "secp384r1"; + if (ecdsaAlgo == PubKeyEcdsa521) + return "secp521r1"; throw SshClientException(SshInternalError, SSH_TR("Unexpected ecdsa algorithm \"%1\"") .arg(QString::fromLatin1(ecdsaAlgo))); } |