From f76fee63ed9cb3a30d3c0c092d860b1cb93a481b Mon Sep 17 00:00:00 2001
From: Gerard Smyth <gerard.smyth@gmail.com>
Date: Thu, 08 May 2014 13:09:30 -0400
Subject: [PATCH] Updated the SyndicationServlet to provide an additional option to return details of the tags in the repository instead of the commits. This uses a new 'ot' request parameter to indicate the object type of the content to return, which can be ither TAG or COMMIT. If this is not provided, then COMMIT is assumed to maintain backwards compatability. If tags are returned, then the paging parameters, 'l' and 'pg' are still supported, but searching options are currently ignored.

---
 src/main/java/com/gitblit/transport/ssh/CachingPublicKeyAuthenticator.java |   32 ++++++++++++++------------------
 1 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/gitblit/transport/ssh/CachingPublicKeyAuthenticator.java b/src/main/java/com/gitblit/transport/ssh/CachingPublicKeyAuthenticator.java
index 48e5aa2..e804a0d 100644
--- a/src/main/java/com/gitblit/transport/ssh/CachingPublicKeyAuthenticator.java
+++ b/src/main/java/com/gitblit/transport/ssh/CachingPublicKeyAuthenticator.java
@@ -34,12 +34,10 @@
 import com.google.common.base.Preconditions;
 
 /**
- *
- * @author Eric Myrhe
+ * Authenticates an SSH session against a public key.
  *
  */
-public class CachingPublicKeyAuthenticator implements PublickeyAuthenticator,
-		SessionListener {
+public class CachingPublicKeyAuthenticator implements PublickeyAuthenticator, SessionListener {
 
 	protected final Logger log = LoggerFactory.getLogger(getClass());
 
@@ -47,18 +45,15 @@
 
 	protected final IAuthenticationManager authManager;
 
-	private final Map<ServerSession, Map<PublicKey, Boolean>> cache =
-			new ConcurrentHashMap<ServerSession, Map<PublicKey, Boolean>>();
+	private final Map<ServerSession, Map<PublicKey, Boolean>> cache = new ConcurrentHashMap<ServerSession, Map<PublicKey, Boolean>>();
 
-	public CachingPublicKeyAuthenticator(IPublicKeyManager keyManager,
-			IAuthenticationManager authManager) {
+	public CachingPublicKeyAuthenticator(IPublicKeyManager keyManager, IAuthenticationManager authManager) {
 		this.keyManager = keyManager;
 		this.authManager = authManager;
 	}
 
 	@Override
-	public boolean authenticate(String username, PublicKey key,
-			ServerSession session) {
+	public boolean authenticate(String username, PublicKey key, ServerSession session) {
 		Map<PublicKey, Boolean> map = cache.get(session);
 		if (map == null) {
 			map = new HashMap<PublicKey, Boolean>();
@@ -73,20 +68,22 @@
 		return result;
 	}
 
-	private boolean doAuthenticate(String username, PublicKey suppliedKey,
-			ServerSession session) {
+	private boolean doAuthenticate(String username, PublicKey suppliedKey, ServerSession session) {
 		SshDaemonClient client = session.getAttribute(SshDaemonClient.KEY);
 		Preconditions.checkState(client.getUser() == null);
 		username = username.toLowerCase(Locale.US);
 		List<SshKey> keys = keyManager.getKeys(username);
-		if (keys == null || keys.isEmpty()) {
-			log.info("{} has not added any public keys for ssh authentication",
-					username);
+		if (keys.isEmpty()) {
+			log.info("{} has not added any public keys for ssh authentication", username);
 			return false;
 		}
 
+		SshKey pk = new SshKey(suppliedKey);
+		log.debug("auth supplied {}", pk.getFingerprint());
+
 		for (SshKey key : keys) {
-			if (key.equals(suppliedKey)) {
+			log.debug("auth compare to {}", key.getFingerprint());
+			if (key.getPublicKey().equals(suppliedKey)) {
 				UserModel user = authManager.authenticate(username, key);
 				if (user != null) {
 					client.setUser(user);
@@ -96,8 +93,7 @@
 			}
 		}
 
-		log.warn("could not authenticate {} for SSH using the supplied public key",
-				username);
+		log.warn("could not authenticate {} for SSH using the supplied public key", username);
 		return false;
 	}
 

--
Gitblit v1.9.1