From 5a4943730fb343cf90df4088d4959121796b7a01 Mon Sep 17 00:00:00 2001 From: hsm Date: Sun, 29 May 2016 04:34:17 +0100 Subject: support for open-keychain auth --- .../main/java/org/connectbot/service/TerminalManager.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'app/src/main/java/org/connectbot/service/TerminalManager.java') diff --git a/app/src/main/java/org/connectbot/service/TerminalManager.java b/app/src/main/java/org/connectbot/service/TerminalManager.java index 73eb4d1..4f7893f 100644 --- a/app/src/main/java/org/connectbot/service/TerminalManager.java +++ b/app/src/main/java/org/connectbot/service/TerminalManager.java @@ -60,6 +60,8 @@ import android.os.Vibrator; import android.preference.PreferenceManager; import android.util.Log; +import com.trilead.ssh2.crypto.PEMDecoder; + /** * Manager for SSH connections that runs as a service. This service holds a list * of currently connected SSH bridges that are ready for connection up to a GUI @@ -141,9 +143,15 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen for (PubkeyBean pubkey : pubkeys) { try { - PrivateKey privKey = PubkeyUtils.decodePrivate(pubkey.getPrivateKey(), pubkey.getType()); - PublicKey pubKey = PubkeyUtils.decodePublic(pubkey.getPublicKey(), pubkey.getType()); - KeyPair pair = new KeyPair(pubKey, privKey); + KeyPair pair; + + if (PubkeyDatabase.KEY_TYPE_IMPORTED.equals(pubkey.getType())) { + pair = PEMDecoder.decode(new String(pubkey.getPrivateKey()).toCharArray(), ""); + } else { + PrivateKey privKey = PubkeyUtils.decodePrivate(pubkey.getPrivateKey(), pubkey.getType()); + PublicKey pubKey = PubkeyUtils.decodePublic(pubkey.getPublicKey(), pubkey.getType()); + pair = new KeyPair(pubKey, privKey); + } addKey(pubkey, pair); } catch (Exception e) { -- cgit v1.2.3