From eecaad8b8e2c447429c31a01d49260ddd6b4ee03 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 16 Apr 2016 17:35:32 -0400 Subject: [PATCH] Proof of concept #1026 --- src/main/java/com/gitblit/transport/ssh/SshKey.java | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gitblit/transport/ssh/SshKey.java b/src/main/java/com/gitblit/transport/ssh/SshKey.java index c2fc91c..9fd1005 100644 --- a/src/main/java/com/gitblit/transport/ssh/SshKey.java +++ b/src/main/java/com/gitblit/transport/ssh/SshKey.java @@ -22,11 +22,13 @@ import org.apache.commons.codec.binary.Base64; import org.apache.sshd.common.SshException; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; import org.eclipse.jgit.lib.Constants; import com.gitblit.Constants.AccessPermission; import com.gitblit.utils.StringUtils; +import com.google.common.base.Joiner; /** * Class that encapsulates a public SSH key and it's metadata. @@ -51,7 +53,8 @@ private AccessPermission permission; public SshKey(String data) { - this.rawData = data; + // strip out line breaks (issue-571) + this.rawData = Joiner.on("").join(data.replace("\r\n", "\n").split("\n")); this.permission = AccessPermission.PUSH; } @@ -70,9 +73,9 @@ } final byte[] bin = Base64.decodeBase64(Constants.encodeASCII(parts[1])); try { - publicKey = new Buffer(bin).getRawPublicKey(); + publicKey = new ByteArrayBuffer(bin).getRawPublicKey(); } catch (SshException e) { - e.printStackTrace(); + throw new RuntimeException(e); } } return publicKey; @@ -143,7 +146,7 @@ public String getRawData() { if (rawData == null && publicKey != null) { // build the raw data manually from the public key - Buffer buf = new Buffer(); + Buffer buf = new ByteArrayBuffer(); // 1: identify the algorithm buf.putRawPublicKey(publicKey); -- Gitblit v1.9.1