diff --git a/src/main/java/net/schmizz/sshj/common/Buffer.java b/src/main/java/net/schmizz/sshj/common/Buffer.java index aab13eb6..2c809774 100644 --- a/src/main/java/net/schmizz/sshj/common/Buffer.java +++ b/src/main/java/net/schmizz/sshj/common/Buffer.java @@ -426,18 +426,7 @@ public class Buffer> { public PublicKey readPublicKey() throws BufferException { try { - final KeyType type = KeyType.fromString(readString()); - switch (type) { - case RSA: - case DSA: - return type.readPubKeyFromBuffer(this); - default: - if (SecurityUtils.isBouncyCastleRegistered()) { - return type.readPubKeyFromBuffer(this); - } else { - throw new BufferException("BouncyCastle is required to read a key of type " + type); - } - } + return KeyType.fromString(readString()).readPubKeyFromBuffer(this); } catch (GeneralSecurityException e) { throw new SSHRuntimeException(e); } diff --git a/src/main/java/net/schmizz/sshj/common/KeyType.java b/src/main/java/net/schmizz/sshj/common/KeyType.java index e30ecb96..7d6f62fc 100644 --- a/src/main/java/net/schmizz/sshj/common/KeyType.java +++ b/src/main/java/net/schmizz/sshj/common/KeyType.java @@ -116,6 +116,9 @@ public enum KeyType { @Override public PublicKey readPubKeyFromBuffer(Buffer buf) throws GeneralSecurityException { + if (!SecurityUtils.isBouncyCastleRegistered()) { + throw new GeneralSecurityException("BouncyCastle is required to read a key of type " + sType); + } try { // final String algo = buf.readString(); it has been already read final String curveName = buf.readString(); diff --git a/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java b/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java index ee6eca16..eb1a7d0d 100644 --- a/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java +++ b/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java @@ -57,7 +57,7 @@ public class OpenSSHKnownHosts try { // Read in the file, storing each line as an entry String line; - while ((line = br.readLine()) != null) + while ((line = br.readLine()) != null) { try { HostEntry entry = entryFactory.parseEntry(line); if (entry != null) { @@ -65,7 +65,10 @@ public class OpenSSHKnownHosts } } catch (SSHException ignore) { log.debug("Bad line ({}): {} ", ignore.toString(), line); + } catch (SSHRuntimeException ignore) { + log.debug("Failed to process line ({}): {} ", ignore.toString(), line); } + } } finally { IOUtils.closeQuietly(br); }