尝试KeyPairWrapper像这样使用:
KeyPair kp = ... // read keypair from filessh.authPublickey(user, new KeyPairWrapper(keypair));
使用BouncyCastle提供程序,您可以使用类似的方法从PKCS8 PEM(为混乱的代码道歉)中提取KeyPair。
public static KeyPair readKeypair(final InputStream is, final char[] password) throws IOException { PasswordFinder passwordFinder = password != null ? new StaticPasswordFinder(password) : null; KeyPair kp = null; try { // read the stream as a PEM enpred try { final PEMReader pem = new PEMReader(new InputStreamReader(is), passwordFinder); try { // Skip over entries in the file which are not KeyPairs do { final Object o = pem.readObject(); if (o == null) break; // at end of file else if (o instanceof KeyPair) kp = (KeyPair) o; } while (kp == null); } finally { pem.close(); } } catch (EncryptionException e) { throw new IOException("Error reading PEM stream: " + e.getMessage(), e); } } finally { is.close(); } // Cast the return to a KeyPair (or, if there is no [valid] return, throw an exception) if (kp != null) return kp; else throw new IOException("Stream " + is + " did not contain a PKCS8 KeyPair");}


