aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/connectbot/service/TerminalManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/connectbot/service/TerminalManager.java')
-rw-r--r--app/src/main/java/org/connectbot/service/TerminalManager.java14
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) {