Paul Martin
2016-04-30 a502d96a860456ec5e8c96761db70f7cabb74751
src/main/java/com/gitblit/transport/ssh/MemoryKeyManager.java
@@ -20,6 +20,8 @@
import java.util.List;
import java.util.Map;
import com.google.inject.Inject;
/**
 * Memory public key manager.
 *
@@ -28,8 +30,9 @@
 */
public class MemoryKeyManager extends IPublicKeyManager {
   Map<String, List<SshKey>> keys;
   final Map<String, List<SshKey>> keys;
   @Inject
   public MemoryKeyManager() {
      keys = new HashMap<String, List<SshKey>>();
   }
@@ -57,7 +60,8 @@
   @Override
   protected boolean isStale(String username) {
      return false;
      // always return true so we gets keys from our hashmap
      return true;
   }
   @Override
@@ -75,6 +79,7 @@
      if (!keys.containsKey(id)) {
         keys.put(id, new ArrayList<SshKey>());
      }
      log.info("added {} key {}", username, key.getFingerprint());
      return keys.get(id).add(key);
   }
@@ -82,15 +87,27 @@
   public boolean removeKey(String username, SshKey key) {
      String id = username.toLowerCase();
      if (!keys.containsKey(id)) {
         log.info("can't remove keys for {}", username);
         return false;
      }
      return keys.get(id).remove(key);
      List<SshKey> list = keys.get(id);
      boolean success = list.remove(key);
      if (success) {
         log.info("removed {} key {}", username, key.getFingerprint());
      }
      if (list.isEmpty()) {
         keys.remove(id);
         log.info("no {} keys left, removed {}", username, username);
      }
      return success;
   }
   @Override
   public boolean removeAllKeys(String username) {
      String id = username.toLowerCase();
      keys.remove(id.toLowerCase());
      log.info("removed all keys for {}", username);
      return true;
   }
}