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 2021/04/02 06:10:37 UTC
[mina-sshd] 01/03: [SSHD-1116] Provide SessionContext argument to
HostKeyIdentityProvider#loadHostKeys
This is an automated email from the ASF dual-hosted git repository.
lgoldstein pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mina-sshd.git
commit ccaec74addcb3109568907a78661a50c36a3ef2e
Author: Lyor Goldstein <lg...@apache.org>
AuthorDate: Thu Apr 1 20:59:46 2021 +0300
[SSHD-1116] Provide SessionContext argument to HostKeyIdentityProvider#loadHostKeys
---
CHANGES.md | 1 +
.../auth/hostbased/HostKeyIdentityProvider.java | 21 ++++++++++++++++-----
.../client/auth/hostbased/UserAuthHostBased.java | 2 +-
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 4681c75..d2e0fcf 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -28,6 +28,7 @@
* [SSHD-1109](https://issues.apache.org/jira/browse/SSHD-1109) Provide full slf4j logger capabilities to CliLogger + use it in all CLI classes
* [SSHD-1110](https://issues.apache.org/jira/browse/SSHD-1110) Replace `Class#newInstance()` calls with `Class#getDefaultConstructor().newInstance()`
* [SSHD-1111](https://issues.apache.org/jira/browse/SSHD-1111) Fixed SshClientCliSupport compression option detection
+* [SSHD-1116](https://issues.apache.org/jira/browse/SSHD-1116) Provide SessionContext argument to HostKeyIdentityProvider#loadHostKeys
* [SSHD-1125](https://issues.apache.org/jira/browse/SSHD-1125) Added option to require immediate close of channel in command `ExitCallback` invocation
* [SSHD-1127](https://issues.apache.org/jira/browse/SSHD-1127) Consolidated `SftpSubsystem` support implementations into `SftpSubsystemConfigurator`
* [SSHD-1148](https://issues.apache.org/jira/browse/SSHD-1148) Generate a unique thread name for each `SftpSubsystem` instance
diff --git a/sshd-common/src/main/java/org/apache/sshd/client/auth/hostbased/HostKeyIdentityProvider.java b/sshd-common/src/main/java/org/apache/sshd/client/auth/hostbased/HostKeyIdentityProvider.java
index 53b1aca..f08a7b7 100644
--- a/sshd-common/src/main/java/org/apache/sshd/client/auth/hostbased/HostKeyIdentityProvider.java
+++ b/sshd-common/src/main/java/org/apache/sshd/client/auth/hostbased/HostKeyIdentityProvider.java
@@ -19,6 +19,8 @@
package org.apache.sshd.client.auth.hostbased;
+import java.io.IOException;
+import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.cert.X509Certificate;
import java.util.AbstractMap.SimpleImmutableEntry;
@@ -27,6 +29,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import org.apache.sshd.common.session.SessionContext;
import org.apache.sshd.common.util.GenericUtils;
/**
@@ -35,12 +38,20 @@ import org.apache.sshd.common.util.GenericUtils;
@FunctionalInterface
public interface HostKeyIdentityProvider {
/**
- * @return The host keys as a {@link java.util.Map.Entry} of key + certificates (which can be {@code null}/empty)
+ * @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 host keys as a {@link java.util.Map.Entry} of key + certificates (which can
+ * be {@code null}/empty)
+ * @throws IOException If failed to load the keys
+ * @throws GeneralSecurityException If failed to parse the keys
*/
- Iterable<? extends Map.Entry<KeyPair, List<X509Certificate>>> loadHostKeys();
+ Iterable<? extends Map.Entry<KeyPair, List<X509Certificate>>> loadHostKeys(SessionContext session)
+ throws IOException, GeneralSecurityException;
- static Iterator<? extends Map.Entry<KeyPair, List<X509Certificate>>> iteratorOf(HostKeyIdentityProvider provider) {
- return GenericUtils.iteratorOf((provider == null) ? null : provider.loadHostKeys());
+ static Iterator<? extends Map.Entry<KeyPair, List<X509Certificate>>> iteratorOf(
+ SessionContext session, HostKeyIdentityProvider provider)
+ throws IOException, GeneralSecurityException {
+ return GenericUtils.iteratorOf((provider == null) ? null : provider.loadHostKeys(session));
}
static HostKeyIdentityProvider wrap(KeyPair... pairs) {
@@ -48,7 +59,7 @@ public interface HostKeyIdentityProvider {
}
static HostKeyIdentityProvider wrap(Iterable<? extends KeyPair> pairs) {
- return () -> GenericUtils.wrapIterable(pairs,
+ return session -> GenericUtils.wrapIterable(pairs,
kp -> new SimpleImmutableEntry<>(kp, Collections.<X509Certificate> emptyList()));
}
}
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/hostbased/UserAuthHostBased.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/hostbased/UserAuthHostBased.java
index 2e9ded2..4ec21ba 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/auth/hostbased/UserAuthHostBased.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/hostbased/UserAuthHostBased.java
@@ -63,7 +63,7 @@ public class UserAuthHostBased extends AbstractUserAuth implements SignatureFact
@Override
public void init(ClientSession session, String service) throws Exception {
super.init(session, service);
- keys = HostKeyIdentityProvider.iteratorOf(clientHostKeys); // in case multiple calls to the method
+ keys = HostKeyIdentityProvider.iteratorOf(session, clientHostKeys); // in case multiple calls to the method
}
@Override