diff options
Diffstat (limited to 'app/src/main/java/org/connectbot/service/TerminalManager.java')
-rw-r--r-- | app/src/main/java/org/connectbot/service/TerminalManager.java | 14 |
1 files changed, 11 insertions, 3 deletions
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) { |