You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2015/07/17 18:18:36 UTC
[16/25] mina-sshd git commit: [SSHD-542] Checkstyle validation
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/IoWriteFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/IoWriteFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/io/IoWriteFuture.java
index 3483dff..a702621 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/IoWriteFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/IoWriteFuture.java
@@ -26,10 +26,13 @@ import org.apache.sshd.common.future.SshFuture;
public interface IoWriteFuture extends SshFuture<IoWriteFuture> {
/**
* Wait and verify that the write succeeded.
+ *
* @throws IOException if the write failed for any reason
*/
void verify() throws IOException;
+
void verify(long count, TimeUnit unit) throws IOException;
+
void verify(long timeout) throws IOException;
/**
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
index d26d7ec..955b73f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
@@ -36,8 +36,8 @@ import org.apache.sshd.common.FactoryManagerUtils;
/**
*/
public class MinaAcceptor extends MinaService implements org.apache.sshd.common.io.IoAcceptor, IoHandler {
- public static final int DEFAULT_BACKLOG=0;
- public static final boolean DEFAULT_REUSE_ADDRESS=true;
+ public static final int DEFAULT_BACKLOG = 0;
+ public static final boolean DEFAULT_REUSE_ADDRESS = true;
protected final AtomicReference<IoAcceptor> acceptorHolder = new AtomicReference<>(null);
@@ -63,8 +63,9 @@ public class MinaAcceptor extends MinaService implements org.apache.sshd.common.
protected IoAcceptor getAcceptor() {
IoAcceptor acceptor;
- synchronized(acceptorHolder) {
- if ((acceptor = acceptorHolder.get()) != null) {
+ synchronized (acceptorHolder) {
+ acceptor = acceptorHolder.get();
+ if (acceptor != null) {
return acceptor;
}
@@ -72,7 +73,7 @@ public class MinaAcceptor extends MinaService implements org.apache.sshd.common.
acceptor.setHandler(this);
acceptorHolder.set(acceptor);
}
-
+
log.debug("Created IoAcceptor");
return acceptor;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
index 24801b4..95179c3 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
@@ -50,8 +50,9 @@ public class MinaConnector extends MinaService implements org.apache.sshd.common
protected IoConnector getConnector() {
IoConnector connector;
- synchronized(connectorHolder) {
- if ((connector = connectorHolder.get()) != null) {
+ synchronized (connectorHolder) {
+ connector = connectorHolder.get();
+ if (connector != null) {
return connector;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
index 360c501..952e087 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
@@ -125,19 +125,24 @@ public abstract class MinaService extends CloseableUtils.AbstractCloseable imple
protected void configure(SocketSessionConfig config) {
Integer intVal;
Boolean boolVal;
- if ((boolVal = getBoolean(FactoryManager.SOCKET_KEEPALIVE)) != null) {
+ boolVal = getBoolean(FactoryManager.SOCKET_KEEPALIVE);
+ if (boolVal != null) {
config.setKeepAlive(boolVal);
}
- if ((intVal = getInteger(FactoryManager.SOCKET_SNDBUF)) != null) {
+ intVal = getInteger(FactoryManager.SOCKET_SNDBUF);
+ if (intVal != null) {
config.setSendBufferSize(intVal);
}
- if ((intVal = getInteger(FactoryManager.SOCKET_RCVBUF)) != null) {
+ intVal = getInteger(FactoryManager.SOCKET_RCVBUF);
+ if (intVal != null) {
config.setReceiveBufferSize(intVal);
}
- if ((intVal = getInteger(FactoryManager.SOCKET_LINGER)) != null) {
+ intVal = getInteger(FactoryManager.SOCKET_LINGER);
+ if (intVal != null) {
config.setSoLinger(intVal);
}
- if ((boolVal = getBoolean(FactoryManager.SOCKET_LINGER)) != null) {
+ boolVal = getBoolean(FactoryManager.SOCKET_LINGER);
+ if (boolVal != null) {
config.setTcpNoDelay(boolVal);
}
if (sessionConfig != null) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactory.java
index 902e902..5a77278 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactory.java
@@ -39,8 +39,8 @@ public class MinaServiceFactory extends AbstractIoServiceFactory {
public MinaServiceFactory(FactoryManager factoryManager, ExecutorService service, boolean shutdownOnExit) {
super(factoryManager,
- service == null ? ThreadUtils.newCachedThreadPool(factoryManager.toString() + "-mina") : service,
- service == null || shutdownOnExit);
+ service == null ? ThreadUtils.newCachedThreadPool(factoryManager.toString() + "-mina") : service,
+ service == null || shutdownOnExit);
ioProcessor = new SimpleIoProcessorPool<>(NioProcessor.class, getExecutorService(), getNioWorkers(factoryManager), null);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactoryFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactoryFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactoryFactory.java
index e6e913e..bfd9518 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactoryFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaServiceFactoryFactory.java
@@ -32,13 +32,13 @@ public class MinaServiceFactoryFactory extends AbstractIoServiceFactoryFactory {
}
/**
- * @param executors The {@link ExecutorService} to use for spawning threads.
- * If {@code null} then an internal service is allocated - in which case it
- * is automatically shutdown regardless of the value of the <tt>shutdownOnExit</tt>
- * parameter value
+ * @param executors The {@link ExecutorService} to use for spawning threads.
+ * If {@code null} then an internal service is allocated - in which case it
+ * is automatically shutdown regardless of the value of the <tt>shutdownOnExit</tt>
+ * parameter value
* @param shutdownOnExit If {@code true} then the {@link ExecutorService#shutdownNow()}
- * will be called (unless it is an internally allocated service which is always
- * closed)
+ * will be called (unless it is an internally allocated service which is always
+ * closed)
*/
public MinaServiceFactoryFactory(ExecutorService executors, boolean shutdownOnExit) {
super(executors, shutdownOnExit);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
index 476b425..f04372d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSession.java
@@ -31,7 +31,6 @@ import org.apache.sshd.common.io.IoService;
import org.apache.sshd.common.io.IoSession;
import org.apache.sshd.common.io.IoWriteFuture;
import org.apache.sshd.common.util.CloseableUtils;
-import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.buffer.Buffer;
@@ -94,11 +93,13 @@ public class MinaSession extends CloseableUtils.AbstractInnerCloseable implement
public boolean isClosing() {
return session.isClosing();
}
+
@SuppressWarnings("synthetic-access")
@Override
public boolean isClosed() {
return !session.isConnected();
}
+
@SuppressWarnings("synthetic-access")
@Override
public org.apache.sshd.common.future.CloseFuture close(boolean immediately) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java
index 86ace1b..462bebb 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/mina/MinaSupport.java
@@ -22,7 +22,11 @@ import org.apache.mina.core.buffer.IoBuffer;
import org.apache.sshd.common.util.Readable;
import org.apache.sshd.common.util.buffer.Buffer;
-public class MinaSupport {
+public final class MinaSupport {
+
+ private MinaSupport() {
+ throw new UnsupportedOperationException("No instance allowed");
+ }
public static Readable asReadable(final IoBuffer buffer) {
return new Readable() {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java
index 5f8e071..71777c7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Acceptor.java
@@ -40,7 +40,7 @@ import org.apache.sshd.common.io.IoHandler;
/**
*/
public class Nio2Acceptor extends Nio2Service implements IoAcceptor {
- public static final int DEFAULT_BACKLOG=0;
+ public static final int DEFAULT_BACKLOG = 0;
private final Map<SocketAddress, AsynchronousServerSocketChannel> channels;
private int backlog = DEFAULT_BACKLOG;
@@ -127,9 +127,11 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor {
class AcceptCompletionHandler extends Nio2CompletionHandler<AsynchronousSocketChannel, SocketAddress> {
private final AsynchronousServerSocketChannel socket;
+
AcceptCompletionHandler(AsynchronousServerSocketChannel socket) {
this.socket = socket;
}
+
@SuppressWarnings("synthetic-access")
@Override
protected void onCompleted(AsynchronousSocketChannel result, SocketAddress address) {
@@ -138,7 +140,7 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor {
return;
}
- Nio2Session session=null;
+ Nio2Session session = null;
try {
// Create a session
session = new Nio2Session(Nio2Acceptor.this, manager, handler, result);
@@ -152,15 +154,15 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor {
if (session != null) {
try {
session.close();
- } catch(Throwable t) {
+ } catch (Throwable t) {
log.warn("Failed (" + t.getClass().getSimpleName() + ")"
- + " to close accepted connection from " + address
- + ": " + t.getMessage(),
- t);
+ + " to close accepted connection from " + address
+ + ": " + t.getMessage(),
+ t);
}
}
}
-
+
try {
// Accept new connections
socket.accept(address, this);
@@ -174,9 +176,9 @@ public class Nio2Acceptor extends Nio2Service implements IoAcceptor {
protected void onFailed(final Throwable exc, final SocketAddress address) {
if (channels.containsKey(address) && !disposing.get()) {
log.warn("Caught " + exc.getClass().getSimpleName()
- + " while accepting incoming connection from " + address
- + ": " + exc.getMessage(),
- exc);
+ + " while accepting incoming connection from " + address
+ + ": " + exc.getMessage(),
+ exc);
}
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java
index 80b75da..ece7c24 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2CompletionHandler.java
@@ -24,7 +24,7 @@ import java.security.PrivilegedAction;
/**
*/
-public abstract class Nio2CompletionHandler<V,A> implements CompletionHandler<V,A> {
+public abstract class Nio2CompletionHandler<V, A> implements CompletionHandler<V, A> {
@Override
public void completed(final V result, final A attachment) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java
index b809689..bf8b297 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Connector.java
@@ -69,6 +69,7 @@ public class Nio2Connector extends Nio2Service implements IoConnector {
future.setException(e);
}
}
+
@Override
protected void onFailed(final Throwable exc, final Object attachment) {
future.setException(exc);
@@ -84,24 +85,29 @@ public class Nio2Connector extends Nio2Service implements IoConnector {
DefaultIoConnectFuture(Object lock) {
super(lock);
}
+
@Override
public IoSession getSession() {
Object v = getValue();
return v instanceof IoSession ? (IoSession) v : null;
}
+
@Override
public Throwable getException() {
Object v = getValue();
return v instanceof Throwable ? (Throwable) v : null;
}
+
@Override
public boolean isConnected() {
return getValue() instanceof IoSession;
}
+
@Override
public void setSession(IoSession session) {
setValue(session);
}
+
@Override
public void setException(Throwable exception) {
setValue(exception);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java
index 0a384ea..790f7ca 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2DefaultIoWriteFuture.java
@@ -21,7 +21,6 @@ package org.apache.sshd.common.io.nio2;
import java.nio.ByteBuffer;
import org.apache.sshd.common.io.AbstractIoWriteFuture;
-import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
/**
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactory.java
index 6bdd1ba..7f0760d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactory.java
@@ -39,11 +39,11 @@ public class Nio2ServiceFactory extends AbstractIoServiceFactory {
public Nio2ServiceFactory(FactoryManager factoryManager, ExecutorService service, boolean shutdownOnExit) {
super(factoryManager,
- service == null ? ThreadUtils.newFixedThreadPool(factoryManager.toString() + "-nio2", getNioWorkers(factoryManager)) : service,
- service == null || shutdownOnExit);
+ service == null ? ThreadUtils.newFixedThreadPool(factoryManager.toString() + "-nio2", getNioWorkers(factoryManager)) : service,
+ service == null || shutdownOnExit);
try {
group = AsynchronousChannelGroup.withThreadPool(ThreadUtils.protectExecutorServiceShutdown(getExecutorService(), isShutdownOnExit()));
- } catch(IOException e) {
+ } catch (IOException e) {
log.warn("Failed (" + e.getClass().getSimpleName() + " to start async. channel group: " + e.getMessage(), e);
throw new RuntimeSshException(e);
}
@@ -65,7 +65,7 @@ public class Nio2ServiceFactory extends AbstractIoServiceFactory {
if (!group.isShutdown()) {
log.debug("Shutdown group");
group.shutdownNow();
-
+
// if we protect the executor then the await will fail since we didn't really shut it down...
if (isShutdownOnExit()) {
if (group.awaitTermination(5, TimeUnit.SECONDS)) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactoryFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactoryFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactoryFactory.java
index 6068b2e..63fac8d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactoryFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2ServiceFactoryFactory.java
@@ -24,7 +24,6 @@ import java.util.concurrent.ExecutorService;
import org.apache.sshd.common.FactoryManager;
import org.apache.sshd.common.io.AbstractIoServiceFactoryFactory;
import org.apache.sshd.common.io.IoServiceFactory;
-import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
/**
@@ -36,13 +35,13 @@ public class Nio2ServiceFactoryFactory extends AbstractIoServiceFactoryFactory {
}
/**
- * @param executors The {@link ExecutorService} to use for spawning threads.
- * If {@code null} then an internal service is allocated - in which case it
- * is automatically shutdown regardless of the value of the <tt>shutdownOnExit</tt>
- * parameter value
+ * @param executors The {@link ExecutorService} to use for spawning threads.
+ * If {@code null} then an internal service is allocated - in which case it
+ * is automatically shutdown regardless of the value of the <tt>shutdownOnExit</tt>
+ * parameter value
* @param shutdownOnExit If {@code true} then the {@link ExecutorService#shutdownNow()}
- * will be called (unless it is an internally allocated service which is always
- * closed)
+ * will be called (unless it is an internally allocated service which is always
+ * closed)
*/
public Nio2ServiceFactoryFactory(ExecutorService executors, boolean shutdownOnExit) {
super(executors, shutdownOnExit);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
index b53411f..33782ac 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/io/nio2/Nio2Session.java
@@ -47,9 +47,9 @@ public class Nio2Session extends CloseableUtils.AbstractCloseable implements IoS
public static final int DEFAULT_READBUF_SIZE = 32 * 1024;
- private static final AtomicLong sessionIdGenerator = new AtomicLong(100L);
+ private static final AtomicLong SESSION_ID_GENERATOR = new AtomicLong(100L);
- private final long id = sessionIdGenerator.incrementAndGet();
+ private final long id = SESSION_ID_GENERATOR.incrementAndGet();
private final Nio2Service service;
private final IoHandler handler;
private final AsynchronousSocketChannel socket;
@@ -189,22 +189,23 @@ public class Nio2Session extends CloseableUtils.AbstractCloseable implements IoS
public void startReading(byte[] buf) {
startReading(buf, 0, buf.length);
}
-
+
public void startReading(byte[] buf, int offset, int len) {
startReading(ByteBuffer.wrap(buf, offset, len));
}
public void startReading(final ByteBuffer buffer) {
doReadCycle(buffer, new Readable() {
- @Override
- public int available() {
- return buffer.remaining();
- }
- @Override
- public void getRawBytes(byte[] data, int offset, int len) {
- buffer.get(data, offset, len);
- }
- });
+ @Override
+ public int available() {
+ return buffer.remaining();
+ }
+
+ @Override
+ public void getRawBytes(byte[] data, int offset, int len) {
+ buffer.get(data, offset, len);
+ }
+ });
}
protected void doReadCycle(final ByteBuffer buffer, final Readable bufReader) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/AbstractDH.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/AbstractDH.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/AbstractDH.java
index d2a3092..37b2f7b 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/AbstractDH.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/AbstractDH.java
@@ -28,8 +28,8 @@ import org.apache.sshd.common.util.GenericUtils;
*/
public abstract class AbstractDH {
- protected BigInteger K; // shared secret key
- private byte[] K_array;
+ protected BigInteger k; // shared secret key
+ private byte[] k_array;
protected AbstractDH() {
super();
@@ -42,11 +42,11 @@ public abstract class AbstractDH {
protected abstract byte[] calculateK() throws Exception;
public byte[] getK() throws Exception {
- if (K == null) {
- K_array = calculateK();
- K = new BigInteger(K_array);
+ if (k == null) {
+ k_array = calculateK();
+ k = new BigInteger(k_array);
}
- return K_array;
+ return k_array;
}
public abstract Digest getHash() throws Exception;
@@ -56,10 +56,11 @@ public abstract class AbstractDH {
* is a byte array, which can (by chance, roughly 1 out of 256 times) begin
* with zero byte (some JCE providers might strip this, though). In SSH,
* the shared secret is an integer, so we need to strip the leading zero(es).
+ *
* @param x The original array
- * @return An (possibly) sub-array guaranteed to start with a non-zero byte
- * @see <A HREF="https://issues.apache.org/jira/browse/SSHD-330">SSHD-330</A>
+ * @return An (possibly) sub-array guaranteed to start with a non-zero byte
* @throws IllegalArgumentException If all zeroes array
+ * @see <A HREF="https://issues.apache.org/jira/browse/SSHD-330">SSHD-330</A>
*/
public static byte[] stripLeadingZeroes(byte[] x) {
int length = GenericUtils.length(x);
@@ -76,7 +77,7 @@ public abstract class AbstractDH {
System.arraycopy(x, i, ret, 0, ret.length);
return ret;
}
-
+
// all zeroes
throw new IllegalArgumentException("No non-zero values in generated secret");
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java
index 4f9c5c7..1981c45 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/BuiltinDHFactories.java
@@ -31,7 +31,6 @@ import java.util.Set;
import java.util.SortedSet;
import java.util.TreeMap;
-import org.apache.sshd.common.NamedFactory;
import org.apache.sshd.common.NamedResource;
import org.apache.sshd.common.cipher.ECCurves;
import org.apache.sshd.common.config.NamedResourceListParseResult;
@@ -71,8 +70,8 @@ public enum BuiltinDHFactories implements DHFactory {
@Override
public DHG create(Object... params) throws Exception {
if ((GenericUtils.length(params) != 2)
- || (!(params[0] instanceof BigInteger))
- || (!(params[1] instanceof BigInteger))) {
+ || (!(params[0] instanceof BigInteger))
+ || (!(params[1] instanceof BigInteger))) {
throw new IllegalArgumentException("Bad parameters for " + getName());
}
return new DHG(BuiltinDigests.sha1, (BigInteger) params[0], (BigInteger) params[1]);
@@ -87,8 +86,8 @@ public enum BuiltinDHFactories implements DHFactory {
@Override
public AbstractDH create(Object... params) throws Exception {
if ((GenericUtils.length(params) != 2)
- || (!(params[0] instanceof BigInteger))
- || (!(params[1] instanceof BigInteger))) {
+ || (!(params[0] instanceof BigInteger))
+ || (!(params[1] instanceof BigInteger))) {
throw new IllegalArgumentException("Bad parameters for " + getName());
}
return new DHG(BuiltinDigests.sha256, (BigInteger) params[0], (BigInteger) params[1]);
@@ -147,8 +146,18 @@ public enum BuiltinDHFactories implements DHFactory {
}
};
+ public static final Set<BuiltinDHFactories> VALUES =
+ Collections.unmodifiableSet(EnumSet.allOf(BuiltinDHFactories.class));
+
+ private static final Map<String, DHFactory> EXTENSIONS =
+ new TreeMap<String, DHFactory>(String.CASE_INSENSITIVE_ORDER);
+
private final String factoryName;
+ BuiltinDHFactories(String name) {
+ factoryName = name;
+ }
+
@Override
public final String getName() {
return factoryName;
@@ -164,30 +173,22 @@ public enum BuiltinDHFactories implements DHFactory {
return getName();
}
- BuiltinDHFactories(String name) {
- factoryName = name;
- }
-
- public static final Set<BuiltinDHFactories> VALUES =
- Collections.unmodifiableSet(EnumSet.allOf(BuiltinDHFactories.class));
- private static final Map<String,DHFactory> extensions =
- new TreeMap<String,DHFactory>(String.CASE_INSENSITIVE_ORDER);
-
/**
- * Registered a {@link NamedFactory} to be available besides the built-in
+ * Registered a {@link org.apache.sshd.common.NamedFactory} to be available besides the built-in
* ones when parsing configuration
+ *
* @param extension The factory to register
* @throws IllegalArgumentException if factory instance is {@code null},
- * or overrides a built-in one or overrides another registered factory
- * with the same name (case <U>insensitive</U>).
+ * or overrides a built-in one or overrides another registered factory
+ * with the same name (case <U>insensitive</U>).
*/
public static void registerExtension(DHFactory extension) {
- String name=ValidateUtils.checkNotNull(extension, "No extension provided").getName();
+ String name = ValidateUtils.checkNotNull(extension, "No extension provided").getName();
ValidateUtils.checkTrue(fromFactoryName(name) == null, "Extension overrides built-in: %s", name);
- synchronized(extensions) {
- ValidateUtils.checkTrue(!extensions.containsKey(name), "Extension overrides existinh: %s", name);
- extensions.put(name, extension);
+ synchronized (EXTENSIONS) {
+ ValidateUtils.checkTrue(!EXTENSIONS.containsKey(name), "Extension overrides existing: %s", name);
+ EXTENSIONS.put(name, extension);
}
}
@@ -197,13 +198,14 @@ public enum BuiltinDHFactories implements DHFactory {
*/
public static SortedSet<DHFactory> getRegisteredExtensions() {
// TODO for JDK-8 return Collections.emptySortedSet()
- synchronized(extensions) {
- return GenericUtils.asSortedSet(NamedResource.BY_NAME_COMPARATOR, extensions.values());
+ synchronized (EXTENSIONS) {
+ return GenericUtils.asSortedSet(NamedResource.BY_NAME_COMPARATOR, EXTENSIONS.values());
}
}
/**
* Unregisters specified extension
+ *
* @param name The factory name - ignored if {@code null}/empty
* @return The registered extension - {@code null} if not found
*/
@@ -211,9 +213,9 @@ public enum BuiltinDHFactories implements DHFactory {
if (GenericUtils.isEmpty(name)) {
return null;
}
-
- synchronized(extensions) {
- return extensions.remove(name);
+
+ synchronized (EXTENSIONS) {
+ return EXTENSIONS.remove(name);
}
}
@@ -233,7 +235,7 @@ public enum BuiltinDHFactories implements DHFactory {
/**
* @param dhList A comma-separated list of ciphers' names - ignored
- * if {@code null}/empty
+ * if {@code null}/empty
* @return A {@link ParseResult} of all the {@link DHFactory}-ies whose
* name appears in the string and represent a built-in value. Any
* unknown name is <U>ignored</U>. The order of the returned result
@@ -245,7 +247,7 @@ public enum BuiltinDHFactories implements DHFactory {
return parseDHFactoriesList(GenericUtils.split(dhList, ','));
}
- public static ParseResult parseDHFactoriesList(String ... dhList) {
+ public static ParseResult parseDHFactoriesList(String... dhList) {
return parseDHFactoriesList(GenericUtils.isEmpty((Object[]) dhList) ? Collections.<String>emptyList() : Arrays.asList(dhList));
}
@@ -253,11 +255,11 @@ public enum BuiltinDHFactories implements DHFactory {
if (GenericUtils.isEmpty(dhList)) {
return ParseResult.EMPTY;
}
-
- List<DHFactory> factories=new ArrayList<>(dhList.size());
- List<String> unknown=Collections.emptyList();
+
+ List<DHFactory> factories = new ArrayList<>(dhList.size());
+ List<String> unknown = Collections.emptyList();
for (String name : dhList) {
- DHFactory f=resolveFactory(name);
+ DHFactory f = resolveFactory(name);
if (f != null) {
factories.add(f);
} else {
@@ -268,44 +270,46 @@ public enum BuiltinDHFactories implements DHFactory {
unknown.add(name);
}
}
-
+
return new ParseResult(factories, unknown);
}
+
/**
* @param name The factory name
* @return The factory or {@code null} if it is neither a built-in one
- * or a registered extension
+ * or a registered extension
*/
public static DHFactory resolveFactory(String name) {
if (GenericUtils.isEmpty(name)) {
return null;
}
- DHFactory s=fromFactoryName(name);
+ DHFactory s = fromFactoryName(name);
if (s != null) {
return s;
}
-
- synchronized(extensions) {
- return extensions.get(name);
+
+ synchronized (EXTENSIONS) {
+ return EXTENSIONS.get(name);
}
}
/**
* Represents the result of {@link BuiltinDHFactories#parseDHFactoriesList(String)}
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public static final class ParseResult extends NamedResourceListParseResult<DHFactory> {
- public static final ParseResult EMPTY=new ParseResult(Collections.<DHFactory>emptyList(), Collections.<String>emptyList());
-
+ public static final ParseResult EMPTY = new ParseResult(Collections.<DHFactory>emptyList(), Collections.<String>emptyList());
+
public ParseResult(List<DHFactory> parsed, List<String> unsupported) {
super(parsed, unsupported);
}
-
+
public List<DHFactory> getParsedFactories() {
return getParsedResources();
}
-
+
public List<String> getUnsupportedFactories() {
return getUnsupportedResources();
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
index 951ef77..8a3b27f 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHG.java
@@ -23,7 +23,6 @@ import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PublicKey;
-
import javax.crypto.KeyAgreement;
import javax.crypto.spec.DHParameterSpec;
import javax.crypto.spec.DHPublicKeySpec;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/DHGroupData.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHGroupData.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHGroupData.java
index 35df435..32c2153 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/DHGroupData.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/DHGroupData.java
@@ -25,72 +25,74 @@ package org.apache.sshd.common.kex;
*/
public final class DHGroupData {
+ private DHGroupData() {
+ throw new UnsupportedOperationException("No instance allowed");
+ }
public static byte[] getG() {
- final byte[] G = { 2 };
- return G;
+ return new byte[] {
+ (byte) 0x02
+ };
}
public static byte[] getP1() {
- final byte[] P_1 = {
- (byte)0x00,
- (byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,
- (byte)0xC9,(byte)0x0F,(byte)0xDA,(byte)0xA2,(byte)0x21,(byte)0x68,(byte)0xC2,(byte)0x34,
- (byte)0xC4,(byte)0xC6,(byte)0x62,(byte)0x8B,(byte)0x80,(byte)0xDC,(byte)0x1C,(byte)0xD1,
- (byte)0x29,(byte)0x02,(byte)0x4E,(byte)0x08,(byte)0x8A,(byte)0x67,(byte)0xCC,(byte)0x74,
- (byte)0x02,(byte)0x0B,(byte)0xBE,(byte)0xA6,(byte)0x3B,(byte)0x13,(byte)0x9B,(byte)0x22,
- (byte)0x51,(byte)0x4A,(byte)0x08,(byte)0x79,(byte)0x8E,(byte)0x34,(byte)0x04,(byte)0xDD,
- (byte)0xEF,(byte)0x95,(byte)0x19,(byte)0xB3,(byte)0xCD,(byte)0x3A,(byte)0x43,(byte)0x1B,
- (byte)0x30,(byte)0x2B,(byte)0x0A,(byte)0x6D,(byte)0xF2,(byte)0x5F,(byte)0x14,(byte)0x37,
- (byte)0x4F,(byte)0xE1,(byte)0x35,(byte)0x6D,(byte)0x6D,(byte)0x51,(byte)0xC2,(byte)0x45,
- (byte)0xE4,(byte)0x85,(byte)0xB5,(byte)0x76,(byte)0x62,(byte)0x5E,(byte)0x7E,(byte)0xC6,
- (byte)0xF4,(byte)0x4C,(byte)0x42,(byte)0xE9,(byte)0xA6,(byte)0x37,(byte)0xED,(byte)0x6B,
- (byte)0x0B,(byte)0xFF,(byte)0x5C,(byte)0xB6,(byte)0xF4,(byte)0x06,(byte)0xB7,(byte)0xED,
- (byte)0xEE,(byte)0x38,(byte)0x6B,(byte)0xFB,(byte)0x5A,(byte)0x89,(byte)0x9F,(byte)0xA5,
- (byte)0xAE,(byte)0x9F,(byte)0x24,(byte)0x11,(byte)0x7C,(byte)0x4B,(byte)0x1F,(byte)0xE6,
- (byte)0x49,(byte)0x28,(byte)0x66,(byte)0x51,(byte)0xEC,(byte)0xE6,(byte)0x53,(byte)0x81,
- (byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF
+ return new byte[] {
+ (byte) 0x00,
+ (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
+ (byte) 0xC9, (byte) 0x0F, (byte) 0xDA, (byte) 0xA2, (byte) 0x21, (byte) 0x68, (byte) 0xC2, (byte) 0x34,
+ (byte) 0xC4, (byte) 0xC6, (byte) 0x62, (byte) 0x8B, (byte) 0x80, (byte) 0xDC, (byte) 0x1C, (byte) 0xD1,
+ (byte) 0x29, (byte) 0x02, (byte) 0x4E, (byte) 0x08, (byte) 0x8A, (byte) 0x67, (byte) 0xCC, (byte) 0x74,
+ (byte) 0x02, (byte) 0x0B, (byte) 0xBE, (byte) 0xA6, (byte) 0x3B, (byte) 0x13, (byte) 0x9B, (byte) 0x22,
+ (byte) 0x51, (byte) 0x4A, (byte) 0x08, (byte) 0x79, (byte) 0x8E, (byte) 0x34, (byte) 0x04, (byte) 0xDD,
+ (byte) 0xEF, (byte) 0x95, (byte) 0x19, (byte) 0xB3, (byte) 0xCD, (byte) 0x3A, (byte) 0x43, (byte) 0x1B,
+ (byte) 0x30, (byte) 0x2B, (byte) 0x0A, (byte) 0x6D, (byte) 0xF2, (byte) 0x5F, (byte) 0x14, (byte) 0x37,
+ (byte) 0x4F, (byte) 0xE1, (byte) 0x35, (byte) 0x6D, (byte) 0x6D, (byte) 0x51, (byte) 0xC2, (byte) 0x45,
+ (byte) 0xE4, (byte) 0x85, (byte) 0xB5, (byte) 0x76, (byte) 0x62, (byte) 0x5E, (byte) 0x7E, (byte) 0xC6,
+ (byte) 0xF4, (byte) 0x4C, (byte) 0x42, (byte) 0xE9, (byte) 0xA6, (byte) 0x37, (byte) 0xED, (byte) 0x6B,
+ (byte) 0x0B, (byte) 0xFF, (byte) 0x5C, (byte) 0xB6, (byte) 0xF4, (byte) 0x06, (byte) 0xB7, (byte) 0xED,
+ (byte) 0xEE, (byte) 0x38, (byte) 0x6B, (byte) 0xFB, (byte) 0x5A, (byte) 0x89, (byte) 0x9F, (byte) 0xA5,
+ (byte) 0xAE, (byte) 0x9F, (byte) 0x24, (byte) 0x11, (byte) 0x7C, (byte) 0x4B, (byte) 0x1F, (byte) 0xE6,
+ (byte) 0x49, (byte) 0x28, (byte) 0x66, (byte) 0x51, (byte) 0xEC, (byte) 0xE6, (byte) 0x53, (byte) 0x81,
+ (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF
};
- return P_1;
}
public static byte[] getP14() {
- final byte[] P_14 = {
- (byte)0x00,
- (byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,
- (byte)0xC9,(byte)0x0F,(byte)0xDA,(byte)0xA2,(byte)0x21,(byte)0x68,(byte)0xC2,(byte)0x34,
- (byte)0xC4,(byte)0xC6,(byte)0x62,(byte)0x8B,(byte)0x80,(byte)0xDC,(byte)0x1C,(byte)0xD1,
- (byte)0x29,(byte)0x02,(byte)0x4E,(byte)0x08,(byte)0x8A,(byte)0x67,(byte)0xCC,(byte)0x74,
- (byte)0x02,(byte)0x0B,(byte)0xBE,(byte)0xA6,(byte)0x3B,(byte)0x13,(byte)0x9B,(byte)0x22,
- (byte)0x51,(byte)0x4A,(byte)0x08,(byte)0x79,(byte)0x8E,(byte)0x34,(byte)0x04,(byte)0xDD,
- (byte)0xEF,(byte)0x95,(byte)0x19,(byte)0xB3,(byte)0xCD,(byte)0x3A,(byte)0x43,(byte)0x1B,
- (byte)0x30,(byte)0x2B,(byte)0x0A,(byte)0x6D,(byte)0xF2,(byte)0x5F,(byte)0x14,(byte)0x37,
- (byte)0x4F,(byte)0xE1,(byte)0x35,(byte)0x6D,(byte)0x6D,(byte)0x51,(byte)0xC2,(byte)0x45,
- (byte)0xE4,(byte)0x85,(byte)0xB5,(byte)0x76,(byte)0x62,(byte)0x5E,(byte)0x7E,(byte)0xC6,
- (byte)0xF4,(byte)0x4C,(byte)0x42,(byte)0xE9,(byte)0xA6,(byte)0x37,(byte)0xED,(byte)0x6B,
- (byte)0x0B,(byte)0xFF,(byte)0x5C,(byte)0xB6,(byte)0xF4,(byte)0x06,(byte)0xB7,(byte)0xED,
- (byte)0xEE,(byte)0x38,(byte)0x6B,(byte)0xFB,(byte)0x5A,(byte)0x89,(byte)0x9F,(byte)0xA5,
- (byte)0xAE,(byte)0x9F,(byte)0x24,(byte)0x11,(byte)0x7C,(byte)0x4B,(byte)0x1F,(byte)0xE6,
- (byte)0x49,(byte)0x28,(byte)0x66,(byte)0x51,(byte)0xEC,(byte)0xE4,(byte)0x5B,(byte)0x3D,
- (byte)0xC2,(byte)0x00,(byte)0x7C,(byte)0xB8,(byte)0xA1,(byte)0x63,(byte)0xBF,(byte)0x05,
- (byte)0x98,(byte)0xDA,(byte)0x48,(byte)0x36,(byte)0x1C,(byte)0x55,(byte)0xD3,(byte)0x9A,
- (byte)0x69,(byte)0x16,(byte)0x3F,(byte)0xA8,(byte)0xFD,(byte)0x24,(byte)0xCF,(byte)0x5F,
- (byte)0x83,(byte)0x65,(byte)0x5D,(byte)0x23,(byte)0xDC,(byte)0xA3,(byte)0xAD,(byte)0x96,
- (byte)0x1C,(byte)0x62,(byte)0xF3,(byte)0x56,(byte)0x20,(byte)0x85,(byte)0x52,(byte)0xBB,
- (byte)0x9E,(byte)0xD5,(byte)0x29,(byte)0x07,(byte)0x70,(byte)0x96,(byte)0x96,(byte)0x6D,
- (byte)0x67,(byte)0x0C,(byte)0x35,(byte)0x4E,(byte)0x4A,(byte)0xBC,(byte)0x98,(byte)0x04,
- (byte)0xF1,(byte)0x74,(byte)0x6C,(byte)0x08,(byte)0xCA,(byte)0x18,(byte)0x21,(byte)0x7C,
- (byte)0x32,(byte)0x90,(byte)0x5E,(byte)0x46,(byte)0x2E,(byte)0x36,(byte)0xCE,(byte)0x3B,
- (byte)0xE3,(byte)0x9E,(byte)0x77,(byte)0x2C,(byte)0x18,(byte)0x0E,(byte)0x86,(byte)0x03,
- (byte)0x9B,(byte)0x27,(byte)0x83,(byte)0xA2,(byte)0xEC,(byte)0x07,(byte)0xA2,(byte)0x8F,
- (byte)0xB5,(byte)0xC5,(byte)0x5D,(byte)0xF0,(byte)0x6F,(byte)0x4C,(byte)0x52,(byte)0xC9,
- (byte)0xDE,(byte)0x2B,(byte)0xCB,(byte)0xF6,(byte)0x95,(byte)0x58,(byte)0x17,(byte)0x18,
- (byte)0x39,(byte)0x95,(byte)0x49,(byte)0x7C,(byte)0xEA,(byte)0x95,(byte)0x6A,(byte)0xE5,
- (byte)0x15,(byte)0xD2,(byte)0x26,(byte)0x18,(byte)0x98,(byte)0xFA,(byte)0x05,(byte)0x10,
- (byte)0x15,(byte)0x72,(byte)0x8E,(byte)0x5A,(byte)0x8A,(byte)0xAC,(byte)0xAA,(byte)0x68,
- (byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,
+ return new byte[] {
+ (byte) 0x00,
+ (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
+ (byte) 0xC9, (byte) 0x0F, (byte) 0xDA, (byte) 0xA2, (byte) 0x21, (byte) 0x68, (byte) 0xC2, (byte) 0x34,
+ (byte) 0xC4, (byte) 0xC6, (byte) 0x62, (byte) 0x8B, (byte) 0x80, (byte) 0xDC, (byte) 0x1C, (byte) 0xD1,
+ (byte) 0x29, (byte) 0x02, (byte) 0x4E, (byte) 0x08, (byte) 0x8A, (byte) 0x67, (byte) 0xCC, (byte) 0x74,
+ (byte) 0x02, (byte) 0x0B, (byte) 0xBE, (byte) 0xA6, (byte) 0x3B, (byte) 0x13, (byte) 0x9B, (byte) 0x22,
+ (byte) 0x51, (byte) 0x4A, (byte) 0x08, (byte) 0x79, (byte) 0x8E, (byte) 0x34, (byte) 0x04, (byte) 0xDD,
+ (byte) 0xEF, (byte) 0x95, (byte) 0x19, (byte) 0xB3, (byte) 0xCD, (byte) 0x3A, (byte) 0x43, (byte) 0x1B,
+ (byte) 0x30, (byte) 0x2B, (byte) 0x0A, (byte) 0x6D, (byte) 0xF2, (byte) 0x5F, (byte) 0x14, (byte) 0x37,
+ (byte) 0x4F, (byte) 0xE1, (byte) 0x35, (byte) 0x6D, (byte) 0x6D, (byte) 0x51, (byte) 0xC2, (byte) 0x45,
+ (byte) 0xE4, (byte) 0x85, (byte) 0xB5, (byte) 0x76, (byte) 0x62, (byte) 0x5E, (byte) 0x7E, (byte) 0xC6,
+ (byte) 0xF4, (byte) 0x4C, (byte) 0x42, (byte) 0xE9, (byte) 0xA6, (byte) 0x37, (byte) 0xED, (byte) 0x6B,
+ (byte) 0x0B, (byte) 0xFF, (byte) 0x5C, (byte) 0xB6, (byte) 0xF4, (byte) 0x06, (byte) 0xB7, (byte) 0xED,
+ (byte) 0xEE, (byte) 0x38, (byte) 0x6B, (byte) 0xFB, (byte) 0x5A, (byte) 0x89, (byte) 0x9F, (byte) 0xA5,
+ (byte) 0xAE, (byte) 0x9F, (byte) 0x24, (byte) 0x11, (byte) 0x7C, (byte) 0x4B, (byte) 0x1F, (byte) 0xE6,
+ (byte) 0x49, (byte) 0x28, (byte) 0x66, (byte) 0x51, (byte) 0xEC, (byte) 0xE4, (byte) 0x5B, (byte) 0x3D,
+ (byte) 0xC2, (byte) 0x00, (byte) 0x7C, (byte) 0xB8, (byte) 0xA1, (byte) 0x63, (byte) 0xBF, (byte) 0x05,
+ (byte) 0x98, (byte) 0xDA, (byte) 0x48, (byte) 0x36, (byte) 0x1C, (byte) 0x55, (byte) 0xD3, (byte) 0x9A,
+ (byte) 0x69, (byte) 0x16, (byte) 0x3F, (byte) 0xA8, (byte) 0xFD, (byte) 0x24, (byte) 0xCF, (byte) 0x5F,
+ (byte) 0x83, (byte) 0x65, (byte) 0x5D, (byte) 0x23, (byte) 0xDC, (byte) 0xA3, (byte) 0xAD, (byte) 0x96,
+ (byte) 0x1C, (byte) 0x62, (byte) 0xF3, (byte) 0x56, (byte) 0x20, (byte) 0x85, (byte) 0x52, (byte) 0xBB,
+ (byte) 0x9E, (byte) 0xD5, (byte) 0x29, (byte) 0x07, (byte) 0x70, (byte) 0x96, (byte) 0x96, (byte) 0x6D,
+ (byte) 0x67, (byte) 0x0C, (byte) 0x35, (byte) 0x4E, (byte) 0x4A, (byte) 0xBC, (byte) 0x98, (byte) 0x04,
+ (byte) 0xF1, (byte) 0x74, (byte) 0x6C, (byte) 0x08, (byte) 0xCA, (byte) 0x18, (byte) 0x21, (byte) 0x7C,
+ (byte) 0x32, (byte) 0x90, (byte) 0x5E, (byte) 0x46, (byte) 0x2E, (byte) 0x36, (byte) 0xCE, (byte) 0x3B,
+ (byte) 0xE3, (byte) 0x9E, (byte) 0x77, (byte) 0x2C, (byte) 0x18, (byte) 0x0E, (byte) 0x86, (byte) 0x03,
+ (byte) 0x9B, (byte) 0x27, (byte) 0x83, (byte) 0xA2, (byte) 0xEC, (byte) 0x07, (byte) 0xA2, (byte) 0x8F,
+ (byte) 0xB5, (byte) 0xC5, (byte) 0x5D, (byte) 0xF0, (byte) 0x6F, (byte) 0x4C, (byte) 0x52, (byte) 0xC9,
+ (byte) 0xDE, (byte) 0x2B, (byte) 0xCB, (byte) 0xF6, (byte) 0x95, (byte) 0x58, (byte) 0x17, (byte) 0x18,
+ (byte) 0x39, (byte) 0x95, (byte) 0x49, (byte) 0x7C, (byte) 0xEA, (byte) 0x95, (byte) 0x6A, (byte) 0xE5,
+ (byte) 0x15, (byte) 0xD2, (byte) 0x26, (byte) 0x18, (byte) 0x98, (byte) 0xFA, (byte) 0x05, (byte) 0x10,
+ (byte) 0x15, (byte) 0x72, (byte) 0x8E, (byte) 0x5A, (byte) 0x8A, (byte) 0xAC, (byte) 0xAA, (byte) 0x68,
+ (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
};
- return P_14;
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/ECDH.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/ECDH.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/ECDH.java
index 1af4877..b31ea84 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/ECDH.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/ECDH.java
@@ -26,13 +26,11 @@ import java.security.interfaces.ECPublicKey;
import java.security.spec.ECParameterSpec;
import java.security.spec.ECPoint;
import java.security.spec.ECPublicKeySpec;
-
import javax.crypto.KeyAgreement;
import org.apache.sshd.common.cipher.ECCurves;
import org.apache.sshd.common.config.keys.ECDSAPublicKeyEntryDecoder;
import org.apache.sshd.common.digest.Digest;
-import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.SecurityUtils;
import org.apache.sshd.common.util.ValidateUtils;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java
index 31fa8c2..2a01e64 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexProposalOption.java
@@ -42,22 +42,38 @@ public enum KexProposalOption {
C2SLANG(Constants.PROPOSAL_LANG_CTOS, "languages (client to server)"),
S2CLANG(Constants.PROPOSAL_LANG_STOC, "languages (server to client)");
- private final int proposalIndex;
/**
- * @return The proposal option location in the KEX array
+ * A {@link List} of all the options <U>sorted</U> according to {@link #getProposalIndex(){
+ *
+ * @see #BY_PROPOSAL_INDEX
*/
- public final int getProposalIndex() {
- return proposalIndex;
- }
+ public static final List<KexProposalOption> VALUES =
+ Collections.unmodifiableList(new ArrayList<KexProposalOption>(EnumSet.allOf(KexProposalOption.class)) {
+ private static final long serialVersionUID = 1L; // we're not serializing it
+
+ {
+ Collections.sort(this, BY_PROPOSAL_INDEX);
+ }
+ });
+
+ public static final int PROPOSAL_MAX = VALUES.size();
- private final String description;
/**
- * @return User-friendly name for the KEX negotiation item
- * @see <A HREF="http://tools.ietf.org/html/rfc4253#section-7.1">RFC-4253 - section 7.1</A>
+ * Compares values according to {@link KexProposalOption#getProposalIndex()}
*/
- public final String getDescription() {
- return description;
- }
+ public static final Comparator<KexProposalOption> BY_PROPOSAL_INDEX =
+ new Comparator<KexProposalOption>() {
+ @Override
+ public int compare(KexProposalOption o1, KexProposalOption o2) {
+ int i1 = (o1 == null) ? (-1) : o1.getProposalIndex();
+ int i2 = (o2 == null) ? (-1) : o2.getProposalIndex();
+ return Integer.compare(i1, i2);
+ }
+ };
+
+ private final int proposalIndex;
+
+ private final String description;
KexProposalOption(int index, String desc) {
proposalIndex = index;
@@ -65,31 +81,19 @@ public enum KexProposalOption {
}
/**
- * Compares values according to {@link KexProposalOption#getProposalIndex()}
+ * @return The proposal option location in the KEX array
*/
- public static final Comparator<KexProposalOption> BY_PROPOSAL_INDEX =
- new Comparator<KexProposalOption>() {
- @Override
- public int compare(KexProposalOption o1, KexProposalOption o2) {
- int i1 = (o1 == null) ? (-1) : o1.getProposalIndex();
- int i2 = (o2 == null) ? (-1) : o2.getProposalIndex();
- return Integer.compare(i1, i2);
- }
- };
-
+ public final int getProposalIndex() {
+ return proposalIndex;
+ }
+
/**
- * A {@link List} of all the options <U>sorted</U> according to {@link #getProposalIndex(){
- * @see #BY_PROPOSAL_INDEX
+ * @return User-friendly name for the KEX negotiation item
+ * @see <A HREF="http://tools.ietf.org/html/rfc4253#section-7.1">RFC-4253 - section 7.1</A>
*/
- public static final List<KexProposalOption> VALUES =
- Collections.unmodifiableList(new ArrayList<KexProposalOption>(EnumSet.allOf(KexProposalOption.class)) {
- private static final long serialVersionUID = 1L; // we're not serializing it
-
- {
- Collections.sort(this, BY_PROPOSAL_INDEX);
- }
- });
- public static final int PROPOSAL_MAX = VALUES.size();
+ public final String getDescription() {
+ return description;
+ }
/**
* @param n The option name - ignored if {@code null}/empty
@@ -100,13 +104,13 @@ public enum KexProposalOption {
if (GenericUtils.isEmpty(n)) {
return null;
}
-
+
for (KexProposalOption o : VALUES) {
if (n.equalsIgnoreCase(o.name())) {
return o;
}
}
-
+
return null;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/KexState.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexState.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexState.java
index 47756b8..751d759 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KexState.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KexState.java
@@ -25,6 +25,7 @@ import java.util.Set;
/**
* Used to track the key-exchange (KEX) protocol progression
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public enum KexState {
@@ -33,6 +34,6 @@ public enum KexState {
RUN,
KEYS,
DONE;
-
+
public static final Set<KexState> VALUES = Collections.unmodifiableSet(EnumSet.allOf(KexState.class));
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java
index 39cd2a0..9d052ac 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchange.java
@@ -35,13 +35,13 @@ public interface KeyExchange {
* Initialize the key exchange algorithm.
*
* @param session the session using this algorithm
- * @param V_S the server identification string
- * @param V_C the client identification string
- * @param I_S the server key init packet
- * @param I_C the client key init packet
+ * @param v_s the server identification string
+ * @param v_c the client identification string
+ * @param i_s the server key init packet
+ * @param i_c the client key init packet
* @throws Exception if an error occurs
*/
- void init(AbstractSession session, byte[] V_S, byte[] V_C, byte[] I_S, byte[] I_C) throws Exception;
+ void init(AbstractSession session, byte[] v_s, byte[] v_c, byte[] i_s, byte[] i_c) throws Exception;
/**
* Process the next packet
@@ -60,14 +60,14 @@ public interface KeyExchange {
Digest getHash();
/**
- * Retrieves the computed H parameter
+ * Retrieves the computed h parameter
*
* @return
*/
byte[] getH();
/**
- * Retrieves the computed K parameter
+ * Retrieves the computed k parameter
*
* @return
*/
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchangeFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchangeFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchangeFactory.java
index 460ec60..ae8f769 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchangeFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/KeyExchangeFactory.java
@@ -20,18 +20,11 @@
package org.apache.sshd.common.kex;
import org.apache.sshd.common.NamedFactory;
-import org.apache.sshd.common.util.Transformer;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
+// CHECKSTYLE:OFF
public interface KeyExchangeFactory extends NamedFactory<KeyExchange> {
- // required because of generics issues
- Transformer<KeyExchangeFactory,NamedFactory<KeyExchange>> FAC2NAMED=new Transformer<KeyExchangeFactory,NamedFactory<KeyExchange>>() {
- @Override
- public NamedFactory<KeyExchange> transform(KeyExchangeFactory input) {
- return input;
- }
- };
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java b/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java
index 2440955..65e306b 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/kex/dh/AbstractDHKeyExchange.java
@@ -22,7 +22,6 @@ package org.apache.sshd.common.kex.dh;
import org.apache.sshd.common.digest.Digest;
import org.apache.sshd.common.kex.KeyExchange;
import org.apache.sshd.common.session.AbstractSession;
-import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.logging.AbstractLoggingBean;
@@ -30,28 +29,29 @@ import org.apache.sshd.common.util.logging.AbstractLoggingBean;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public abstract class AbstractDHKeyExchange extends AbstractLoggingBean implements KeyExchange {
- private AbstractSession session;
- protected byte[] V_S;
- protected byte[] V_C;
- protected byte[] I_S;
- protected byte[] I_C;
+
+ protected AbstractSession session;
+ protected byte[] v_s;
+ protected byte[] v_c;
+ protected byte[] i_s;
+ protected byte[] i_c;
protected Digest hash;
protected byte[] e;
protected byte[] f;
- protected byte[] K;
- protected byte[] H;
+ protected byte[] k;
+ protected byte[] h;
protected AbstractDHKeyExchange() {
super();
}
@Override
- public void init(AbstractSession s, byte[] V_S, byte[] V_C, byte[] I_S, byte[] I_C) throws Exception {
+ public void init(AbstractSession s, byte[] v_s, byte[] v_c, byte[] i_s, byte[] i_c) throws Exception {
this.session = ValidateUtils.checkNotNull(s, "No session");
- this.V_S = ValidateUtils.checkNotNullAndNotEmpty(V_S, "No V_S value");
- this.V_C = ValidateUtils.checkNotNullAndNotEmpty(V_C, "No V_C value");
- this.I_S = ValidateUtils.checkNotNullAndNotEmpty(I_S, "No I_S value");
- this.I_C = ValidateUtils.checkNotNullAndNotEmpty(I_C, "No I_C value");
+ this.v_s = ValidateUtils.checkNotNullAndNotEmpty(v_s, "No v_s value");
+ this.v_c = ValidateUtils.checkNotNullAndNotEmpty(v_c, "No v_c value");
+ this.i_s = ValidateUtils.checkNotNullAndNotEmpty(i_s, "No i_s value");
+ this.i_c = ValidateUtils.checkNotNullAndNotEmpty(i_c, "No i_c value");
}
public AbstractSession getSession() {
@@ -65,11 +65,11 @@ public abstract class AbstractDHKeyExchange extends AbstractLoggingBean implemen
@Override
public byte[] getH() {
- return H;
+ return h;
}
@Override
public byte[] getK() {
- return K;
+ return k;
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractClassLoadableResourceKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractClassLoadableResourceKeyPairProvider.java b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractClassLoadableResourceKeyPairProvider.java
index 183bf06..11e011c 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractClassLoadableResourceKeyPairProvider.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractClassLoadableResourceKeyPairProvider.java
@@ -33,11 +33,12 @@ import org.apache.sshd.common.util.threads.ThreadUtils;
* are accessible via {@link ClassLoader#getResourceAsStream(String)}.
* If no loader configured via {@link #setResourceLoader(ClassLoader)}, then
* {@link ThreadUtils#resolveDefaultClassLoader(Class)} is used
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public abstract class AbstractClassLoadableResourceKeyPairProvider extends AbstractResourceKeyPairProvider<String> {
private ClassLoader classLoader;
- private Collection<String> resources;
+ private Collection<String> resources;
protected AbstractClassLoadableResourceKeyPairProvider() {
classLoader = ThreadUtils.resolveDefaultClassLoader(getClass());
@@ -70,7 +71,7 @@ public abstract class AbstractClassLoadableResourceKeyPairProvider extends Abstr
if (cl == null) {
throw new StreamCorruptedException("No resource loader for " + resource);
}
-
+
InputStream input = cl.getResourceAsStream(resource);
if (input == null) {
throw new FileNotFoundException("Cannot find resource " + resource);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java
index 25e57fd..590a7c7 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractFileKeyPairProvider.java
@@ -38,6 +38,7 @@ import org.apache.sshd.common.util.io.IoUtils;
* loading is <U>lazy</U> - i.e., a file is not loaded until it is actually
* required. Once required though, its loaded {@link KeyPair} result is
* <U>cached</U> and not re-loaded.
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public abstract class AbstractFileKeyPairProvider extends AbstractResourceKeyPairProvider<Path> {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java
index 85a59f2..ee65334 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java
@@ -39,13 +39,14 @@ import org.apache.sshd.common.util.GenericUtils;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPairProvider {
+
private FilePasswordProvider passwordFinder;
/*
* NOTE: the map is case insensitive even for Linux, as it is (very) bad
* practice to have 2 key files that differ from one another only in their
* case...
*/
- private final Map<String,KeyPair> cacheMap=new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+ private final Map<String, KeyPair> cacheMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
protected AbstractResourceKeyPairProvider() {
super();
@@ -61,8 +62,8 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
protected void resetCacheMap(Collection<?> resources) {
// if have any cached pairs then see what we can keep from previous load
- Collection<String> toDelete=Collections.emptySet();
- synchronized(cacheMap) {
+ Collection<String> toDelete = Collections.emptySet();
+ synchronized (cacheMap) {
if (cacheMap.size() <= 0) {
return; // already empty - nothing to keep
}
@@ -77,11 +78,11 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
if (cacheMap.containsKey(resourceKey)) {
continue;
}
-
+
if (toDelete.isEmpty()) {
- toDelete = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
+ toDelete = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
}
-
+
if (!toDelete.add(resourceKey)) {
continue; // debug breakpoint
}
@@ -93,12 +94,12 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
}
}
}
-
+
if (log.isDebugEnabled()) {
log.debug("resetCacheMap(" + resources + ") removed previous cached keys for " + toDelete);
}
}
-
+
protected Iterable<KeyPair> loadKeys(final Collection<? extends R> resources) {
if (GenericUtils.isEmpty(resources)) {
return Collections.emptyList();
@@ -106,54 +107,7 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
return new Iterable<KeyPair>() {
@Override
public Iterator<KeyPair> iterator() {
- return new Iterator<KeyPair>() {
- private final Iterator<? extends R> iterator = resources.iterator();
- private KeyPair nextKeyPair;
- private boolean nextKeyPairSet = false;
-
- @Override
- public boolean hasNext() {
- return nextKeyPairSet || setNextObject();
- }
-
- @Override
- public KeyPair next() {
- if (!nextKeyPairSet) {
- if (!setNextObject()) {
- throw new NoSuchElementException("Out of files to try");
- }
- }
- nextKeyPairSet = false;
- return nextKeyPair;
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException("loadKeys(files) Iterator#remove() N/A");
- }
-
- @SuppressWarnings("synthetic-access")
- private boolean setNextObject() {
- while (iterator.hasNext()) {
- R r = iterator.next();
- try {
- nextKeyPair = doLoadKey(r);
- } catch(Exception e) {
- log.warn("Failed (" + e.getClass().getSimpleName() + ")"
- + " to load key resource=" + r + ": " + e.getMessage());
- nextKeyPair = null;
- continue;
- }
-
- if (nextKeyPair != null) {
- nextKeyPairSet = true;
- return true;
- }
- }
-
- return false;
- }
- };
+ return new KeyPairIterator(resources);
}
};
}
@@ -162,15 +116,17 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
protected KeyPair doLoadKey(R resource) throws IOException, GeneralSecurityException {
String resourceKey = Objects.toString(resource);
KeyPair kp;
- synchronized(cacheMap) {
+ synchronized (cacheMap) {
// check if lucky enough to have already loaded this file
- if ((kp=cacheMap.get(resourceKey)) != null) {
+ kp = cacheMap.get(resourceKey);
+ if (kp != null) {
return kp;
}
}
- if ((kp=doLoadKey(resourceKey, resource, getPasswordFinder())) != null) {
- synchronized(cacheMap) {
+ kp = doLoadKey(resourceKey, resource, getPasswordFinder());
+ if (kp != null) {
+ synchronized (cacheMap) {
// if somebody else beat us to it, use the cached key
if (cacheMap.containsKey(resourceKey)) {
kp = cacheMap.get(resourceKey);
@@ -178,22 +134,75 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
cacheMap.put(resourceKey, kp);
}
}
-
+
if (log.isDebugEnabled()) {
log.debug("doLoadKey(" + resourceKey + ") loaded " + kp.getPublic() + " / " + kp.getPrivate());
}
}
-
+
return kp;
}
protected KeyPair doLoadKey(String resourceKey, R resource, FilePasswordProvider provider) throws IOException, GeneralSecurityException {
- try(InputStream inputStream = openKeyPairResource(resourceKey, resource)) {
+ try (InputStream inputStream = openKeyPairResource(resourceKey, resource)) {
return doLoadKey(resourceKey, inputStream, provider);
}
}
-
+
protected abstract InputStream openKeyPairResource(String resourceKey, R resource) throws IOException;
-
+
protected abstract KeyPair doLoadKey(String resourceKey, InputStream inputStream, FilePasswordProvider provider) throws IOException, GeneralSecurityException;
+
+ private class KeyPairIterator implements Iterator<KeyPair> {
+ private final Iterator<? extends R> iterator;
+ private KeyPair nextKeyPair;
+ private boolean nextKeyPairSet;
+
+ public KeyPairIterator(Collection<? extends R> resources) {
+ iterator = resources.iterator();
+ }
+
+ @Override
+ public boolean hasNext() {
+ return nextKeyPairSet || setNextObject();
+ }
+
+ @Override
+ public KeyPair next() {
+ if (!nextKeyPairSet) {
+ if (!setNextObject()) {
+ throw new NoSuchElementException("Out of files to try");
+ }
+ }
+ nextKeyPairSet = false;
+ return nextKeyPair;
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException("loadKeys(files) Iterator#remove() N/A");
+ }
+
+ @SuppressWarnings("synthetic-access")
+ private boolean setNextObject() {
+ while (iterator.hasNext()) {
+ R r = iterator.next();
+ try {
+ nextKeyPair = doLoadKey(r);
+ } catch (Exception e) {
+ log.warn("Failed (" + e.getClass().getSimpleName() + ")"
+ + " to load key resource=" + r + ": " + e.getMessage());
+ nextKeyPair = null;
+ continue;
+ }
+
+ if (nextKeyPair != null) {
+ nextKeyPairSet = true;
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java
index 2f22413..5947376 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java
@@ -57,27 +57,6 @@ public interface KeyPairProvider {
String ECDSA_SHA2_NISTP521 = ECCurves.nistp521.getKeyType();
/**
- * Load available keys.
- * @return an {@link Iterable} instance of available keys, never {@code null}
- */
- Iterable<KeyPair> loadKeys();
-
- /**
- * Load a key of the specified type which can be "ssh-rsa", "ssh-dss", or
- * "ecdsa-sha2-nistp{256,384,521}". If there is no key of this type, return
- * {@code null}
- *
- * @param type the type of key to load
- * @return a valid key pair or {@code null}
- */
- KeyPair loadKey(String type);
-
- /**
- * @return The available {@link Iterable} key types in preferred order - never {@code null}
- */
- Iterable<String> getKeyTypes();
-
- /**
* A {@link KeyPairProvider} that has no keys
*/
KeyPairProvider EMPTY_KEYPAIR_PROVIDER =
@@ -102,4 +81,27 @@ public interface KeyPairProvider {
return "EMPTY_KEYPAIR_PROVIDER";
}
};
+
+ /**
+ * Load available keys.
+ *
+ * @return an {@link Iterable} instance of available keys, never {@code null}
+ */
+ Iterable<KeyPair> loadKeys();
+
+ /**
+ * Load a key of the specified type which can be "ssh-rsa", "ssh-dss", or
+ * "ecdsa-sha2-nistp{256,384,521}". If there is no key of this type, return
+ * {@code null}
+ *
+ * @param type the type of key to load
+ * @return a valid key pair or {@code null}
+ */
+ KeyPair loadKey(String type);
+
+ /**
+ * @return The available {@link Iterable} key types in preferred order - never {@code null}
+ */
+ Iterable<String> getKeyTypes();
+
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java
index c8c187d..0b6fe13 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java
@@ -22,13 +22,13 @@ package org.apache.sshd.common.keyprovider;
import java.security.KeyPair;
import java.util.Map;
-import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.Transformer;
import org.apache.sshd.common.util.ValidateUtils;
/**
* Holds a {@link Map} of {@link String}->{@link KeyPair} where the map key
* is the type and value is the associated {@link KeyPair}
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public class MappedKeyPairProvider implements KeyPairProvider {
@@ -37,17 +37,17 @@ public class MappedKeyPairProvider implements KeyPairProvider {
* {@link KeyPairProvider} where map key is the type and value is the
* associated {@link KeyPair}
*/
- public static final Transformer<Map<String,KeyPair>, KeyPairProvider> MAP_TO_KEY_PAIR_PROVIDER =
- new Transformer<Map<String,KeyPair>, KeyPairProvider>() {
+ public static final Transformer<Map<String, KeyPair>, KeyPairProvider> MAP_TO_KEY_PAIR_PROVIDER =
+ new Transformer<Map<String, KeyPair>, KeyPairProvider>() {
@Override
public KeyPairProvider transform(final Map<String, KeyPair> input) {
return new MappedKeyPairProvider(input);
}
};
- private final Map<String,KeyPair> pairsMap;
+ private final Map<String, KeyPair> pairsMap;
- public MappedKeyPairProvider(Map<String,KeyPair> pairsMap) {
+ public MappedKeyPairProvider(Map<String, KeyPair> pairsMap) {
this.pairsMap = ValidateUtils.checkNotNull(pairsMap, "No pairs map provided");
}
@@ -55,12 +55,12 @@ public class MappedKeyPairProvider implements KeyPairProvider {
public Iterable<KeyPair> loadKeys() {
return pairsMap.values();
}
-
+
@Override
public KeyPair loadKey(String type) {
return pairsMap.get(type);
}
-
+
@Override
public Iterable<String> getKeyTypes() {
return pairsMap.keySet();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/mac/BuiltinMacs.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/mac/BuiltinMacs.java b/sshd-core/src/main/java/org/apache/sshd/common/mac/BuiltinMacs.java
index 2624ef9..5e55ebf 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/mac/BuiltinMacs.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/mac/BuiltinMacs.java
@@ -80,8 +80,18 @@ public enum BuiltinMacs implements MacFactory {
}
};
+ public static final Set<BuiltinMacs> VALUES =
+ Collections.unmodifiableSet(EnumSet.allOf(BuiltinMacs.class));
+
+ private static final Map<String, MacFactory> EXTENSIONS =
+ new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+
private final String factoryName;
+ BuiltinMacs(String facName) {
+ factoryName = facName;
+ }
+
@Override
public final String getName() {
return factoryName;
@@ -96,31 +106,23 @@ public enum BuiltinMacs implements MacFactory {
public final String toString() {
return getName();
}
-
- BuiltinMacs(String facName) {
- factoryName = facName;
- }
-
- public static final Set<BuiltinMacs> VALUES =
- Collections.unmodifiableSet(EnumSet.allOf(BuiltinMacs.class));
- private static final Map<String,MacFactory> extensions =
- new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
/**
* Registered a {@link NamedFactory} to be available besides the built-in
* ones when parsing configuration
+ *
* @param extension The factory to register
* @throws IllegalArgumentException if factory instance is {@code null},
- * or overrides a built-in one or overrides another registered factory
- * with the same name (case <U>insensitive</U>).
+ * or overrides a built-in one or overrides another registered factory
+ * with the same name (case <U>insensitive</U>).
*/
public static void registerExtension(MacFactory extension) {
- String name=ValidateUtils.checkNotNull(extension, "No extension provided").getName();
+ String name = ValidateUtils.checkNotNull(extension, "No extension provided").getName();
ValidateUtils.checkTrue(fromFactoryName(name) == null, "Extension overrides built-in: %s", name);
- synchronized(extensions) {
- ValidateUtils.checkTrue(!extensions.containsKey(name), "Extension overrides existinh: %s", name);
- extensions.put(name, extension);
+ synchronized (EXTENSIONS) {
+ ValidateUtils.checkTrue(!EXTENSIONS.containsKey(name), "Extension overrides existing: %s", name);
+ EXTENSIONS.put(name, extension);
}
}
@@ -130,13 +132,14 @@ public enum BuiltinMacs implements MacFactory {
*/
public static SortedSet<MacFactory> getRegisteredExtensions() {
// TODO for JDK-8 return Collections.emptySortedSet()
- synchronized(extensions) {
- return GenericUtils.asSortedSet(NamedResource.BY_NAME_COMPARATOR, extensions.values());
+ synchronized (EXTENSIONS) {
+ return GenericUtils.asSortedSet(NamedResource.BY_NAME_COMPARATOR, EXTENSIONS.values());
}
}
/**
* Unregisters specified extension
+ *
* @param name The factory name - ignored if {@code null}/empty
* @return The registered extension - {@code null} if not found
*/
@@ -144,9 +147,9 @@ public enum BuiltinMacs implements MacFactory {
if (GenericUtils.isEmpty(name)) {
return null;
}
-
- synchronized(extensions) {
- return extensions.remove(name);
+
+ synchronized (EXTENSIONS) {
+ return EXTENSIONS.remove(name);
}
}
@@ -194,7 +197,7 @@ public enum BuiltinMacs implements MacFactory {
/**
* @param macs A comma-separated list of MACs' names - ignored
- * if {@code null}/empty
+ * if {@code null}/empty
* @return A {@link ParseResult} containing the successfully parsed
* factories and the unknown ones. <B>Note:</B> it is up to caller to
* ensure that the lists do not contain duplicates
@@ -203,7 +206,7 @@ public enum BuiltinMacs implements MacFactory {
return parseMacsList(GenericUtils.split(macs, ','));
}
- public static ParseResult parseMacsList(String ... macs) {
+ public static ParseResult parseMacsList(String... macs) {
return parseMacsList(GenericUtils.isEmpty((Object[]) macs) ? Collections.<String>emptyList() : Arrays.asList(macs));
}
@@ -211,11 +214,11 @@ public enum BuiltinMacs implements MacFactory {
if (GenericUtils.isEmpty(macs)) {
return ParseResult.EMPTY;
}
-
- List<MacFactory> factories=new ArrayList<>(macs.size());
- List<String> unknown=Collections.emptyList();
+
+ List<MacFactory> factories = new ArrayList<>(macs.size());
+ List<String> unknown = Collections.emptyList();
for (String name : macs) {
- MacFactory m=resolveFactory(name);
+ MacFactory m = resolveFactory(name);
if (m != null) {
factories.add(m);
} else {
@@ -226,33 +229,33 @@ public enum BuiltinMacs implements MacFactory {
unknown.add(name);
}
}
-
+
return new ParseResult(factories, unknown);
}
/**
* @param name The factory name
* @return The factory or {@code null} if it is neither a built-in one
- * or a registered extension
+ * or a registered extension
*/
public static MacFactory resolveFactory(String name) {
if (GenericUtils.isEmpty(name)) {
return null;
}
- MacFactory m=fromFactoryName(name);
+ MacFactory m = fromFactoryName(name);
if (m != null) {
return m;
}
-
- synchronized(extensions) {
- return extensions.get(name);
+
+ synchronized (EXTENSIONS) {
+ return EXTENSIONS.get(name);
}
}
- public static final class ParseResult extends NamedFactoriesListParseResult<Mac,MacFactory> {
- public static final ParseResult EMPTY=new ParseResult(Collections.<MacFactory>emptyList(), Collections.<String>emptyList());
-
+ public static final class ParseResult extends NamedFactoriesListParseResult<Mac, MacFactory> {
+ public static final ParseResult EMPTY = new ParseResult(Collections.<MacFactory>emptyList(), Collections.<String>emptyList());
+
public ParseResult(List<MacFactory> parsed, List<String> unsupported) {
super(parsed, unsupported);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/mac/MacFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/mac/MacFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/mac/MacFactory.java
index e84bbb4..ec5a0ca 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/mac/MacFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/mac/MacFactory.java
@@ -19,19 +19,12 @@
package org.apache.sshd.common.mac;
-import org.apache.sshd.common.NamedFactory;
-import org.apache.sshd.common.OptionalFeature;
-import org.apache.sshd.common.util.Transformer;
+import org.apache.sshd.common.BuiltinFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
-public interface MacFactory extends NamedFactory<Mac>, OptionalFeature {
- // required because of generics issues
- Transformer<MacFactory,NamedFactory<Mac>> FAC2NAMED=new Transformer<MacFactory,NamedFactory<Mac>>() {
- @Override
- public NamedFactory<Mac> transform(MacFactory input) {
- return input;
- }
- };
+// CHECKSTYLE:OFF
+public interface MacFactory extends BuiltinFactory<Mac> {
+
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/random/AbstractRandom.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/random/AbstractRandom.java b/sshd-core/src/main/java/org/apache/sshd/common/random/AbstractRandom.java
index 372de9b..5746e4d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/random/AbstractRandom.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/random/AbstractRandom.java
@@ -26,7 +26,7 @@ public abstract class AbstractRandom implements Random {
protected AbstractRandom() {
super();
}
-
+
@Override // TODO in JDK-8 make this a default method
public void fill(byte[] bytes) {
fill(bytes, 0, bytes.length);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/random/JceRandom.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/random/JceRandom.java b/sshd-core/src/main/java/org/apache/sshd/common/random/JceRandom.java
index 7e1b3a5..5b64666 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/random/JceRandom.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/random/JceRandom.java
@@ -21,7 +21,7 @@ package org.apache.sshd.common.random;
import java.security.SecureRandom;
/**
- * A <code>Random</code> implementation using the built-in {@link SecureRandom} PRNG.
+ * A <code>Random</code> implementation using the built-in {@link SecureRandom} PRNG.
*
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@@ -31,7 +31,7 @@ public class JceRandom extends AbstractRandom {
private final SecureRandom random = new SecureRandom();
public JceRandom() {
- super();
+ super();
}
@Override