You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2018/11/18 04:55:03 UTC
[08/12] mina-sshd git commit: [SSHD-862] Provide SessionContext
argument when loading client keys identities
[SSHD-862] Provide SessionContext argument when loading client keys identities
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/210f638e
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/210f638e
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/210f638e
Branch: refs/heads/master
Commit: 210f638e34ced6ce6322dc788dd01d8818b1da3d
Parents: e05898c
Author: Lyor Goldstein <lg...@apache.org>
Authored: Tue Nov 13 17:21:42 2018 +0200
Committer: Lyor Goldstein <lg...@apache.org>
Committed: Sun Nov 18 06:54:47 2018 +0200
----------------------------------------------------------------------
CHANGES.md | 4 ++
.../sshd/cli/server/SshServerCliSupport.java | 4 +-
.../auth/AuthenticationIdentitiesProvider.java | 3 +-
.../keys/BuiltinClientIdentitiesWatcher.java | 11 +++--
.../config/keys/ClientIdentitiesWatcher.java | 13 +++---
.../config/keys/ClientIdentityFileWatcher.java | 7 ++--
.../config/keys/ClientIdentityProvider.java | 8 +++-
.../sshd/common/config/keys/KeyRandomArt.java | 22 +++++++---
.../AbstractResourceKeyPairProvider.java | 31 ++++++++------
.../ClassLoadableResourceKeyPairProvider.java | 5 ++-
.../common/keyprovider/FileKeyPairProvider.java | 9 ++--
.../common/keyprovider/KeyIdentityProvider.java | 44 +++++++++++---------
.../common/keyprovider/KeyPairProvider.java | 8 ++--
.../keyprovider/MappedKeyPairProvider.java | 2 +-
.../keyprovider/MultiKeyIdentityIterator.java | 13 +++++-
.../keyprovider/MultiKeyIdentityProvider.java | 6 ++-
.../AbstractGeneratorHostKeyProvider.java | 30 +++++++------
.../SimpleGeneratorHostKeyProvider.java | 8 +++-
.../BuiltinClientIdentitiesWatcherTest.java | 2 +-
.../keys/ClientIdentityFileWatcherTest.java | 7 ++--
.../client/config/keys/ClientIdentityTest.java | 2 +-
.../common/config/keys/KeyRandomArtTest.java | 2 +-
.../common/keyprovider/KeyPairProviderTest.java | 4 +-
.../MultiKeyIdentityProviderTest.java | 5 ++-
.../common/util/security/SecurityUtilsTest.java | 2 +-
.../AbstractGeneratorHostKeyProviderTest.java | 14 ++++---
.../sshd/util/test/CommonTestSupportUtils.java | 4 +-
.../keys/LazyClientIdentityIteratorTest.java | 7 ++--
.../auth/pubkey/UserAuthPublicKeyIterator.java | 2 +-
.../sshd/client/session/ClientSession.java | 4 +-
.../server/session/ServerUserAuthService.java | 2 +-
.../hosts/HostConfigEntryResolverTest.java | 3 +-
.../signature/SignatureFactoriesTest.java | 11 ++---
.../sshd/server/auth/WelcomeBannerTest.java | 5 ++-
.../server/config/keys/ServerIdentityTest.java | 2 +-
35 files changed, 186 insertions(+), 120 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/CHANGES.md
----------------------------------------------------------------------
diff --git a/CHANGES.md b/CHANGES.md
index 6751736..a07e953 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -42,6 +42,10 @@ accept also an `AttributeRepository` connection context argument (propagated fro
* `KeyPairProvider` accepts a `SessionContext` argument in its `getKeyTypes/loadKey` methods
+* `KeyIdentityProvider` accepts a `SessionContext` argument in its `loadKeys` method
+
+* `ClientIdentityProvider` accepts a `SessionContext` argument in its `getClientIdentity` method
+
## Behavioral changes and enhancements
* [SSHD-849](https://issues.apache.org/jira/browse/SSHD-849) - Data forwarding code makes sure all
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-cli/src/main/java/org/apache/sshd/cli/server/SshServerCliSupport.java
----------------------------------------------------------------------
diff --git a/sshd-cli/src/main/java/org/apache/sshd/cli/server/SshServerCliSupport.java b/sshd-cli/src/main/java/org/apache/sshd/cli/server/SshServerCliSupport.java
index 6cdffc8..eac5b7e 100644
--- a/sshd-cli/src/main/java/org/apache/sshd/cli/server/SshServerCliSupport.java
+++ b/sshd-cli/src/main/java/org/apache/sshd/cli/server/SshServerCliSupport.java
@@ -92,8 +92,8 @@ public abstract class SshServerCliSupport extends CliSupport {
hostKeyProvider.setKeySize(hostKeySize);
}
- List<KeyPair> keys = ValidateUtils.checkNotNullAndNotEmpty(hostKeyProvider.loadKeys(),
- "Failed to load keys from %s", hostKeyFile);
+ List<KeyPair> keys = ValidateUtils.checkNotNullAndNotEmpty(
+ hostKeyProvider.loadKeys(null), "Failed to load keys from %s", hostKeyFile);
KeyPair kp = keys.get(0);
PublicKey pubKey = kp.getPublic();
String keyAlgorithm = pubKey.getAlgorithm();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/client/auth/AuthenticationIdentitiesProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/client/auth/AuthenticationIdentitiesProvider.java b/sshd-common/src/main/java/org/apache/sshd/client/auth/AuthenticationIdentitiesProvider.java
index ee7c856..6ac1a93 100644
--- a/sshd-common/src/main/java/org/apache/sshd/client/auth/AuthenticationIdentitiesProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/client/auth/AuthenticationIdentitiesProvider.java
@@ -26,6 +26,7 @@ import java.util.List;
import org.apache.sshd.client.auth.password.PasswordIdentityProvider;
import org.apache.sshd.common.config.keys.KeyUtils;
import org.apache.sshd.common.keyprovider.KeyIdentityProvider;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.helper.LazyMatchingTypeIterable;
/**
@@ -82,7 +83,7 @@ public interface AuthenticationIdentitiesProvider extends KeyIdentityProvider, P
static AuthenticationIdentitiesProvider wrapIdentities(Iterable<?> identities) {
return new AuthenticationIdentitiesProvider() {
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
return LazyMatchingTypeIterable.lazySelectMatchingTypes(identities, KeyPair.class);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcher.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcher.java b/sshd-common/src/main/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcher.java
index ab9929b..bb3f738 100644
--- a/sshd-common/src/main/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcher.java
+++ b/sshd-common/src/main/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcher.java
@@ -32,6 +32,7 @@ import org.apache.sshd.common.NamedResource;
import org.apache.sshd.common.config.keys.BuiltinIdentities;
import org.apache.sshd.common.config.keys.FilePasswordProvider;
import org.apache.sshd.common.config.keys.KeyUtils;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.GenericUtils;
/**
@@ -69,18 +70,20 @@ public class BuiltinClientIdentitiesWatcher extends ClientIdentitiesWatcher {
}
@Override
- public Iterable<KeyPair> loadKeys() {
- return isSupportedOnly() ? loadKeys(this::isSupported) : super.loadKeys();
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
+ return isSupportedOnly()
+ ? loadKeys(session, p -> isSupported(session, p))
+ : super.loadKeys(session);
}
- private boolean isSupported(KeyPair kp) {
+ protected boolean isSupported(SessionContext session, KeyPair kp) {
BuiltinIdentities id = BuiltinIdentities.fromKeyPair(kp);
if ((id != null) && id.isSupported()) {
return true;
}
if (log.isDebugEnabled()) {
log.debug("loadKeys - remove unsupported identity={}, key-type={}, key={}",
- id, KeyUtils.getKeyType(kp), KeyUtils.getFingerPrint(kp.getPublic()));
+ id, KeyUtils.getKeyType(kp), KeyUtils.getFingerPrint(kp.getPublic()));
}
return false;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentitiesWatcher.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentitiesWatcher.java b/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentitiesWatcher.java
index 05660f7..eed14e9 100644
--- a/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentitiesWatcher.java
+++ b/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentitiesWatcher.java
@@ -31,6 +31,7 @@ import java.util.function.Supplier;
import org.apache.sshd.common.config.keys.FilePasswordProvider;
import org.apache.sshd.common.keyprovider.AbstractKeyPairProvider;
import org.apache.sshd.common.keyprovider.KeyPairProvider;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.GenericUtils;
/**
@@ -69,17 +70,17 @@ public class ClientIdentitiesWatcher extends AbstractKeyPairProvider implements
}
@Override
- public Iterable<KeyPair> loadKeys() {
- return loadKeys(null);
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
+ return loadKeys(session, null);
}
- protected Iterable<KeyPair> loadKeys(Predicate<? super KeyPair> filter) {
- return ClientIdentityProvider.lazyKeysLoader(providers, this::doGetKeyPair, filter);
+ protected Iterable<KeyPair> loadKeys(SessionContext session, Predicate<? super KeyPair> filter) {
+ return ClientIdentityProvider.lazyKeysLoader(providers, p -> doGetKeyPair(session, p), filter);
}
- protected KeyPair doGetKeyPair(ClientIdentityProvider p) {
+ protected KeyPair doGetKeyPair(SessionContext session, ClientIdentityProvider p) {
try {
- KeyPair kp = p.getClientIdentity();
+ KeyPair kp = p.getClientIdentity(session);
if (kp == null) {
if (log.isDebugEnabled()) {
log.debug("loadKeys({}) no key loaded", p);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcher.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcher.java b/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcher.java
index dc2128f..411ae1b 100644
--- a/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcher.java
+++ b/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcher.java
@@ -31,6 +31,7 @@ import java.util.function.Supplier;
import org.apache.sshd.common.config.keys.FilePasswordProvider;
import org.apache.sshd.common.config.keys.KeyUtils;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.io.IoUtils;
import org.apache.sshd.common.util.io.ModifiableFileWatcher;
@@ -84,7 +85,7 @@ public class ClientIdentityFileWatcher extends ModifiableFileWatcher implements
}
@Override
- public KeyPair getClientIdentity() throws IOException, GeneralSecurityException {
+ public KeyPair getClientIdentity(SessionContext session) throws IOException, GeneralSecurityException {
if (!checkReloadRequired()) {
return identityHolder.get();
}
@@ -95,7 +96,7 @@ public class ClientIdentityFileWatcher extends ModifiableFileWatcher implements
return identityHolder.get();
}
- KeyPair id = reloadClientIdentity(path);
+ KeyPair id = reloadClientIdentity(session, path);
if (!KeyUtils.compareKeyPairs(kp, id)) {
if (log.isDebugEnabled()) {
log.debug("getClientIdentity({}) identity {}", path, (kp == null) ? "loaded" : "re-loaded");
@@ -107,7 +108,7 @@ public class ClientIdentityFileWatcher extends ModifiableFileWatcher implements
return identityHolder.get();
}
- protected KeyPair reloadClientIdentity(Path path) throws IOException, GeneralSecurityException {
+ protected KeyPair reloadClientIdentity(SessionContext session, Path path) throws IOException, GeneralSecurityException {
if (isStrict()) {
Map.Entry<String, Object> violation =
KeyUtils.validateStrictKeyFilePermissions(path, IoUtils.EMPTY_LINK_OPTIONS);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityProvider.java b/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityProvider.java
index 6bd4c07..8c52d4f 100644
--- a/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/client/config/keys/ClientIdentityProvider.java
@@ -28,6 +28,8 @@ import java.util.Objects;
import java.util.function.Function;
import java.util.function.Predicate;
+import org.apache.sshd.common.session.SessionContext;
+
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
@@ -36,6 +38,8 @@ public interface ClientIdentityProvider {
/**
* Provides a {@link KeyPair} representing the client identity
*
+ * @param session The {@link SessionContext} for invoking this load command - may
+ * be {@code null} if not invoked within a session context (e.g., offline tool).
* @return The client identity - may be {@code null} if no currently
* available identity from this provider. <B>Note:</B> the provider
* may return a <U>different</U> value every time this method is called
@@ -43,7 +47,7 @@ public interface ClientIdentityProvider {
* @throws IOException If failed to load the identity
* @throws GeneralSecurityException If failed to parse the identity
*/
- KeyPair getClientIdentity() throws IOException, GeneralSecurityException;
+ KeyPair getClientIdentity(SessionContext session) throws IOException, GeneralSecurityException;
/**
* Wraps a {@link KeyPair} into a {@link ClientIdentityProvider} that
@@ -53,7 +57,7 @@ public interface ClientIdentityProvider {
* @return The wrapping provider
*/
static ClientIdentityProvider of(KeyPair kp) {
- return () -> kp;
+ return session -> kp;
}
/**
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/common/config/keys/KeyRandomArt.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/config/keys/KeyRandomArt.java b/sshd-common/src/main/java/org/apache/sshd/common/config/keys/KeyRandomArt.java
index b59dbd0..cf0b1c9 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/config/keys/KeyRandomArt.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/config/keys/KeyRandomArt.java
@@ -34,6 +34,7 @@ import java.util.Objects;
import org.apache.sshd.common.Factory;
import org.apache.sshd.common.digest.Digest;
import org.apache.sshd.common.keyprovider.KeyIdentityProvider;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
@@ -197,6 +198,8 @@ public class KeyRandomArt {
/**
* Creates the combined representation of the random art entries for the provided keys
*
+ * @param session The {@link SessionContext} for invoking this load command - may
+ * be {@code null} if not invoked within a session context (e.g., offline tool or session unknown).
* @param separator The separator to use between the arts - if empty char
* ('\0') then no separation is done
* @param provider The {@link KeyIdentityProvider} - ignored if {@code null}
@@ -205,14 +208,18 @@ public class KeyRandomArt {
* @throws Exception If failed to extract or combine the entries
* @see #combine(Appendable, char, KeyIdentityProvider)
*/
- public static String combine(char separator, KeyIdentityProvider provider) throws Exception {
- return combine(new StringBuilder(4 * (FLDSIZE_X + 4) * (FLDSIZE_Y + 3)), separator, provider).toString();
+ public static String combine(
+ SessionContext session, char separator, KeyIdentityProvider provider)
+ throws Exception {
+ return combine(session, new StringBuilder(4 * (FLDSIZE_X + 4) * (FLDSIZE_Y + 3)), separator, provider).toString();
}
/**
* Appends the combined random art entries for the provided keys
*
* @param <A> The {@link Appendable} output writer
+ * @param session The {@link SessionContext} for invoking this load command - may
+ * be {@code null} if not invoked within a session context (e.g., offline tool or session unknown).
* @param sb The writer
* @param separator The separator to use between the arts - if empty char
* ('\0') then no separation is done
@@ -223,21 +230,24 @@ public class KeyRandomArt {
* @see #generate(KeyIdentityProvider)
* @see #combine(Appendable, char, Collection)
*/
- public static <A extends Appendable> A combine(A sb, char separator, KeyIdentityProvider provider) throws Exception {
- return combine(sb, separator, generate(provider));
+ public static <A extends Appendable> A combine(
+ SessionContext session, A sb, char separator, KeyIdentityProvider provider) throws Exception {
+ return combine(sb, separator, generate(session, provider));
}
/**
* Extracts and generates random art entries for all key in the provider
*
+ * @param session The {@link SessionContext} for invoking this load command - may
+ * be {@code null} if not invoked within a session context (e.g., offline tool or session unknown).
* @param provider The {@link KeyIdentityProvider} - ignored if {@code null}
* or has no keys to provide
* @return The extracted {@link KeyRandomArt}s
* @throws Exception If failed to extract the entries
* @see KeyIdentityProvider#loadKeys()
*/
- public static Collection<KeyRandomArt> generate(KeyIdentityProvider provider) throws Exception {
- Iterable<KeyPair> keys = (provider == null) ? null : provider.loadKeys();
+ public static Collection<KeyRandomArt> generate(SessionContext session, KeyIdentityProvider provider) throws Exception {
+ Iterable<KeyPair> keys = (provider == null) ? null : provider.loadKeys(session);
Iterator<KeyPair> iter = (keys == null) ? null : keys.iterator();
if ((iter == null) || (!iter.hasNext())) {
return Collections.emptyList();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java
index e4e941d..194daf5 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/AbstractResourceKeyPairProvider.java
@@ -35,6 +35,7 @@ import java.util.TreeSet;
import org.apache.sshd.common.config.keys.FilePasswordProvider;
import org.apache.sshd.common.config.keys.KeyUtils;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.security.SecurityUtils;
@@ -109,15 +110,16 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
}
}
- protected Iterable<KeyPair> loadKeys(final Collection<? extends R> resources) {
+ protected Iterable<KeyPair> loadKeys(SessionContext session, Collection<? extends R> resources) {
if (GenericUtils.isEmpty(resources)) {
return Collections.emptyList();
} else {
- return () -> new KeyPairIterator(resources);
+ return () -> new KeyPairIterator(session, resources);
}
}
- protected KeyPair doLoadKey(R resource) throws IOException, GeneralSecurityException {
+ protected KeyPair doLoadKey(SessionContext session, R resource)
+ throws IOException, GeneralSecurityException {
String resourceKey = ValidateUtils.checkNotNullAndNotEmpty(Objects.toString(resource, null), "No resource string value");
KeyPair kp;
synchronized (cacheMap) {
@@ -129,12 +131,12 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
if (log.isTraceEnabled()) {
PublicKey key = kp.getPublic();
log.trace("doLoadKey({}) use cached key {}-{}",
- resourceKey, KeyUtils.getKeyType(key), KeyUtils.getFingerPrint(key));
+ resourceKey, KeyUtils.getKeyType(key), KeyUtils.getFingerPrint(key));
}
return kp;
}
- kp = doLoadKey(resourceKey, resource, getPasswordFinder());
+ kp = doLoadKey(session, resourceKey, resource, getPasswordFinder());
if (kp != null) {
boolean reusedKey;
synchronized (cacheMap) {
@@ -150,8 +152,8 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
if (log.isDebugEnabled()) {
PublicKey key = kp.getPublic();
log.debug("doLoadKey({}) {} {}-{}",
- resourceKey, reusedKey ? "re-loaded" : "loaded",
- KeyUtils.getKeyType(key), KeyUtils.getFingerPrint(key));
+ resourceKey, reusedKey ? "re-loaded" : "loaded",
+ KeyUtils.getKeyType(key), KeyUtils.getFingerPrint(key));
}
} else {
if (log.isDebugEnabled()) {
@@ -162,26 +164,29 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
return kp;
}
- protected KeyPair doLoadKey(String resourceKey, R resource, FilePasswordProvider provider) throws IOException, GeneralSecurityException {
+ protected KeyPair doLoadKey(SessionContext session, String resourceKey, R resource, FilePasswordProvider provider)
+ throws IOException, GeneralSecurityException {
try (InputStream inputStream = openKeyPairResource(resourceKey, resource)) {
- return doLoadKey(resourceKey, inputStream, provider);
+ return doLoadKey(session, resourceKey, inputStream, provider);
}
}
protected abstract InputStream openKeyPairResource(String resourceKey, R resource) throws IOException;
- protected KeyPair doLoadKey(String resourceKey, InputStream inputStream, FilePasswordProvider provider)
+ protected KeyPair doLoadKey(SessionContext session, String resourceKey, InputStream inputStream, FilePasswordProvider provider)
throws IOException, GeneralSecurityException {
return SecurityUtils.loadKeyPairIdentity(resourceKey, inputStream, provider);
}
protected class KeyPairIterator implements Iterator<KeyPair> {
+ protected final SessionContext session;
private final Iterator<? extends R> iterator;
private KeyPair nextKeyPair;
private boolean nextKeyPairSet;
- protected KeyPairIterator(Collection<? extends R> resources) {
- iterator = resources.iterator();
+ protected KeyPairIterator(SessionContext session, Collection<? extends R> resources) {
+ this.session = session;
+ this.iterator = resources.iterator();
}
@Override
@@ -211,7 +216,7 @@ public abstract class AbstractResourceKeyPairProvider<R> extends AbstractKeyPair
while (iterator.hasNext()) {
R r = iterator.next();
try {
- nextKeyPair = doLoadKey(r);
+ nextKeyPair = doLoadKey(session, r);
} catch (Throwable e) {
log.warn("Failed (" + e.getClass().getSimpleName() + ")"
+ " to load key resource=" + r + ": " + e.getMessage());
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/ClassLoadableResourceKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/ClassLoadableResourceKeyPairProvider.java b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/ClassLoadableResourceKeyPairProvider.java
index 6e8da54..3132abd 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/ClassLoadableResourceKeyPairProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/ClassLoadableResourceKeyPairProvider.java
@@ -26,6 +26,7 @@ import java.security.KeyPair;
import java.util.Collection;
import java.util.Collections;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.threads.ThreadUtils;
@@ -84,8 +85,8 @@ public class ClassLoadableResourceKeyPairProvider extends AbstractResourceKeyPai
}
@Override
- public Iterable<KeyPair> loadKeys() {
- return loadKeys(getResources());
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
+ return loadKeys(session, getResources());
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/FileKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/FileKeyPairProvider.java b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/FileKeyPairProvider.java
index fa52eb2..a416871 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/FileKeyPairProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/FileKeyPairProvider.java
@@ -29,6 +29,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Objects;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.io.IoUtils;
@@ -71,13 +72,13 @@ public class FileKeyPairProvider extends AbstractResourceKeyPairProvider<Path> {
}
@Override
- public Iterable<KeyPair> loadKeys() {
- return loadKeys(getPaths());
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
+ return loadKeys(session, getPaths());
}
@Override
- protected KeyPair doLoadKey(Path resource) throws IOException, GeneralSecurityException {
- return super.doLoadKey((resource == null) ? null : resource.toAbsolutePath());
+ protected KeyPair doLoadKey(SessionContext session, Path resource) throws IOException, GeneralSecurityException {
+ return super.doLoadKey(session, (resource == null) ? null : resource.toAbsolutePath());
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyIdentityProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyIdentityProvider.java b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyIdentityProvider.java
index f03b68b..46b6f52 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyIdentityProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyIdentityProvider.java
@@ -23,8 +23,8 @@ import java.security.KeyPair;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
-import java.util.function.Function;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.GenericUtils;
/**
@@ -38,7 +38,7 @@ public interface KeyIdentityProvider {
*/
KeyIdentityProvider EMPTY_KEYS_PROVIDER = new KeyIdentityProvider() {
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
return Collections.emptyList();
}
@@ -49,40 +49,40 @@ public interface KeyIdentityProvider {
};
/**
- * Invokes {@link KeyIdentityProvider#loadKeys()} and returns the result - ignores
- * {@code null} providers (i.e., returns an empty iterable instance)
- */
- Function<KeyIdentityProvider, Iterable<KeyPair>> LOADER = p ->
- (p == null) ? Collections.<KeyPair>emptyList() : p.loadKeys();
-
- /**
* Load available keys.
*
+ * @param session The {@link SessionContext} for invoking this load command - may
+ * be {@code null} if not invoked within a session context (e.g., offline tool or session unknown).
* @return an {@link Iterable} instance of available keys - ignored if {@code null}
*/
- Iterable<KeyPair> loadKeys();
+ Iterable<KeyPair> loadKeys(SessionContext session);
/**
* Creates a "unified" {@link Iterator} of {@link KeyPair}s out of 2 possible
* {@link KeyIdentityProvider}
*
+ * @param session The {@link SessionContext} for invoking this load command - may
+ * be {@code null} if not invoked within a session context (e.g., offline tool or session unknown).
* @param identities The registered keys identities
* @param keys Extra available key pairs
* @return The wrapping iterator
* @see #resolveKeyIdentityProvider(KeyIdentityProvider, KeyIdentityProvider)
*/
- static Iterator<KeyPair> iteratorOf(KeyIdentityProvider identities, KeyIdentityProvider keys) {
- return iteratorOf(resolveKeyIdentityProvider(identities, keys));
+ static Iterator<KeyPair> iteratorOf(
+ SessionContext session, KeyIdentityProvider identities, KeyIdentityProvider keys) {
+ return iteratorOf(session, resolveKeyIdentityProvider(identities, keys));
}
/**
* Resolves a non-{@code null} iterator of the available keys
*
+ * @param session The {@link SessionContext} for invoking this load command - may
+ * be {@code null} if not invoked within a session context (e.g., offline tool or session unknown).
* @param provider The {@link KeyIdentityProvider} - ignored if {@code null}
* @return A non-{@code null} iterator - which may be empty if no provider or no keys
*/
- static Iterator<KeyPair> iteratorOf(KeyIdentityProvider provider) {
- return GenericUtils.iteratorOf((provider == null) ? null : provider.loadKeys());
+ static Iterator<KeyPair> iteratorOf(SessionContext session, KeyIdentityProvider provider) {
+ return GenericUtils.iteratorOf((provider == null) ? null : provider.loadKeys(session));
}
/**
@@ -94,12 +94,14 @@ public interface KeyIdentityProvider {
* <LI>If both are the same instance then use it.</U>
* <LI>Otherwise, returns a wrapper that groups both providers.</LI>
* </UL>
+ *
* @param identities The registered key pair identities
* @param keys The extra available key pairs
* @return The resolved provider
* @see #multiProvider(KeyIdentityProvider...)
*/
- static KeyIdentityProvider resolveKeyIdentityProvider(KeyIdentityProvider identities, KeyIdentityProvider keys) {
+ static KeyIdentityProvider resolveKeyIdentityProvider(
+ KeyIdentityProvider identities, KeyIdentityProvider keys) {
if ((keys == null) || (identities == keys)) {
return identities;
} else if (identities == null) {
@@ -124,6 +126,8 @@ public interface KeyIdentityProvider {
/**
* Wraps a group of {@link KeyIdentityProvider} into a single one
*
+ * @param session The {@link SessionContext} for invoking this load command - may
+ * be {@code null} if not invoked within a session context (e.g., offline tool or session unknown).
* @param providers The providers - ignored if {@code null}/empty (i.e., returns
* {@link #EMPTY_KEYS_PROVIDER})
* @return The wrapping provider
@@ -143,22 +147,24 @@ public interface KeyIdentityProvider {
/**
* Wraps a group of {@link KeyIdentityProvider} into an {@link Iterable} of {@link KeyPair}s
*
+ * @param session The {@link SessionContext} for invoking this load command - may
+ * be {@code null} if not invoked within a session context (e.g., offline tool or session unknown).
* @param providers The group of providers - ignored if {@code null}/empty (i.e., returns an
* empty iterable instance)
* @return The wrapping iterable
*/
- static Iterable<KeyPair> iterableOf(Collection<? extends KeyIdentityProvider> providers) {
+ static Iterable<KeyPair> iterableOf(SessionContext session, Collection<? extends KeyIdentityProvider> providers) {
int numProviders = GenericUtils.size(providers);
if (numProviders <= 0) {
return Collections.emptyList();
} else if (numProviders == 1) {
KeyIdentityProvider p = GenericUtils.head(providers);
- return p.loadKeys();
+ return p.loadKeys(session);
} else {
return new Iterable<KeyPair>() {
@Override
public Iterator<KeyPair> iterator() {
- return new MultiKeyIdentityIterator(providers);
+ return new MultiKeyIdentityIterator(session, providers);
}
@Override
@@ -188,6 +194,6 @@ public interface KeyIdentityProvider {
* @return The provider wrapper
*/
static KeyIdentityProvider wrapKeyPairs(Iterable<KeyPair> pairs) {
- return (pairs == null) ? EMPTY_KEYS_PROVIDER : () -> pairs;
+ return (pairs == null) ? EMPTY_KEYS_PROVIDER : session -> pairs;
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java
index 68c4daf..6b2224f 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/KeyPairProvider.java
@@ -86,7 +86,7 @@ public interface KeyPairProvider extends KeyIdentityProvider {
}
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
return Collections.emptyList();
}
@@ -108,7 +108,7 @@ public interface KeyPairProvider extends KeyIdentityProvider {
*/
default KeyPair loadKey(SessionContext session, String type) {
ValidateUtils.checkNotNullAndNotEmpty(type, "No key type to load");
- return GenericUtils.stream(loadKeys())
+ return GenericUtils.stream(loadKeys(session))
.filter(key -> type.equals(KeyUtils.getKeyType(key)))
.findFirst()
.orElse(null);
@@ -120,7 +120,7 @@ public interface KeyPairProvider extends KeyIdentityProvider {
* @return The available {@link Iterable} key types in preferred order - never {@code null}
*/
default Iterable<String> getKeyTypes(SessionContext session) {
- return GenericUtils.stream(loadKeys())
+ return GenericUtils.stream(loadKeys(session))
.map(KeyUtils::getKeyType)
.filter(GenericUtils::isNotEmpty)
.collect(Collectors.toSet());
@@ -148,7 +148,7 @@ public interface KeyPairProvider extends KeyIdentityProvider {
static KeyPairProvider wrap(Iterable<KeyPair> pairs) {
return (pairs == null) ? EMPTY_KEYPAIR_PROVIDER : new KeyPairProvider() {
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
return pairs;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java
index d8f2350..ca4fd5e 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MappedKeyPairProvider.java
@@ -62,7 +62,7 @@ public class MappedKeyPairProvider implements KeyPairProvider {
}
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
return pairsMap.values();
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityIterator.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityIterator.java b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityIterator.java
index 5ba5386..9de7c17 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityIterator.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityIterator.java
@@ -23,6 +23,8 @@ import java.security.KeyPair;
import java.util.Iterator;
import java.util.NoSuchElementException;
+import org.apache.sshd.common.session.SessionContext;
+
/**
* Iterates over several {@link KeyIdentityProvider}-s exhausting their
* keys one by one (lazily).
@@ -32,16 +34,22 @@ import java.util.NoSuchElementException;
public class MultiKeyIdentityIterator implements Iterator<KeyPair> {
protected Iterator<KeyPair> currentProvider;
protected boolean finished;
+ private final SessionContext sessionContext;
private final Iterator<? extends KeyIdentityProvider> providers;
- public MultiKeyIdentityIterator(Iterable<? extends KeyIdentityProvider> providers) {
+ public MultiKeyIdentityIterator(SessionContext session, Iterable<? extends KeyIdentityProvider> providers) {
this.providers = (providers == null) ? null : providers.iterator();
+ this.sessionContext = session;
}
public Iterator<? extends KeyIdentityProvider> getProviders() {
return providers;
}
+ public SessionContext getSessionContext() {
+ return sessionContext;
+ }
+
@Override
public boolean hasNext() {
if (finished) {
@@ -58,9 +66,10 @@ public class MultiKeyIdentityIterator implements Iterator<KeyPair> {
return true;
}
+ SessionContext session = getSessionContext();
while (provs.hasNext()) {
KeyIdentityProvider p = provs.next();
- Iterable<KeyPair> keys = (p == null) ? null : p.loadKeys();
+ Iterable<KeyPair> keys = (p == null) ? null : p.loadKeys(session);
currentProvider = (keys == null) ? null : keys.iterator();
if ((currentProvider != null) && currentProvider.hasNext()) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProvider.java b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProvider.java
index 18304ff..97b94a5 100644
--- a/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProvider.java
@@ -23,6 +23,8 @@ import java.security.KeyPair;
import java.util.Collections;
import java.util.Iterator;
+import org.apache.sshd.common.session.SessionContext;
+
/**
* Aggregates several {@link KeyIdentityProvider}-s into a single logical
* one that (lazily) exposes the keys from each aggregated provider
@@ -37,11 +39,11 @@ public class MultiKeyIdentityProvider implements KeyIdentityProvider {
}
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
return new Iterable<KeyPair>() {
@Override
public Iterator<KeyPair> iterator() {
- return (providers == null) ? Collections.emptyIterator() : new MultiKeyIdentityIterator(providers);
+ return (providers == null) ? Collections.emptyIterator() : new MultiKeyIdentityIterator(session, providers);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProvider.java b/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProvider.java
index f43f5c0..d30b4b8 100644
--- a/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProvider.java
@@ -39,6 +39,7 @@ import org.apache.sshd.common.cipher.ECCurves;
import org.apache.sshd.common.config.keys.BuiltinIdentities;
import org.apache.sshd.common.config.keys.KeyUtils;
import org.apache.sshd.common.keyprovider.AbstractKeyPairProvider;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.io.IoUtils;
import org.apache.sshd.common.util.security.SecurityUtils;
@@ -120,20 +121,20 @@ public abstract class AbstractGeneratorHostKeyProvider extends AbstractKeyPairPr
}
@Override // co-variant return
- public synchronized List<KeyPair> loadKeys() {
+ public synchronized List<KeyPair> loadKeys(SessionContext session) {
Path keyPath = getPath();
KeyPair kp;
synchronized (keyPairHolder) {
kp = keyPairHolder.get();
if (kp == null) {
try {
- kp = resolveKeyPair(keyPath);
+ kp = resolveKeyPair(session, keyPath);
if (kp != null) {
keyPairHolder.set(kp);
}
} catch (Throwable t) {
log.warn("loadKeys({}) Failed ({}) to resolve: {}",
- keyPath, t.getClass().getSimpleName(), t.getMessage());
+ keyPath, t.getClass().getSimpleName(), t.getMessage());
if (log.isDebugEnabled()) {
log.debug("loadKeys(" + keyPath + ") resolution failure details", t);
}
@@ -148,12 +149,12 @@ public abstract class AbstractGeneratorHostKeyProvider extends AbstractKeyPairPr
}
}
- protected KeyPair resolveKeyPair(Path keyPath) throws IOException, GeneralSecurityException {
+ protected KeyPair resolveKeyPair(SessionContext session, Path keyPath) throws IOException, GeneralSecurityException {
String alg = getAlgorithm();
KeyPair kp;
if (keyPath != null) {
try {
- kp = loadFromFile(alg, keyPath);
+ kp = loadFromFile(session, alg, keyPath);
if (kp != null) {
return kp;
}
@@ -203,13 +204,13 @@ public abstract class AbstractGeneratorHostKeyProvider extends AbstractKeyPairPr
return kp;
}
- protected KeyPair loadFromFile(String alg, Path keyPath) throws IOException, GeneralSecurityException {
+ protected KeyPair loadFromFile(SessionContext session, String alg, Path keyPath) throws IOException, GeneralSecurityException {
LinkOption[] options = IoUtils.getLinkOptions(true);
if ((!Files.exists(keyPath, options)) || (!Files.isRegularFile(keyPath, options))) {
return null;
}
- KeyPair kp = readKeyPair(keyPath, IoUtils.EMPTY_OPEN_OPTIONS);
+ KeyPair kp = readKeyPair(session, keyPath, IoUtils.EMPTY_OPEN_OPTIONS);
if (kp == null) {
return null;
}
@@ -225,7 +226,7 @@ public abstract class AbstractGeneratorHostKeyProvider extends AbstractKeyPairPr
if (Objects.equals(alg, keyAlgorithm)) {
if (log.isDebugEnabled()) {
log.debug("resolveKeyPair({}) loaded key={}-{}",
- keyPath, KeyUtils.getKeyType(key), KeyUtils.getFingerPrint(key));
+ keyPath, KeyUtils.getKeyType(key), KeyUtils.getFingerPrint(key));
}
return kp;
}
@@ -233,23 +234,26 @@ public abstract class AbstractGeneratorHostKeyProvider extends AbstractKeyPairPr
// Not same algorithm - start again
if (log.isDebugEnabled()) {
log.debug("resolveKeyPair({}) mismatched loaded key algorithm: expected={}, loaded={}",
- keyPath, alg, keyAlgorithm);
+ keyPath, alg, keyAlgorithm);
}
Files.deleteIfExists(keyPath);
return null;
}
- protected KeyPair readKeyPair(Path keyPath, OpenOption... options) throws IOException, GeneralSecurityException {
+ protected KeyPair readKeyPair(SessionContext session, Path keyPath, OpenOption... options)
+ throws IOException, GeneralSecurityException {
try (InputStream inputStream = Files.newInputStream(keyPath, options)) {
- return doReadKeyPair(keyPath.toString(), inputStream);
+ return doReadKeyPair(session, keyPath.toString(), inputStream);
}
}
- protected KeyPair doReadKeyPair(String resourceKey, InputStream inputStream) throws IOException, GeneralSecurityException {
+ protected KeyPair doReadKeyPair(SessionContext session, String resourceKey, InputStream inputStream)
+ throws IOException, GeneralSecurityException {
return SecurityUtils.loadKeyPairIdentity(resourceKey, inputStream, null);
}
- protected void writeKeyPair(KeyPair kp, Path keyPath, OpenOption... options) throws IOException, GeneralSecurityException {
+ protected void writeKeyPair(KeyPair kp, Path keyPath, OpenOption... options)
+ throws IOException, GeneralSecurityException {
if ((!Files.exists(keyPath)) || isOverwriteAllowed()) {
try (OutputStream os = Files.newOutputStream(keyPath, options)) {
doWriteKeyPair(keyPath.toString(), kp, os);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/SimpleGeneratorHostKeyProvider.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/SimpleGeneratorHostKeyProvider.java b/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/SimpleGeneratorHostKeyProvider.java
index 7f2888e..b40edcb 100644
--- a/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/SimpleGeneratorHostKeyProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/server/keyprovider/SimpleGeneratorHostKeyProvider.java
@@ -28,6 +28,8 @@ import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.spec.InvalidKeySpecException;
+import org.apache.sshd.common.session.SessionContext;
+
/**
* TODO Add javadoc
*
@@ -43,7 +45,8 @@ public class SimpleGeneratorHostKeyProvider extends AbstractGeneratorHostKeyProv
}
@Override
- protected KeyPair doReadKeyPair(String resourceKey, InputStream inputStream) throws IOException, GeneralSecurityException {
+ protected KeyPair doReadKeyPair(SessionContext session, String resourceKey, InputStream inputStream)
+ throws IOException, GeneralSecurityException {
try (ObjectInputStream r = new ObjectInputStream(inputStream)) {
try {
return (KeyPair) r.readObject();
@@ -54,7 +57,8 @@ public class SimpleGeneratorHostKeyProvider extends AbstractGeneratorHostKeyProv
}
@Override
- protected void doWriteKeyPair(String resourceKey, KeyPair kp, OutputStream outputStream) throws IOException, GeneralSecurityException {
+ protected void doWriteKeyPair(String resourceKey, KeyPair kp, OutputStream outputStream)
+ throws IOException, GeneralSecurityException {
try (ObjectOutputStream w = new ObjectOutputStream(outputStream)) {
w.writeObject(kp);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcherTest.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcherTest.java b/sshd-common/src/test/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcherTest.java
index 19375ec..4f4b285 100644
--- a/sshd-common/src/test/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcherTest.java
+++ b/sshd-common/src/test/java/org/apache/sshd/client/config/keys/BuiltinClientIdentitiesWatcherTest.java
@@ -145,7 +145,7 @@ public class BuiltinClientIdentitiesWatcherTest extends JUnitTestSupport {
}
private static void testMultipleFilesWatch(String phase, KeyIdentityProvider watcher, Collection<? extends KeyPair> expected) {
- Iterable<KeyPair> keys = watcher.loadKeys();
+ Iterable<KeyPair> keys = watcher.loadKeys(null);
Collection<KeyPair> actual = new ArrayList<>();
for (KeyPair kp : keys) {
actual.add(kp);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcherTest.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcherTest.java b/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcherTest.java
index 144a3b0..690a381 100644
--- a/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcherTest.java
+++ b/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityFileWatcherTest.java
@@ -33,6 +33,7 @@ import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.sshd.common.config.keys.FilePasswordProvider;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.io.IoUtils;
import org.apache.sshd.util.test.CommonTestSupportUtils;
import org.apache.sshd.util.test.JUnitTestSupport;
@@ -78,10 +79,10 @@ public class ClientIdentityFileWatcherTest extends JUnitTestSupport {
AtomicInteger reloadCount = new AtomicInteger(0);
ClientIdentityProvider idProvider = new ClientIdentityFileWatcher(idFile, loader, FilePasswordProvider.EMPTY, false) {
@Override
- protected KeyPair reloadClientIdentity(Path path) throws IOException, GeneralSecurityException {
+ protected KeyPair reloadClientIdentity(SessionContext session, Path path) throws IOException, GeneralSecurityException {
assertEquals("Mismatched client identity path", idFile, path);
reloadCount.incrementAndGet();
- return super.reloadClientIdentity(path);
+ return super.reloadClientIdentity(session, path);
}
};
Files.deleteIfExists(idFile);
@@ -114,7 +115,7 @@ public class ClientIdentityFileWatcherTest extends JUnitTestSupport {
private static void testIdentityReload(
String phase, Number reloadCount, ClientIdentityProvider provider, KeyPair expectedIdentity, int expectedCount)
throws Exception {
- KeyPair actualIdentity = provider.getClientIdentity();
+ KeyPair actualIdentity = provider.getClientIdentity(null);
assertSame(phase + ": mismatched identity", expectedIdentity, actualIdentity);
assertEquals(phase + ": mismatched re-load count", expectedCount, reloadCount.intValue());
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityTest.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityTest.java b/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityTest.java
index bc2f02c..c8acfa5 100644
--- a/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityTest.java
+++ b/sshd-common/src/test/java/org/apache/sshd/client/config/keys/ClientIdentityTest.java
@@ -90,7 +90,7 @@ public class ClientIdentityTest extends JUnitTestSupport {
KeyIdentityProvider provider = IdentityUtils.createKeyPairProvider(ids, true /* supported only */);
assertNotNull("No provider generated", provider);
- Iterable<KeyPair> keys = provider.loadKeys();
+ Iterable<KeyPair> keys = provider.loadKeys(null);
for (KeyPair kp : keys) {
assertTrue("Unexpected loaded key: " + kp, pairs.remove(kp));
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java b/sshd-common/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
index eedbfe7..42b39e1 100644
--- a/sshd-common/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
+++ b/sshd-common/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
@@ -90,7 +90,7 @@ public class KeyRandomArtTest extends JUnitTestSupport {
@AfterClass
public static void dumpAllArts() throws Exception {
- KeyRandomArt.combine(System.out, ' ', () -> KEYS);
+ KeyRandomArt.combine(null, System.out, ' ', session -> KEYS);
}
@Test
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/KeyPairProviderTest.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/KeyPairProviderTest.java b/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/KeyPairProviderTest.java
index afa55cd..6f00621 100644
--- a/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/KeyPairProviderTest.java
+++ b/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/KeyPairProviderTest.java
@@ -48,7 +48,7 @@ public class KeyPairProviderTest extends JUnitTestSupport {
@Test
public void testEmptyKeyProvider() {
KeyPairProvider provider = KeyPairProvider.EMPTY_KEYPAIR_PROVIDER;
- assertTrue("Non empty loaded keys", GenericUtils.isEmpty(provider.loadKeys()));
+ assertTrue("Non empty loaded keys", GenericUtils.isEmpty(provider.loadKeys(null)));
assertTrue("Non empty key type", GenericUtils.isEmpty(provider.getKeyTypes(null)));
for (String keyType : new String[]{null, "", getCurrentTestName()}) {
@@ -69,7 +69,7 @@ public class KeyPairProviderTest extends JUnitTestSupport {
KeyPairProvider provider = MappedKeyPairProvider.MAP_TO_KEY_PAIR_PROVIDER.apply(pairsMap);
assertEquals("Key types", pairsMap.keySet(), provider.getKeyTypes(null));
- assertEquals("Key pairs", pairsMap.values(), provider.loadKeys());
+ assertEquals("Key pairs", pairsMap.values(), provider.loadKeys(null));
pairsMap.forEach((keyType, expected) -> {
KeyPair actual = provider.loadKey(null, keyType);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProviderTest.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProviderTest.java b/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProviderTest.java
index 5a24da2..e5a4329 100644
--- a/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProviderTest.java
+++ b/sshd-common/src/test/java/org/apache/sshd/common/keyprovider/MultiKeyIdentityProviderTest.java
@@ -28,6 +28,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.util.test.JUnitTestSupport;
import org.junit.FixMethodOrder;
import org.junit.Test;
@@ -66,7 +67,7 @@ public class MultiKeyIdentityProviderTest extends JUnitTestSupport {
KeyIdentityProvider multiProvider = KeyIdentityProvider.multiProvider(providers);
assertObjectInstanceOf(MultiKeyIdentityProvider.class.getSimpleName(), MultiKeyIdentityProvider.class, multiProvider);
- Iterable<KeyPair> keys = multiProvider.loadKeys();
+ Iterable<KeyPair> keys = multiProvider.loadKeys(null);
Iterator<KeyPair> iter = keys.iterator();
for (int index = 0, count = expected.size(); index < count; index++) {
KeyPair kpExpected = expected.get(index);
@@ -82,7 +83,7 @@ public class MultiKeyIdentityProviderTest extends JUnitTestSupport {
private static KeyIdentityProvider wrapKeyPairs(AtomicInteger position, Iterable<KeyPair> keys) {
return new KeyIdentityProvider() {
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
return new Iterable<KeyPair>() {
@Override
public Iterator<KeyPair> iterator() {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/org/apache/sshd/common/util/security/SecurityUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/org/apache/sshd/common/util/security/SecurityUtilsTest.java b/sshd-common/src/test/java/org/apache/sshd/common/util/security/SecurityUtilsTest.java
index cdb4967..488d2ce 100644
--- a/sshd-common/src/test/java/org/apache/sshd/common/util/security/SecurityUtilsTest.java
+++ b/sshd-common/src/test/java/org/apache/sshd/common/util/security/SecurityUtilsTest.java
@@ -183,7 +183,7 @@ public class SecurityUtilsTest extends JUnitTestSupport {
String resourceKey, AbstractResourceKeyPairProvider<?> provider,
Class<? extends PublicKey> pubType, Class<? extends PrivateKey> prvType) {
provider.setPasswordFinder(TEST_PASSWORD_PROVIDER);
- Iterable<KeyPair> iterator = provider.loadKeys();
+ Iterable<KeyPair> iterator = provider.loadKeys(null);
List<KeyPair> pairs = new ArrayList<>();
for (KeyPair kp : iterator) {
pairs.add(kp);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProviderTest.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProviderTest.java b/sshd-common/src/test/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProviderTest.java
index 2978a18..66ecb05 100644
--- a/sshd-common/src/test/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProviderTest.java
+++ b/sshd-common/src/test/java/org/apache/sshd/server/keyprovider/AbstractGeneratorHostKeyProviderTest.java
@@ -27,6 +27,7 @@ import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.util.test.JUnitTestSupport;
import org.apache.sshd.util.test.NoIoTestCase;
import org.junit.FixMethodOrder;
@@ -41,20 +42,20 @@ public class AbstractGeneratorHostKeyProviderTest extends JUnitTestSupport {
super();
}
- @SuppressWarnings("synthetic-access")
@Test
+ @SuppressWarnings("synthetic-access")
public void testOverwriteKey() throws Exception {
Path tempDir = assertHierarchyTargetFolderExists(getTempTargetFolder());
Path keyPairFile = tempDir.resolve(getCurrentTestName() + ".key");
Files.deleteIfExists(keyPairFile);
TestProvider provider = new TestProvider(keyPairFile);
- provider.loadKeys();
+ provider.loadKeys(null);
assertEquals("Mismatched generate write count", 1, provider.getWriteCount());
provider = new TestProvider(keyPairFile);
provider.setOverwriteAllowed(false);
- provider.loadKeys();
+ provider.loadKeys(null);
assertEquals("Mismatched load write count", 0, provider.getWriteCount());
}
@@ -67,12 +68,15 @@ public class AbstractGeneratorHostKeyProviderTest extends JUnitTestSupport {
}
@Override
- protected KeyPair doReadKeyPair(String resourceKey, InputStream inputStream) throws IOException, GeneralSecurityException {
+ protected KeyPair doReadKeyPair(
+ SessionContext session, String resourceKey, InputStream inputStream)
+ throws IOException, GeneralSecurityException {
return null;
}
@Override
- protected void doWriteKeyPair(String resourceKey, KeyPair kp, OutputStream outputStream) throws IOException, GeneralSecurityException {
+ protected void doWriteKeyPair(String resourceKey, KeyPair kp, OutputStream outputStream)
+ throws IOException, GeneralSecurityException {
writes.incrementAndGet();
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/org/apache/sshd/util/test/CommonTestSupportUtils.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/org/apache/sshd/util/test/CommonTestSupportUtils.java b/sshd-common/src/test/java/org/apache/sshd/util/test/CommonTestSupportUtils.java
index 6558c07..a1d77ef 100644
--- a/sshd-common/src/test/java/org/apache/sshd/util/test/CommonTestSupportUtils.java
+++ b/sshd-common/src/test/java/org/apache/sshd/util/test/CommonTestSupportUtils.java
@@ -453,7 +453,7 @@ public final class CommonTestSupportUtils {
public static KeyPair getFirstKeyPair(KeyIdentityProvider provider) {
Objects.requireNonNull(provider, "No key pair provider");
- Iterable<? extends KeyPair> pairs = Objects.requireNonNull(provider.loadKeys(), "No loaded keys");
+ Iterable<? extends KeyPair> pairs = Objects.requireNonNull(provider.loadKeys(null), "No loaded keys");
Iterator<? extends KeyPair> iter = Objects.requireNonNull(pairs.iterator(), "No keys iterator");
ValidateUtils.checkTrue(iter.hasNext(), "Empty loaded kyes iterator");
return Objects.requireNonNull(iter.next(), "No key pair in iterator");
@@ -537,7 +537,7 @@ public final class CommonTestSupportUtils {
Objects.requireNonNull(provider, "No provider");
// get the I/O out of the way
- Iterable<KeyPair> keys = Objects.requireNonNull(provider.loadKeys(), "No keys loaded");
+ Iterable<KeyPair> keys = Objects.requireNonNull(provider.loadKeys(null), "No keys loaded");
if (keys instanceof Collection<?>) {
ValidateUtils.checkNotNullAndNotEmpty((Collection<?>) keys, "Empty keys loaded");
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-common/src/test/java/rg/apache/sshd/client/config/keys/LazyClientIdentityIteratorTest.java
----------------------------------------------------------------------
diff --git a/sshd-common/src/test/java/rg/apache/sshd/client/config/keys/LazyClientIdentityIteratorTest.java b/sshd-common/src/test/java/rg/apache/sshd/client/config/keys/LazyClientIdentityIteratorTest.java
index d6137a8..32f2712 100644
--- a/sshd-common/src/test/java/rg/apache/sshd/client/config/keys/LazyClientIdentityIteratorTest.java
+++ b/sshd-common/src/test/java/rg/apache/sshd/client/config/keys/LazyClientIdentityIteratorTest.java
@@ -27,6 +27,7 @@ import java.util.Iterator;
import java.util.List;
import org.apache.sshd.client.config.keys.ClientIdentityProvider;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.util.test.JUnitTestSupport;
import org.junit.FixMethodOrder;
import org.junit.Test;
@@ -56,7 +57,7 @@ public class LazyClientIdentityIteratorTest extends JUnitTestSupport {
Iterable<KeyPair> ids = ClientIdentityProvider.lazyKeysLoader(
providers, p -> {
try {
- return p.getClientIdentity();
+ return p.getClientIdentity(null);
} catch (Exception e) {
throw new RuntimeException("Unexpected " + e.getClass().getSimpleName() + ": " + e.getMessage(), e);
}
@@ -93,7 +94,7 @@ public class LazyClientIdentityIteratorTest extends JUnitTestSupport {
}
@Override
- public KeyPair getClientIdentity() {
+ public KeyPair getClientIdentity(SessionContext session) {
loadCount++;
return getKeyPair();
}
@@ -101,7 +102,7 @@ public class LazyClientIdentityIteratorTest extends JUnitTestSupport {
@Override
public String toString() {
return getClass().getSimpleName()
- + "[" + getClientIdentity() + "]"
+ + "[" + getKeyPair() + "]"
+ ": loadCount=" + getLoadCount();
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java
index 73e34ee..d476464 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/pubkey/UserAuthPublicKeyIterator.java
@@ -95,7 +95,7 @@ public class UserAuthPublicKeyIterator extends AbstractKeyPairIterator<PublicKey
// Lazy load the keys the 1st time the iterator is called
if (keysHolder.get() == null) {
KeyIdentityProvider sessionKeysProvider = ClientSession.providerOf(session);
- keysHolder.set(sessionKeysProvider.loadKeys());
+ keysHolder.set(sessionKeysProvider.loadKeys(session));
}
return new Iterator<KeyPairIdentity>() {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSession.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSession.java
index 63343cb..b6d6235 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSession.java
@@ -381,7 +381,7 @@ public interface ClientSession
return (session == null)
? KeyIdentityProvider.EMPTY_KEYS_PROVIDER
: KeyIdentityProvider.resolveKeyIdentityProvider(
- session.getRegisteredIdentities(), session.getKeyPairProvider());
+ session.getRegisteredIdentities(), session.getKeyPairProvider());
}
/**
@@ -396,7 +396,7 @@ public interface ClientSession
* @see ClientSession#getKeyPairProvider()
*/
static Iterator<KeyPair> keyPairIteratorOf(ClientSession session) {
- return KeyIdentityProvider.iteratorOf(providerOf(session));
+ return KeyIdentityProvider.iteratorOf(session, providerOf(session));
}
/**
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
index ae038ae..d6f6d51 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/session/ServerUserAuthService.java
@@ -437,7 +437,7 @@ public class ServerUserAuthService extends AbstractCloseable implements Service,
if (ServerAuthenticationManager.AUTO_WELCOME_BANNER_VALUE.equalsIgnoreCase(message)) {
try {
- return KeyRandomArt.combine(' ', session.getKeyPairProvider());
+ return KeyRandomArt.combine(session, ' ', session.getKeyPairProvider());
} catch (Exception e) {
if (e instanceof IOException) {
throw (IOException) e;
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java
index 0679fa3..30cb1ff 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/config/hosts/HostConfigEntryResolverTest.java
@@ -43,6 +43,7 @@ import org.apache.sshd.common.io.IoSession;
import org.apache.sshd.common.keyprovider.AbstractKeyPairProvider;
import org.apache.sshd.common.keyprovider.KeyPairProvider;
import org.apache.sshd.common.session.Session;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.net.SshdSocketAddress;
import org.apache.sshd.server.SshServer;
@@ -231,7 +232,7 @@ public class HostConfigEntryResolverTest extends BaseTestSupport {
Collection<KeyPair> clientIdentities = Collections.singletonList(defaultIdentity);
KeyPairProvider provider = new AbstractKeyPairProvider() {
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
return clientIdentities;
}
};
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java b/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java
index 164c2f1..7ae6c96 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/signature/SignatureFactoriesTest.java
@@ -39,6 +39,7 @@ import org.apache.sshd.common.config.keys.impl.DSSPublicKeyEntryDecoder;
import org.apache.sshd.common.config.keys.impl.ECDSAPublicKeyEntryDecoder;
import org.apache.sshd.common.config.keys.impl.RSAPublicKeyDecoder;
import org.apache.sshd.common.keyprovider.KeyPairProvider;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.security.SecurityUtils;
import org.apache.sshd.server.SshServer;
@@ -164,8 +165,8 @@ public class SignatureFactoriesTest extends BaseTestSupport implements OptionalF
}
protected void testKeyPairProvider(
- final String keyName, final int keySize, final PublicKeyEntryDecoder<?, ?> decoder, List<NamedFactory<Signature>> signatures)
- throws Exception {
+ String keyName, int keySize, PublicKeyEntryDecoder<?, ?> decoder, List<NamedFactory<Signature>> signatures)
+ throws Exception {
testKeyPairProvider(keyName, () -> {
try {
KeyPair kp = decoder.generateKeyPair(keySize);
@@ -178,12 +179,12 @@ public class SignatureFactoriesTest extends BaseTestSupport implements OptionalF
}
protected void testKeyPairProvider(
- final String keyName, final Factory<Iterable<KeyPair>> keyPairFactory, List<NamedFactory<Signature>> signatures)
+ String keyName, Factory<Iterable<KeyPair>> keyPairFactory, List<NamedFactory<Signature>> signatures)
throws Exception {
- final Iterable<KeyPair> iter = keyPairFactory.create();
+ Iterable<KeyPair> iter = keyPairFactory.create();
testKeyPairProvider(new KeyPairProvider() {
@Override
- public Iterable<KeyPair> loadKeys() {
+ public Iterable<KeyPair> loadKeys(SessionContext session) {
return iter;
}
}, signatures);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerTest.java b/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerTest.java
index e417aa9..4ae73b6 100644
--- a/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/server/auth/WelcomeBannerTest.java
@@ -98,8 +98,9 @@ public class WelcomeBannerTest extends BaseTestSupport {
@Test // see SSHD-686
public void testAutoGeneratedBanner() throws Exception {
KeyPairProvider keys = sshd.getKeyPairProvider();
- PropertyResolverUtils.updateProperty(sshd, ServerAuthenticationManager.WELCOME_BANNER, ServerAuthenticationManager.AUTO_WELCOME_BANNER_VALUE);
- testBanner(KeyRandomArt.combine(' ', keys));
+ PropertyResolverUtils.updateProperty(sshd,
+ ServerAuthenticationManager.WELCOME_BANNER, ServerAuthenticationManager.AUTO_WELCOME_BANNER_VALUE);
+ testBanner(KeyRandomArt.combine(null, ' ', keys));
}
@Test
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/210f638e/sshd-core/src/test/java/org/apache/sshd/server/config/keys/ServerIdentityTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/server/config/keys/ServerIdentityTest.java b/sshd-core/src/test/java/org/apache/sshd/server/config/keys/ServerIdentityTest.java
index 5e3bb7b..1665dc9 100644
--- a/sshd-core/src/test/java/org/apache/sshd/server/config/keys/ServerIdentityTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/server/config/keys/ServerIdentityTest.java
@@ -92,7 +92,7 @@ public class ServerIdentityTest extends BaseTestSupport {
KeyPairProvider provider = IdentityUtils.createKeyPairProvider(ids, true /* supported only */);
assertNotNull("No provider generated", provider);
- Iterable<KeyPair> keys = provider.loadKeys();
+ Iterable<KeyPair> keys = provider.loadKeys(null);
for (KeyPair kp : keys) {
assertTrue("Unexpected loaded key: " + kp, pairs.remove(kp));
}