From c69a7e4a6992fa9d2a4ea0d3bbd052e0709b07f7 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Mon, 14 Mar 2016 00:18:55 -0700 Subject: Handle EC keys in auth agent scenarios The fact that each key type has to be handled here probably shows that this interface is defined at the wrong level of abstraction. However, before EC keys were not being returned as possible identities which might have caused #378. --- app/src/main/java/org/connectbot/transport/SSH.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/org/connectbot/transport/SSH.java b/app/src/main/java/org/connectbot/transport/SSH.java index cb6703e..7892165 100644 --- a/app/src/main/java/org/connectbot/transport/SSH.java +++ b/app/src/main/java/org/connectbot/transport/SSH.java @@ -28,6 +28,8 @@ import java.security.PrivateKey; import java.security.PublicKey; import java.security.interfaces.DSAPrivateKey; import java.security.interfaces.DSAPublicKey; +import java.security.interfaces.ECPrivateKey; +import java.security.interfaces.ECPublicKey; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.InvalidKeySpecException; @@ -69,6 +71,7 @@ import com.trilead.ssh2.LocalPortForwarder; import com.trilead.ssh2.Session; import com.trilead.ssh2.crypto.PEMDecoder; import com.trilead.ssh2.signature.DSASHA1Verify; +import com.trilead.ssh2.signature.ECDSASHA2Verify; import com.trilead.ssh2.signature.RSASHA1Verify; /** @@ -897,6 +900,9 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC } else if (privKey instanceof DSAPrivateKey) { DSAPublicKey pubkey = (DSAPublicKey) pair.getPublic(); pubKeys.put(entry.getKey(), DSASHA1Verify.encodeSSHDSAPublicKey(pubkey)); + } else if (privKey instanceof ECPrivateKey) { + ECPublicKey pubkey = (ECPublicKey) pair.getPublic(); + pubKeys.put(entry.getKey(), ECDSASHA2Verify.encodeSSHECDSAPublicKey(pubkey)); } else continue; } catch (IOException e) { -- cgit v1.2.3