Package org.platformlayer.ops.ssh

Source Code of org.platformlayer.ops.ssh.AcceptAllLearningServerKeyVerifier

package org.platformlayer.ops.ssh;

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.security.PublicKey;
import java.util.Map;

import com.google.common.collect.Maps;

public class AcceptAllLearningServerKeyVerifier extends AcceptAllServerKeyVerifier {
  private Map<SocketAddress, PublicKey> keys = Maps.newHashMap();
  private static final int SSH_PORT = 22;

  // public static final AcceptAllLearningServerKeyVerifier INSTANCE = new AcceptAllLearningServerKeyVerifier();

  public AcceptAllLearningServerKeyVerifier() {
  }

  @Override
  public boolean verifyServerKey(SocketAddress remoteAddress, PublicKey serverKey) {
    synchronized (keys) {
      keys.put(remoteAddress, serverKey);
    }

    return true;
  }

  public PublicKey getDiscoveredKey(SocketAddress remoteAddress) {
    synchronized (keys) {
      return keys.get(remoteAddress);
    }
  }

  public PublicKey getDiscoveredKey(InetAddress addr) {
    SocketAddress socketAddress = new InetSocketAddress(addr, SSH_PORT);
    return getDiscoveredKey(socketAddress);
  }

  @Override
  public void verifyPooled(IServerKeyVerifier serverKeyVerifier) {
    if (serverKeyVerifier instanceof AcceptAllLearningServerKeyVerifier) {
      synchronized (keys) {
        // Technically we should lock serverKeyVerifier...
        keys.putAll(((AcceptAllLearningServerKeyVerifier) serverKeyVerifier).keys);
      }
    }
  }

}
TOP

Related Classes of org.platformlayer.ops.ssh.AcceptAllLearningServerKeyVerifier

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.