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/09/06 16:03:19 UTC
[09/51] [abbrv] mina-sshd git commit: [SSHD-842] Split common
utilities code from sshd-core into sshd-common (new artifact)
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/cipher/ECCurvesTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/cipher/ECCurvesTest.java b/sshd-core/src/test/java/org/apache/sshd/common/cipher/ECCurvesTest.java
deleted file mode 100644
index 7df1c64..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/cipher/ECCurvesTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.cipher;
-
-import java.util.EnumSet;
-import java.util.Set;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class ECCurvesTest extends BaseTestSupport {
- public ECCurvesTest() {
- super();
- }
-
- @Test
- public void testFromName() {
- for (ECCurves expected : ECCurves.VALUES) {
- String name = expected.getName();
- for (int index = 0; index < name.length(); index++) {
- ECCurves actual = ECCurves.fromCurveName(name);
- assertSame(name, expected, actual);
- name = shuffleCase(name);
- }
- }
- }
-
- @Test
- public void testAllNamesListed() {
- Set<ECCurves> listed = EnumSet.noneOf(ECCurves.class);
- for (String name : ECCurves.NAMES) {
- ECCurves c = ECCurves.fromCurveName(name);
- assertNotNull("No curve for listed name=" + name, c);
- assertTrue("Duplicated listed name: " + name, listed.add(c));
- }
-
- assertEquals("Mismatched listed vs. values", ECCurves.VALUES, listed);
- }
-
- @Test
- public void testFromKeySize() {
- for (ECCurves expected : ECCurves.VALUES) {
- String name = expected.getName();
- ECCurves actual = ECCurves.fromCurveSize(expected.getKeySize());
- assertSame(name, expected, actual);
- }
- }
-
- @Test
- public void testFromCurveParameters() {
- for (ECCurves expected : ECCurves.VALUES) {
- String name = expected.getName();
- ECCurves actual = ECCurves.fromCurveParameters(expected.getParameters());
- assertSame(name, expected, actual);
- }
- }
-
- @Test
- public void testFromKeyType() {
- for (ECCurves expected : ECCurves.VALUES) {
- String keyType = expected.getKeyType();
- for (int index = 0; index < keyType.length(); index++) {
- ECCurves actual = ECCurves.fromKeyType(keyType);
- assertSame(keyType, expected, actual);
- keyType = shuffleCase(keyType);
- }
- }
- }
-
- @Test
- public void testAllKeyTypesListed() {
- Set<ECCurves> listed = EnumSet.noneOf(ECCurves.class);
- for (String name : ECCurves.KEY_TYPES) {
- ECCurves c = ECCurves.fromKeyType(name);
- assertNotNull("No curve for listed key type=" + name, c);
- assertTrue("Duplicated listed key type: " + name, listed.add(c));
- }
-
- assertEquals("Mismatched listed vs. values", ECCurves.VALUES, listed);
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/compression/BuiltinCompressionsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/compression/BuiltinCompressionsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/compression/BuiltinCompressionsTest.java
deleted file mode 100644
index 0daeb23..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/compression/BuiltinCompressionsTest.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.compression;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
-
-import org.apache.sshd.common.NamedFactory;
-import org.apache.sshd.common.NamedResource;
-import org.apache.sshd.common.compression.BuiltinCompressions.ParseResult;
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-import org.mockito.Mockito;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class BuiltinCompressionsTest extends BaseTestSupport {
- public BuiltinCompressionsTest() {
- super();
- }
-
- @Test
- public void testFromFactoryName() {
- for (BuiltinCompressions expected : BuiltinCompressions.VALUES) {
- String name = expected.getName();
-
- for (int index = 0; index < name.length(); index++) {
- BuiltinCompressions actual = BuiltinCompressions.fromFactoryName(name);
- assertSame(name, expected, actual);
- name = shuffleCase(name);
- }
- }
- }
-
- @Test
- public void testAllConstantsCovered() throws Exception {
- Set<BuiltinCompressions> avail = EnumSet.noneOf(BuiltinCompressions.class);
- Field[] fields = BuiltinCompressions.Constants.class.getFields();
- for (Field f : fields) {
- String name = (String) f.get(null);
- BuiltinCompressions value = BuiltinCompressions.fromFactoryName(name);
- assertNotNull("No match found for " + name, value);
- assertTrue(name + " re-specified", avail.add(value));
- }
-
- assertEquals("Incomplete coverage", BuiltinCompressions.VALUES, avail);
- }
-
- @Test
- public void testParseCompressionsList() {
- List<String> builtin = NamedResource.getNameList(BuiltinCompressions.VALUES);
- List<String> unknown = Arrays.asList(getClass().getPackage().getName(), getClass().getSimpleName(), getCurrentTestName());
- Random rnd = new Random();
- for (int index = 0; index < (builtin.size() + unknown.size()); index++) {
- Collections.shuffle(builtin, rnd);
- Collections.shuffle(unknown, rnd);
-
- List<String> weavedList = new ArrayList<>(builtin.size() + unknown.size());
- for (int bIndex = 0, uIndex = 0; (bIndex < builtin.size()) || (uIndex < unknown.size());) {
- boolean useBuiltin = false;
- if (bIndex < builtin.size()) {
- useBuiltin = uIndex >= unknown.size() || rnd.nextBoolean();
- }
-
- if (useBuiltin) {
- weavedList.add(builtin.get(bIndex));
- bIndex++;
- } else if (uIndex < unknown.size()) {
- weavedList.add(unknown.get(uIndex));
- uIndex++;
- }
- }
-
- String fullList = GenericUtils.join(weavedList, ',');
- ParseResult result = BuiltinCompressions.parseCompressionsList(fullList);
- List<String> parsed = NamedResource.getNameList(result.getParsedFactories());
- List<String> missing = result.getUnsupportedFactories();
-
- // makes sure not only that the contents are the same but also the order
- assertListEquals(fullList + "[parsed]", builtin, parsed);
- assertListEquals(fullList + "[unsupported]", unknown, missing);
- }
- }
-
- @Test
- public void testResolveFactoryOnBuiltinValues() {
- for (NamedFactory<Compression> expected : BuiltinCompressions.VALUES) {
- String name = expected.getName();
- NamedFactory<Compression> actual = BuiltinCompressions.resolveFactory(name);
- assertSame(name, expected, actual);
- }
- }
-
- @Test
- public void testNotAllowedToRegisterBuiltinFactories() {
- for (CompressionFactory expected : BuiltinCompressions.VALUES) {
- try {
- BuiltinCompressions.registerExtension(expected);
- fail("Unexpected success for " + expected.getName());
- } catch (IllegalArgumentException e) {
- // expected - ignored
- }
- }
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testNotAllowedToOverrideRegisteredFactories() {
- CompressionFactory expected = Mockito.mock(CompressionFactory.class);
- Mockito.when(expected.getName()).thenReturn(getCurrentTestName());
-
- String name = expected.getName();
- try {
- for (int index = 1; index <= Byte.SIZE; index++) {
- BuiltinCompressions.registerExtension(expected);
- assertEquals("Unexpected success at attempt #" + index, 1, index);
- }
- } finally {
- BuiltinCompressions.unregisterExtension(name);
- }
- }
-
- @Test
- public void testResolveFactoryOnRegisteredExtension() {
- CompressionFactory expected = Mockito.mock(CompressionFactory.class);
- Mockito.when(expected.getName()).thenReturn(getCurrentTestName());
-
- String name = expected.getName();
- try {
- assertNull("Extension already registered", BuiltinCompressions.resolveFactory(name));
- BuiltinCompressions.registerExtension(expected);
-
- NamedFactory<Compression> actual = BuiltinCompressions.resolveFactory(name);
- assertSame("Mismatched resolved instance", expected, actual);
- } finally {
- NamedFactory<Compression> actual = BuiltinCompressions.unregisterExtension(name);
- assertSame("Mismatched unregistered instance", expected, actual);
- assertNull("Extension not un-registered", BuiltinCompressions.resolveFactory(name));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java b/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java
index a8132fb..b18c273 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/compression/CompressionTest.java
@@ -33,10 +33,11 @@ import org.apache.sshd.common.session.Session;
import org.apache.sshd.common.session.SessionListener;
import org.apache.sshd.server.SshServer;
import org.apache.sshd.util.test.BaseTestSupport;
+import org.apache.sshd.util.test.CommonTestSupportUtils;
+import org.apache.sshd.util.test.CoreTestSupportUtils;
import org.apache.sshd.util.test.JSchLogger;
import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
import org.apache.sshd.util.test.SimpleUserInfo;
-import org.apache.sshd.util.test.Utils;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assume;
@@ -96,8 +97,8 @@ public class CompressionTest extends BaseTestSupport {
public static void setupClientAndServer() throws Exception {
JSchLogger.init();
- sshd = Utils.setupTestServer(MacTest.class);
- sshd.setKeyPairProvider(Utils.createTestHostKeyProvider(MacTest.class));
+ sshd = CoreTestSupportUtils.setupTestServer(MacTest.class);
+ sshd.setKeyPairProvider(CommonTestSupportUtils.createTestHostKeyProvider(MacTest.class));
sshd.start();
port = sshd.getPort();
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/SshConfigFileReaderTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/SshConfigFileReaderTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/SshConfigFileReaderTest.java
index f9de9b1..94ce291 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/SshConfigFileReaderTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/config/SshConfigFileReaderTest.java
@@ -71,7 +71,7 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
URL url = getClass().getResource("sshd_config");
assertNotNull("Cannot locate test file", url);
- Properties props = SshConfigFileReader.readConfigFile(url);
+ Properties props = ConfigFileReaderSupport.readConfigFile(url);
assertFalse("No properties read", props.isEmpty());
assertTrue("Unexpected commented property data", GenericUtils.isEmpty(props.getProperty("ListenAddress")));
assertTrue("Unexpected non-existing property data", GenericUtils.isEmpty(props.getProperty(getCurrentTestName())));
@@ -86,55 +86,55 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
@Test
public void testParseCiphersList() {
List<? extends NamedResource> expected = BaseBuilder.DEFAULT_CIPHERS_PREFERENCE;
- Properties props = initNamedResourceProperties(SshConfigFileReader.CIPHERS_CONFIG_PROP, expected);
+ Properties props = initNamedResourceProperties(ConfigFileReaderSupport.CIPHERS_CONFIG_PROP, expected);
BuiltinCiphers.ParseResult result = SshConfigFileReader.getCiphers(PropertyResolverUtils.toPropertyResolver(props));
testParsedFactoriesList(expected, result.getParsedFactories(), result.getUnsupportedFactories());
}
@Test
public void testKnownDefaultCipherFactoriesList() {
- testKnownDefaultFactoriesList(SshConfigFileReader.DEFAULT_CIPHERS, BuiltinCiphers::fromFactoryName,
+ testKnownDefaultFactoriesList(ConfigFileReaderSupport.DEFAULT_CIPHERS, BuiltinCiphers::fromFactoryName,
GenericUtils.asSortedSet(String.CASE_INSENSITIVE_ORDER, "cast128-cbc", "arcfour"));
}
@Test
public void testParseMacsList() {
List<? extends NamedResource> expected = BaseBuilder.DEFAULT_MAC_PREFERENCE;
- Properties props = initNamedResourceProperties(SshConfigFileReader.MACS_CONFIG_PROP, expected);
+ Properties props = initNamedResourceProperties(ConfigFileReaderSupport.MACS_CONFIG_PROP, expected);
BuiltinMacs.ParseResult result = SshConfigFileReader.getMacs(PropertyResolverUtils.toPropertyResolver(props));
testParsedFactoriesList(expected, result.getParsedFactories(), result.getUnsupportedFactories());
}
@Test
public void testKnownDefaultMacFactoriesList() {
- testKnownDefaultFactoriesList(SshConfigFileReader.DEFAULT_MACS, BuiltinMacs::fromFactoryName,
+ testKnownDefaultFactoriesList(ConfigFileReaderSupport.DEFAULT_MACS, BuiltinMacs::fromFactoryName,
GenericUtils.asSortedSet(String.CASE_INSENSITIVE_ORDER, "umac-64@openssh.com", "hmac-ripemd160", "hmac-sha2-256-96", "hmac-sha2-512-96"));
}
@Test
public void testParseSignaturesList() {
List<? extends NamedResource> expected = BaseBuilder.DEFAULT_SIGNATURE_PREFERENCE;
- Properties props = initNamedResourceProperties(SshConfigFileReader.HOST_KEY_ALGORITHMS_CONFIG_PROP, expected);
+ Properties props = initNamedResourceProperties(ConfigFileReaderSupport.HOST_KEY_ALGORITHMS_CONFIG_PROP, expected);
BuiltinSignatures.ParseResult result = SshConfigFileReader.getSignatures(PropertyResolverUtils.toPropertyResolver(props));
testParsedFactoriesList(expected, result.getParsedFactories(), result.getUnsupportedFactories());
}
@Test
public void testKnownDefaultSignatureFactoriesList() {
- testKnownDefaultFactoriesList(SshConfigFileReader.DEFAULT_HOST_KEY_ALGORITHMS, BuiltinSignatures::fromFactoryName);
+ testKnownDefaultFactoriesList(ConfigFileReaderSupport.DEFAULT_HOST_KEY_ALGORITHMS, BuiltinSignatures::fromFactoryName);
}
@Test
public void testParseKexFactoriesList() {
List<? extends NamedResource> expected = BaseBuilder.DEFAULT_KEX_PREFERENCE;
- Properties props = initNamedResourceProperties(SshConfigFileReader.KEX_ALGORITHMS_CONFIG_PROP, expected);
+ Properties props = initNamedResourceProperties(ConfigFileReaderSupport.KEX_ALGORITHMS_CONFIG_PROP, expected);
BuiltinDHFactories.ParseResult result = SshConfigFileReader.getKexFactories(PropertyResolverUtils.toPropertyResolver(props));
testParsedFactoriesList(expected, result.getParsedFactories(), result.getUnsupportedFactories());
}
@Test
public void testKnownDefaultKexFactoriesList() {
- testKnownDefaultFactoriesList(SshConfigFileReader.DEFAULT_KEX_ALGORITHMS, BuiltinDHFactories::fromFactoryName);
+ testKnownDefaultFactoriesList(ConfigFileReaderSupport.DEFAULT_KEX_ALGORITHMS, BuiltinDHFactories::fromFactoryName);
}
private static void testKnownDefaultFactoriesList(String factories, Function<? super String, ? extends NamedResource> resolver) {
@@ -159,7 +159,7 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
public void testGetCompression() {
Properties props = new Properties();
for (CompressionConfigValue expected : CompressionConfigValue.VALUES) {
- props.setProperty(SshConfigFileReader.COMPRESSION_PROP, expected.name().toLowerCase());
+ props.setProperty(ConfigFileReaderSupport.COMPRESSION_PROP, expected.name().toLowerCase());
NamedResource actual = SshConfigFileReader.getCompression(PropertyResolverUtils.toPropertyResolver(props));
assertNotNull("No match for " + expected.name(), actual);
@@ -177,7 +177,8 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
}
};
// must be lenient since we do not cover the full default spectrum
- AbstractFactoryManager actual = SshConfigFileReader.configure(expected, PropertyResolverUtils.toPropertyResolver(props), true, true);
+ AbstractFactoryManager actual = SshConfigFileReader.configure(
+ expected, PropertyResolverUtils.toPropertyResolver(props), true, true);
assertSame("Mismatched configured result", expected, actual);
validateAbstractFactoryManagerConfiguration(expected, props, true);
}
@@ -237,7 +238,7 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
public void testInvalidDelimiter() throws IOException {
String line = getClass().getSimpleName() + "+" + getCurrentTestName();
try (Reader rdr = new StringReader(line)) {
- Properties props = SshConfigFileReader.readConfigFile(rdr, true);
+ Properties props = ConfigFileReaderSupport.readConfigFile(rdr, true);
fail("Unexpected success: " + props);
}
}
@@ -248,7 +249,7 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
String expected = getCurrentTestName();
Properties props;
try (Reader rdr = new StringReader(name + "\t" + expected)) {
- props = SshConfigFileReader.readConfigFile(rdr, true);
+ props = ConfigFileReaderSupport.readConfigFile(rdr, true);
}
String actual = props.getProperty(name);
@@ -285,7 +286,8 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
}
private static <M extends FactoryManager> M validateFactoryManagerCiphers(M manager, Properties props) {
- return validateFactoryManagerCiphers(manager, props.getProperty(SshConfigFileReader.CIPHERS_CONFIG_PROP, SshConfigFileReader.DEFAULT_CIPHERS));
+ return validateFactoryManagerCiphers(manager,
+ props.getProperty(ConfigFileReaderSupport.CIPHERS_CONFIG_PROP, ConfigFileReaderSupport.DEFAULT_CIPHERS));
}
private static <M extends FactoryManager> M validateFactoryManagerCiphers(M manager, String value) {
@@ -295,7 +297,8 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
}
private static <M extends FactoryManager> M validateFactoryManagerSignatures(M manager, Properties props) {
- return validateFactoryManagerSignatures(manager, props.getProperty(SshConfigFileReader.HOST_KEY_ALGORITHMS_CONFIG_PROP, SshConfigFileReader.DEFAULT_HOST_KEY_ALGORITHMS));
+ return validateFactoryManagerSignatures(manager,
+ props.getProperty(ConfigFileReaderSupport.HOST_KEY_ALGORITHMS_CONFIG_PROP, ConfigFileReaderSupport.DEFAULT_HOST_KEY_ALGORITHMS));
}
private static <M extends FactoryManager> M validateFactoryManagerSignatures(M manager, String value) {
@@ -305,7 +308,8 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
}
private static <M extends FactoryManager> M validateFactoryManagerMacs(M manager, Properties props) {
- return validateFactoryManagerMacs(manager, props.getProperty(SshConfigFileReader.MACS_CONFIG_PROP, SshConfigFileReader.DEFAULT_MACS));
+ return validateFactoryManagerMacs(manager,
+ props.getProperty(ConfigFileReaderSupport.MACS_CONFIG_PROP, ConfigFileReaderSupport.DEFAULT_MACS));
}
private static <M extends FactoryManager> M validateFactoryManagerMacs(M manager, String value) {
@@ -315,7 +319,8 @@ public class SshConfigFileReaderTest extends BaseTestSupport {
}
private static <M extends FactoryManager> M validateFactoryManagerCompressions(M manager, Properties props, boolean lenient) {
- return validateFactoryManagerCompressions(manager, props.getProperty(SshConfigFileReader.COMPRESSION_PROP, SshConfigFileReader.DEFAULT_COMPRESSION), lenient);
+ return validateFactoryManagerCompressions(manager,
+ props.getProperty(ConfigFileReaderSupport.COMPRESSION_PROP, ConfigFileReaderSupport.DEFAULT_COMPRESSION), lenient);
}
private static <M extends FactoryManager> M validateFactoryManagerCompressions(M manager, String value, boolean lenient) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/TimeValueConfigTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/TimeValueConfigTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/TimeValueConfigTest.java
deleted file mode 100644
index e9acf4d..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/TimeValueConfigTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.config;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class TimeValueConfigTest extends BaseTestSupport {
- public TimeValueConfigTest() {
- super();
- }
-
- @Test
- public void testDurationOf() {
- Object[] values = {
- "600", TimeUnit.SECONDS.toMillis(600L),
- "10m", TimeUnit.MINUTES.toMillis(10L),
- "1h30m", TimeUnit.MINUTES.toMillis(90L),
- "2d", TimeUnit.DAYS.toMillis(2L),
- "3w", TimeUnit.DAYS.toMillis(3L * 7L)
- };
- for (int index = 0; index < values.length; index += 2) {
- String s = (String) values[index];
- Number expected = (Number) values[index + 1];
- long actual = TimeValueConfig.durationOf(s);
- assertEquals(s, expected.longValue(), actual);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntryLoginOptionsParseTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntryLoginOptionsParseTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntryLoginOptionsParseTest.java
deleted file mode 100644
index 5588622..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntryLoginOptionsParseTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.sshd.common.config.keys;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.junit.runners.Parameterized.UseParametersRunnerFactory;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
-@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
-public class AuthorizedKeyEntryLoginOptionsParseTest extends BaseTestSupport {
- private final String value;
- private final String loginPart;
- private final String keyPart;
- private final Map<String, String> options;
-
- public AuthorizedKeyEntryLoginOptionsParseTest(String value, String loginPart, String keyPart, Map<String, String> options) {
- this.value = value;
- this.loginPart = loginPart;
- this.keyPart = keyPart;
- this.options = options;
- }
-
- @Parameters(name = "{0}")
- public static List<Object[]> parameters() {
- List<Object[]> params = new ArrayList<>();
- addData(params, "ssh-rsa AAAAB2...19Q==", "john@example.net", "from=\"*.sales.example.net,!pc.sales.example.net\"");
- addData(params, "ssh-dss AAAAC3...51R==", "example.net", "command=\"dump /home\"", "no-pty", "no-port-forwarding");
- addData(params, "ssh-dss AAAAB5...21S==", "", "permitopen=\"192.0.2.1:80\"", "permitopen=\"192.0.2.2:25\"");
- addData(params, "ssh-rsa AAAA...==", "jane@example.net", "tunnel=\"0\"", "command=\"sh /etc/netstart tun0\"");
- addData(params, "ssh-rsa AAAA1C8...32Tv==", "user@example.net", "!restrict", "command=\"uptime\"");
- addData(params, "ssh-rsa AAAA1f8...IrrC5==", "user@example.net", "restrict", "!pty", "command=\"nethack\"");
- return params;
- }
-
- private static void addData(List<Object[]> params, String keyData, String comment, String... comps) {
- StringBuilder sb = new StringBuilder();
-
- Map<String, String> optionsMap = new HashMap<>();
- for (String c : comps) {
- if (sb.length() > 0) {
- sb.append(',');
- }
- sb.append(c);
-
- int pos = c.indexOf('=');
- if (pos > 0) {
- String name = c.substring(0, pos);
- String value = GenericUtils.stripQuotes(c.substring(pos + 1)).toString();
- String prev = optionsMap.put(name, value);
- if (prev != null) {
- optionsMap.put(name, prev + "," + value);
- }
- } else {
- optionsMap.put(c, Boolean.toString(c.charAt(0) != AuthorizedKeyEntry.BOOLEAN_OPTION_NEGATION_INDICATOR));
- }
- }
-
- int pos = sb.length();
-
- sb.append(' ').append(keyData);
- if (GenericUtils.isNotEmpty(comment)) {
- sb.append(' ').append(comment);
- }
-
- String value = sb.toString();
- params.add(new Object[] {value, value.substring(0, pos), value.substring(pos + 1), optionsMap});
- }
-
- @Test
- public void testResolveEntryComponents() {
- Map.Entry<String, String> actual = AuthorizedKeyEntry.resolveEntryComponents(value);
- assertNotNull(value, actual);
- assertEquals("login(" + value + ")", loginPart, actual.getKey());
- assertEquals("remainder(" + value + ")", keyPart, actual.getValue());
- }
-
- @Test
- public void testParseLoginOptions() {
- Map<String, String> parsed = AuthorizedKeyEntry.parseLoginOptions(loginPart);
- options.forEach((key, expected) -> {
- String actual = parsed.get(key);
- assertEquals(key, expected, actual);
- });
- assertEquals("Mismatched size", options.size(), parsed.size());
- }
-
- @Override
- public String toString() {
- return getClass().getSimpleName() + "[" + value + "]";
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntryTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntryTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntryTest.java
index d28e3df..2b0dec4 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntryTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/AuthorizedKeyEntryTest.java
@@ -123,8 +123,10 @@ public class AuthorizedKeyEntryTest extends AuthorizedKeysTestSupport {
}
private PublickeyAuthenticator testAuthorizedKeysAuth(Collection<AuthorizedKeyEntry> entries) throws Exception {
- Collection<PublicKey> keySet = AuthorizedKeyEntry.resolveAuthorizedKeys(PublicKeyEntryResolver.FAILING, entries);
- PublickeyAuthenticator auth = AuthorizedKeyEntry.fromAuthorizedEntries(PublicKeyEntryResolver.FAILING, entries);
+ Collection<PublicKey> keySet =
+ AuthorizedKeyEntry.resolveAuthorizedKeys(PublicKeyEntryResolver.FAILING, entries);
+ PublickeyAuthenticator auth =
+ PublickeyAuthenticator.fromAuthorizedEntries(PublicKeyEntryResolver.FAILING, entries);
for (PublicKey key : keySet) {
assertTrue("Failed to authenticate with key=" + key.getAlgorithm(), auth.authenticate(getCurrentTestName(), key, null));
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/BuiltinIdentitiesTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/BuiltinIdentitiesTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/BuiltinIdentitiesTest.java
deleted file mode 100644
index acc349a..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/BuiltinIdentitiesTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.config.keys;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.security.GeneralSecurityException;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.util.List;
-
-import org.apache.sshd.common.util.security.SecurityUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.Assume;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.junit.runners.Parameterized.UseParametersRunnerFactory;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
-@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
-@Category({ NoIoTestCase.class })
-public class BuiltinIdentitiesTest extends BaseTestSupport {
- private final BuiltinIdentities expected;
-
- public BuiltinIdentitiesTest(BuiltinIdentities expected) {
- this.expected = expected;
- }
-
- @Parameters(name = "{0}")
- public static List<Object[]> parameters() {
- return parameterize(BuiltinIdentities.VALUES);
- }
-
- @BeforeClass // Dirty hack around the parameterized run
- public static void testAllConstantsCovered() throws Exception {
- Field[] fields = BuiltinIdentities.Constants.class.getFields();
- for (Field f : fields) {
- int mods = f.getModifiers();
- if (!Modifier.isStatic(mods)) {
- continue;
- }
-
- if (!Modifier.isFinal(mods)) {
- continue;
- }
-
- Class<?> type = f.getType();
- if (!String.class.isAssignableFrom(type)) {
- continue;
- }
-
- String name = f.getName();
- String value = (String) f.get(null);
- BuiltinIdentities id = BuiltinIdentities.fromName(value);
- assertNotNull("No match found for field " + name + "=" + value, id);
- }
- }
-
- @Test
- public void testFromName() {
- String name = expected.getName();
- for (int index = 0, count = name.length(); index < count; index++) {
- assertSame(name, expected, BuiltinIdentities.fromName(name));
- name = shuffleCase(name);
- }
- }
-
- @Test
- public void testFromAlgorithm() {
- String algorithm = expected.getAlgorithm();
- for (int index = 0, count = algorithm.length(); index < count; index++) {
- assertSame(algorithm, expected, BuiltinIdentities.fromAlgorithm(algorithm));
- algorithm = shuffleCase(algorithm);
- }
- }
-
- @Test
- public void testFromKey() throws GeneralSecurityException {
- Assume.assumeTrue("Unsupported built-in identity", expected.isSupported());
- KeyPairGenerator gen = SecurityUtils.getKeyPairGenerator(expected.getAlgorithm());
- KeyPair kp = gen.generateKeyPair();
- outputDebugMessage("Checking built-in identity: %s", expected);
- assertSame(expected + "[pair]", expected, BuiltinIdentities.fromKeyPair(kp));
- assertSame(expected + "[public]", expected, BuiltinIdentities.fromKey(kp.getPublic()));
- assertSame(expected + "[private]", expected, BuiltinIdentities.fromKey(kp.getPrivate()));
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
deleted file mode 100644
index 4c74ef5..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyRandomArtTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.config.keys;
-
-import java.security.KeyPair;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.sshd.common.cipher.ECCurves;
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.common.util.security.SecurityUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.apache.sshd.util.test.Utils;
-import org.junit.AfterClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.junit.runners.Parameterized.UseParametersRunnerFactory;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
-@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
-@Category({ NoIoTestCase.class })
-public class KeyRandomArtTest extends BaseTestSupport {
- private static final Collection<KeyPair> KEYS = new LinkedList<>();
-
- private final String algorithm;
- private final int keySize;
- private final KeyPair keyPair;
-
- public KeyRandomArtTest(String algorithm, int keySize) throws Exception {
- this.algorithm = algorithm;
- this.keySize = keySize;
- this.keyPair = Utils.generateKeyPair(algorithm, keySize);
- KEYS.add(this.keyPair);
- }
-
- @Parameters(name = "algorithm={0}, key-size={1}")
- public static List<Object[]> parameters() {
- List<Object[]> params = new ArrayList<>();
- for (int keySize : RSA_SIZES) {
- params.add(new Object[]{KeyUtils.RSA_ALGORITHM, keySize});
- }
-
- for (int keySize : DSS_SIZES) {
- params.add(new Object[]{KeyUtils.DSS_ALGORITHM, keySize});
- }
-
- if (SecurityUtils.isECCSupported()) {
- for (ECCurves curve : ECCurves.VALUES) {
- params.add(new Object[]{KeyUtils.EC_ALGORITHM, curve.getKeySize()});
- }
- }
-
- if (SecurityUtils.isEDDSACurveSupported()) {
- for (int keySize : ED25519_SIZES) {
- params.add(new Object[]{SecurityUtils.EDDSA, keySize});
- }
- }
- return params;
- }
-
- @AfterClass
- public static void dumpAllArts() throws Exception {
- KeyRandomArt.combine(System.out, ' ', () -> KEYS);
- }
-
- @Test
- public void testRandomArtString() throws Exception {
- KeyRandomArt art = new KeyRandomArt(keyPair.getPublic());
- assertEquals("Mismatched algorithm", algorithm, art.getAlgorithm());
- assertEquals("Mismatched key size", keySize, art.getKeySize());
-
- String s = art.toString();
- String[] lines = GenericUtils.split(s, '\n');
- assertEquals("Mismatched lines count", KeyRandomArt.FLDSIZE_Y + 2, lines.length);
-
- for (int index = 0; index < lines.length; index++) {
- String l = lines[index];
- if ((l.length() > 0) && (l.charAt(l.length() - 1) == '\r')) {
- l = l.substring(0, l.length() - 1);
- lines[index] = l;
- }
- System.out.append('\t').println(l);
-
- assertTrue("Mismatched line length #" + (index + 1) + ": " + l.length(), l.length() >= (KeyRandomArt.FLDSIZE_X + 2));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsCloneTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsCloneTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsCloneTest.java
deleted file mode 100644
index cb23591..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsCloneTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.config.keys;
-
-import java.security.GeneralSecurityException;
-import java.security.KeyPair;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.sshd.common.cipher.ECCurves;
-import org.apache.sshd.common.keyprovider.KeyPairProvider;
-import org.apache.sshd.common.util.ValidateUtils;
-import org.apache.sshd.common.util.security.SecurityUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.junit.runners.Parameterized.UseParametersRunnerFactory;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
-@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
-@Category({ NoIoTestCase.class })
-public class KeyUtilsCloneTest extends BaseTestSupport {
- private final String keyType;
- private final int keySize;
-
- public KeyUtilsCloneTest(String keyType, int keySize) {
- this.keyType = ValidateUtils.checkNotNullAndNotEmpty(keyType, "No key type specified");
- this.keySize = keySize;
- }
-
- @Parameters(name = "type={0}, size={1}")
- public static List<Object[]> parameters() {
- List<Object[]> list = new ArrayList<>();
- addTests(list, KeyPairProvider.SSH_DSS, DSS_SIZES);
- addTests(list, KeyPairProvider.SSH_RSA, RSA_SIZES);
- if (SecurityUtils.isECCSupported()) {
- for (ECCurves curve : ECCurves.VALUES) {
- if (!curve.isSupported()) {
- continue;
- }
- addTests(list, curve.getKeyType(), Collections.singletonList(curve.getKeySize()));
- }
- }
- if (SecurityUtils.isEDDSACurveSupported()) {
- addTests(list, KeyPairProvider.SSH_ED25519, ED25519_SIZES);
- }
- return Collections.unmodifiableList(list);
- }
-
- private static void addTests(List<Object[]> list, String keyType, Collection<Integer> sizes) {
- for (Integer keySize : sizes) {
- list.add(new Object[]{keyType, keySize});
- }
- }
-
- @Test
- @SuppressWarnings("checkstyle:avoidnestedblocks")
- public void testKeyPairCloning() throws GeneralSecurityException {
- outputDebugMessage("generateKeyPair(%s)[%d]", keyType, keySize);
- KeyPair original = KeyUtils.generateKeyPair(keyType, keySize);
-
- outputDebugMessage("cloneKeyPair(%s)[%d]", keyType, keySize);
- KeyPair cloned = KeyUtils.cloneKeyPair(keyType, original);
-
- String prefix = keyType + "[" + keySize + "]";
- assertNotSame(prefix + ": Key pair not cloned", original, cloned);
- assertTrue(prefix + ": Cloned pair not equals", KeyUtils.compareKeyPairs(original, cloned));
-
- {
- PublicKey k1 = original.getPublic();
- PublicKey k2 = cloned.getPublic();
- assertNotSame(prefix + ": Public key not cloned", k1, k2);
- assertTrue(prefix + ": Cloned public key not equals", KeyUtils.compareKeys(k1, k2));
-
- String f1 = KeyUtils.getFingerPrint(k1);
- String f2 = KeyUtils.getFingerPrint(k2);
- assertEquals(prefix + ": Mismatched fingerprints", f1, f2);
- }
-
- {
- PrivateKey k1 = original.getPrivate();
- PrivateKey k2 = cloned.getPrivate();
- assertNotSame(prefix + ": Private key not cloned", k1, k2);
- assertTrue(prefix + ": Cloned private key not equals", KeyUtils.compareKeys(k1, k2));
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintCaseSensitivityTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintCaseSensitivityTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintCaseSensitivityTest.java
deleted file mode 100644
index c9457fa..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintCaseSensitivityTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.config.keys;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.security.PublicKey;
-import java.util.AbstractMap.SimpleImmutableEntry;
-import java.util.Arrays;
-import java.util.Collection;
-
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.junit.runners.Parameterized.UseParametersRunnerFactory;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
-@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
-@Category({ NoIoTestCase.class })
-public class KeyUtilsFingerprintCaseSensitivityTest extends BaseTestSupport {
-
- // CHECKSTYLE:OFF
- private static final String KEY_STRING = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxr3N5fkt966xJINl0hH7Q6lLDRR1D0yMjcXCE5roE9VFut2ctGFuo90TCOxkPOMnwzwConeyScVF4ConZeWsxbG9VtRh61IeZ6R5P5ZTvE9xPdZBgIEWvU1bRfrrOfSMihqF98pODspE6NoTtND2eglwSGwxcYFmpdTAmu+8qgxgGxlEaaCjqwdiNPZhygrH81Mv2ruolNeZkn4Bj+wFFmZTD/waN1pQaMf+SO1+kEYIYFNl5+8JRGuUcr8MhHHJB+gwqMTF2BSBVITJzZUiQR0TMtkK6Vbs7yt1F9hhzDzAFDwhV+rsfNQaOHpl3zP07qH+/99A0XG1CVcEdHqVMw== lgoldstein@LGOLDSTEIN-WIN7";
- // CHECKSTYLE:ON
- private static final String MD5_PREFIX = "MD5:";
- private static final String MD5 = "24:32:3c:80:01:b3:e1:fa:7c:53:ca:e3:e8:4e:c6:8e";
- private static final String MD5_FULL = MD5_PREFIX + MD5;
- private static final String SHA1_PREFIX = "SHA1:";
- private static final String SHA1 = "ZNLzC6u+F37oq8BpEAwP69EQtoA";
- private static final String SHA1_FULL = SHA1_PREFIX + SHA1;
-
- private static PublicKey key;
-
- private String expected;
- private String test;
-
- public KeyUtilsFingerprintCaseSensitivityTest(String expected, String test) {
- this.expected = expected;
- this.test = test;
- }
-
- @BeforeClass
- public static void beforeClass() throws GeneralSecurityException, IOException {
- key = PublicKeyEntry.parsePublicKeyEntry(KEY_STRING).resolvePublicKey(PublicKeyEntryResolver.FAILING);
- }
-
- @Parameters(name = "expected={0}, test={1}")
- public static Collection<Object[]> parameters() {
- return Arrays.asList(
- new Object[] {MD5_FULL, MD5_FULL},
- new Object[] {MD5_FULL, MD5_FULL.toUpperCase()},
- new Object[] {MD5_FULL, MD5_FULL.toLowerCase()},
- new Object[] {MD5_FULL, MD5_PREFIX.toUpperCase() + MD5},
- new Object[] {MD5_FULL, MD5_PREFIX.toLowerCase() + MD5},
- new Object[] {MD5_FULL, MD5.toLowerCase()},
- new Object[] {MD5_FULL, MD5.toUpperCase()},
- new Object[] {SHA1_FULL, SHA1_FULL},
- new Object[] {SHA1_FULL, SHA1_PREFIX.toUpperCase() + SHA1},
- new Object[] {SHA1_FULL, SHA1_PREFIX.toLowerCase() + SHA1}
- );
- }
-
- @Test
- public void testCase() throws Exception {
- assertEquals("Check failed", new SimpleImmutableEntry<>(true, expected), KeyUtils.checkFingerPrint(test, key));
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintGenerationTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintGenerationTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintGenerationTest.java
deleted file mode 100644
index e78eaeb..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsFingerprintGenerationTest.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.config.keys;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.security.PublicKey;
-import java.security.spec.InvalidKeySpecException;
-import java.util.AbstractMap.SimpleImmutableEntry;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.sshd.common.digest.BuiltinDigests;
-import org.apache.sshd.common.digest.DigestFactory;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.junit.runners.Parameterized.UseParametersRunnerFactory;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
-@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
-@Category({ NoIoTestCase.class })
-public class KeyUtilsFingerprintGenerationTest extends BaseTestSupport {
- private final PublicKey key;
- private final DigestFactory digestFactory;
- private final String expected;
-
- public KeyUtilsFingerprintGenerationTest(PublicKey key, DigestFactory digestFactory, String expected) {
- this.key = key;
- this.digestFactory = digestFactory;
- this.expected = expected;
- }
-
- @Parameters(name = "key={0}, digestFactory={1}, expected={2}")
- public static Collection<Object[]> parameters() throws IOException, GeneralSecurityException {
- List<? extends Map.Entry<String, List<? extends Map.Entry<DigestFactory, String>>>> keyEntries =
- Collections.unmodifiableList(Arrays.asList(
- new SimpleImmutableEntry<>(
- // CHECKSTYLE:OFF
- "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxr3N5fkt966xJINl0hH7Q6lLDRR1D0yMjcXCE5roE9VFut2ctGFuo90TCOxkPOMnwzwConeyScVF4ConZeWsxbG9VtRh61IeZ6R5P5ZTvE9xPdZBgIEWvU1bRfrrOfSMihqF98pODspE6NoTtND2eglwSGwxcYFmpdTAmu+8qgxgGxlEaaCjqwdiNPZhygrH81Mv2ruolNeZkn4Bj+wFFmZTD/waN1pQaMf+SO1+kEYIYFNl5+8JRGuUcr8MhHHJB+gwqMTF2BSBVITJzZUiQR0TMtkK6Vbs7yt1F9hhzDzAFDwhV+rsfNQaOHpl3zP07qH+/99A0XG1CVcEdHqVMw== lgoldstein@LGOLDSTEIN-WIN7",
- // CHECKSTYLE:ON
- Arrays.asList(
- new SimpleImmutableEntry<>(
- BuiltinDigests.md5,
- "MD5:24:32:3c:80:01:b3:e1:fa:7c:53:ca:e3:e8:4e:c6:8e"
- ),
- new SimpleImmutableEntry<>(
- BuiltinDigests.sha256,
- "SHA256:1wNOZO+/XgNGJMx8UUJst33V+bBMTz5EcL0B6y2iRv0"
- )
- )
- ),
- new SimpleImmutableEntry<>(
- // CHECKSTYLE:OFF
- "ssh-dss AAAAB3NzaC1kc3MAAACBAMg/IxsG5BxnF5gM7IKqqR0rftxZC+n5GlbO+J4H+iIb/KR8NBehkxG3CrBZMF96M2K1sEGYLob+3k4r71oWaPul8n5rt9kpd+JSq4iD2ygOyg6Kd1/YDBHoxneizy6I/bGsLwhAAKWcRNrXmYVKGzhrhvZWN12AJDq2mGdj3szLAAAAFQD7a2MltdUSF7FU3//SpW4WGjZbeQAAAIBf0nNsfKQL/TEMo7IpTrEMg5V0RnSigCX0+yUERS42GW/ZeCZBJw7oL2XZbuBtu63vMjDgVpnb92BdrcPgjJ7EFW6DlcyeuywStmg1ygXmDR2AQCxv0eX2CQgrdUczmRa155SDVUTvTQlO1IyKx0vwKAh1H7E3yJUfkTAJstbGYQAAAIEAtv+cdRfNevYFkp55jVqazc8zRLvfb64jzgc5oSJVc64kFs4yx+abYpGX9WxNxDlG6g2WiY8voDBB0YnUJsn0kVRjBKX9OceROxrfT4K4dVbQZsdt+SLaXWL4lGJFrFZL3LZqvySvq6xfhJfakQDDivW4hUOhFPXPHrE5/Ia3T7A= dsa-key-20130709",
- // CHECKSTYLE:ON
- Arrays.asList(
- new SimpleImmutableEntry<>(
- BuiltinDigests.md5,
- "MD5:fb:29:14:8d:94:f9:1d:cf:6b:0e:a4:35:1d:83:44:2f"
- ),
- new SimpleImmutableEntry<>(
- BuiltinDigests.sha256,
- "SHA256:grxw4KhY1cK6eOczBWs7tDVvo9V0PQw4E1wN1gJvHlw"
- )
- )
- ),
- new SimpleImmutableEntry<>(
- // CHECKSTYLE:OFF
- "ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBFImZtcTj842stlcVHLFBFxTEx7lu3jW9aZCvd0r9fUNKZ6LbRPh6l1oJ4ozArnw7XreQBUc5oNd9HB5RNJ8jl1nWXY5cXBA7McZrKZrYmk+zxNhH6UL+kMLaJkyngJHQw== root@osv-linux",
- // CHECKSTYLE:ON
- Arrays.asList(
- new SimpleImmutableEntry<>(
- BuiltinDigests.md5,
- "MD5:e6:dc:a2:4f:5b:11:b2:3c:0f:e8:f6:d8:d1:01:e9:d3"
- ),
- new SimpleImmutableEntry<>(
- BuiltinDigests.sha512,
- "SHA512:4w6ZB78tmFWhpN2J50Ok6WeMJhZp1X0xN0EKWxZmRLcYDbCWhyJDe8lgrQKWqdTCMZ5aNEBl9xQUklcC5Gt2jg"
- )
- )
- )
- ));
-
- List<Object[]> ret = new ArrayList<>();
- for (Map.Entry<String, ? extends Collection<? extends Map.Entry<DigestFactory, String>>> kentry : keyEntries) {
- String keyValue = kentry.getKey();
- try {
- PublicKey key = PublicKeyEntry.parsePublicKeyEntry(keyValue).resolvePublicKey(PublicKeyEntryResolver.FAILING);
- for (Map.Entry<DigestFactory, String> dentry : kentry.getValue()) {
- DigestFactory factory = dentry.getKey();
- String fingerprint = dentry.getValue();
- if (!factory.isSupported()) {
- System.out.println("Skip unsupported digest: " + fingerprint);
- continue;
- }
-
- ret.add(new Object[]{key, factory, fingerprint});
- }
- } catch (InvalidKeySpecException e) {
- System.out.println("Skip unsupported key: " + keyValue);
- }
- }
-
- return ret;
- }
-
- @Test
- public void testFingerprint() throws Exception {
- String name = digestFactory.getName();
- assertEquals(
- String.format("Fingerprint does not match for digest %s", name),
- expected,
- KeyUtils.getFingerPrint(digestFactory, key)
- );
- assertEquals(
- String.format("Fingerprint check failed for digest %s", name),
- new SimpleImmutableEntry<>(true, expected),
- KeyUtils.checkFingerPrint(expected, digestFactory, key)
- );
- assertEquals(
- String.format("Fingerprint check succeeded for invalid digest %s", name),
- new SimpleImmutableEntry<>(false, expected),
- KeyUtils.checkFingerPrint(expected + "A", digestFactory, key)
- );
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsTest.java
deleted file mode 100644
index 0f7e07c..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/KeyUtilsTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.config.keys;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.attribute.PosixFilePermission;
-import java.security.DigestException;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Map;
-
-import org.apache.sshd.common.digest.BaseDigest;
-import org.apache.sshd.common.digest.BuiltinDigests;
-import org.apache.sshd.common.digest.Digest;
-import org.apache.sshd.common.digest.DigestFactory;
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.common.util.OsUtils;
-import org.apache.sshd.common.util.io.IoUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class KeyUtilsTest extends BaseTestSupport {
- public KeyUtilsTest() {
- super();
- }
-
- @Test
- public void testGenerateFingerPrintOnException() {
- for (DigestFactory info : BuiltinDigests.VALUES) {
- if (!info.isSupported()) {
- System.out.println("Skip unsupported digest: " + info.getAlgorithm());
- continue;
- }
-
- Exception thrown = new DigestException(info.getAlgorithm() + ":" + info.getBlockSize());
- Digest digest = new BaseDigest(info.getAlgorithm(), info.getBlockSize()) {
- @Override
- public byte[] digest() throws Exception {
- throw thrown;
- }
- };
- String actual = KeyUtils.getFingerPrint(new DigestFactory() {
- @Override
- public String getName() {
- return getCurrentTestName();
- }
-
- @Override
- public String getAlgorithm() {
- return digest.getAlgorithm();
- }
-
- @Override
- public boolean isSupported() {
- return info.isSupported();
- }
-
- @Override
- public int getBlockSize() {
- return info.getBlockSize();
- }
-
- @Override
- public Digest create() {
- return digest;
- }
- }, getCurrentTestName());
- String expected = thrown.getClass().getSimpleName();
- assertEquals("Mismatched fingerprint for " + thrown.getMessage(), expected, actual);
- }
- }
-
- @Test
- public void testGenerateDefaultFingerprintDigest() {
- DigestFactory defaultValue = KeyUtils.getDefaultFingerPrintFactory();
- assertNotNull("No current default fingerprint digest factory", defaultValue);
- try {
- for (DigestFactory f : BuiltinDigests.VALUES) {
- if (!f.isSupported()) {
- System.out.println("Skip unsupported digest=" + f.getAlgorithm());
- continue;
- }
-
- KeyUtils.setDefaultFingerPrintFactory(f);
-
- String data = getClass().getName() + "#" + getCurrentTestName() + "(" + f.getName() + ")";
- String expected = KeyUtils.getFingerPrint(f, data);
- String actual = KeyUtils.getFingerPrint(data);
- assertEquals("Mismatched fingerprint for digest=" + f.getName(), expected, actual);
- }
- } finally {
- KeyUtils.setDefaultFingerPrintFactory(defaultValue); // restore the original
- }
- }
-
- @Test // see SSHD-606
- public void testValidateStrictKeyFilePermissions() throws IOException {
- Path file = getTempTargetRelativeFile(getClass().getSimpleName(), getCurrentTestName());
- outputDebugMessage("%s deletion result=%s", file, Files.deleteIfExists(file));
- assertNull("Unexpected violation for non-existent file: " + file, KeyUtils.validateStrictKeyFilePermissions(file));
-
- assertHierarchyTargetFolderExists(file.getParent());
- try (OutputStream output = Files.newOutputStream(file)) {
- output.write((getClass().getName() + "#" + getCurrentTestName() + "@" + new Date(System.currentTimeMillis())).getBytes(StandardCharsets.UTF_8));
- }
-
- Collection<PosixFilePermission> perms = IoUtils.getPermissions(file);
- if (GenericUtils.isEmpty(perms)) {
- assertNull("Unexpected violation for no permissions file: " + file, KeyUtils.validateStrictKeyFilePermissions(file));
- } else if (OsUtils.isUNIX()) {
- Map.Entry<String, Object> violation = null;
- for (PosixFilePermission p : KeyUtils.STRICTLY_PROHIBITED_FILE_PERMISSION) {
- if (perms.contains(p)) {
- violation = KeyUtils.validateStrictKeyFilePermissions(file);
- assertNotNull("Unexpected success for permission=" + p + " of file " + file + " permissions=" + perms, violation);
- break;
- }
- }
-
- if (violation == null) { // we expect a failure since the parent does not have the necessary permissions
- assertNotNull("Unexpected UNIX success for file " + file + " permissions=" + perms, KeyUtils.validateStrictKeyFilePermissions(file));
- }
- } else {
- assertNull("Unexpected Windows violation for file " + file + " permissions=" + perms, KeyUtils.validateStrictKeyFilePermissions(file));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/PublicKeyEntryTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/PublicKeyEntryTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/PublicKeyEntryTest.java
deleted file mode 100644
index eee2d72..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/PublicKeyEntryTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.config.keys;
-
-import java.security.GeneralSecurityException;
-import java.security.PublicKey;
-import java.security.spec.InvalidKeySpecException;
-import java.util.Arrays;
-
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runners.MethodSorters;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class PublicKeyEntryTest extends BaseTestSupport {
- public PublicKeyEntryTest() {
- super();
- }
-
- @Test
- public void testFallbackResolver() throws Exception {
- PublicKeyEntry entry = // TODO use some
- PublicKeyEntry.parsePublicKeyEntry(
- GenericUtils.join(
- Arrays.asList(getCurrentTestName(), "AAAA", getClass().getSimpleName()), ' '));
- for (PublicKeyEntryResolver resolver : new PublicKeyEntryResolver[]{
- null, PublicKeyEntryResolver.FAILING, PublicKeyEntryResolver.IGNORING}) {
- try {
- PublicKey key = entry.resolvePublicKey(resolver);
- assertSame("Mismatched successful resolver", PublicKeyEntryResolver.IGNORING, resolver);
- assertNull("Unexpected success for resolver=" + resolver + ": " + KeyUtils.getFingerPrint(key), key);
- } catch (GeneralSecurityException e) {
- assertObjectInstanceOf("Mismatched thrown exception for resolver=" + resolver, InvalidKeySpecException.class, e);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/AESPrivateKeyObfuscatorTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/AESPrivateKeyObfuscatorTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/AESPrivateKeyObfuscatorTest.java
deleted file mode 100644
index cc3c379..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/AESPrivateKeyObfuscatorTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.sshd.common.config.keys.loader;
-
-import java.security.GeneralSecurityException;
-import java.security.Key;
-import java.util.List;
-import java.util.Random;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.common.util.security.SecurityUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.junit.runners.Parameterized.UseParametersRunnerFactory;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
-@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
-@Category({ NoIoTestCase.class })
-public class AESPrivateKeyObfuscatorTest extends BaseTestSupport {
- private static final Random RANDOMIZER = new Random(System.currentTimeMillis());
-
- private final int keyLength;
-
- public AESPrivateKeyObfuscatorTest(int keyLength) {
- this.keyLength = keyLength;
- }
-
- @Parameters(name = "keyLength={0}")
- public static List<Object[]> parameters() {
- List<Integer> lengths = AESPrivateKeyObfuscator.getAvailableKeyLengths();
- assertFalse("No lengths available", GenericUtils.isEmpty(lengths));
- return parameterize(lengths);
- }
-
- @Test
- public void testAvailableKeyLengthExists() throws GeneralSecurityException {
- assertEquals("Not a BYTE size multiple", 0, keyLength % Byte.SIZE);
-
- byte[] iv = new byte[keyLength / Byte.SIZE];
- synchronized (RANDOMIZER) {
- RANDOMIZER.nextBytes(iv);
- }
-
- Key key = new SecretKeySpec(iv, AESPrivateKeyObfuscator.CIPHER_NAME);
- Cipher c = SecurityUtils.getCipher(AESPrivateKeyObfuscator.CIPHER_NAME);
- c.init(Cipher.DECRYPT_MODE, key);
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest.java
deleted file mode 100644
index 482037d..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/openssh/OpenSSHKeyPairResourceParserTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.sshd.common.config.keys.loader.openssh;
-
-import java.net.URL;
-import java.security.KeyPair;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.sshd.common.config.keys.AuthorizedKeyEntry;
-import org.apache.sshd.common.config.keys.BuiltinIdentities;
-import org.apache.sshd.common.config.keys.FilePasswordProvider;
-import org.apache.sshd.common.config.keys.PrivateKeyEntryDecoder;
-import org.apache.sshd.common.config.keys.PublicKeyEntryResolver;
-import org.apache.sshd.common.util.GenericUtils;
-import org.apache.sshd.common.util.ValidateUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.Assume;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.junit.runners.Parameterized.UseParametersRunnerFactory;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
-@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
-@Category({ NoIoTestCase.class })
-public class OpenSSHKeyPairResourceParserTest extends BaseTestSupport {
- private static final OpenSSHKeyPairResourceParser PARSER = OpenSSHKeyPairResourceParser.INSTANCE;
- private final BuiltinIdentities identity;
-
- public OpenSSHKeyPairResourceParserTest(BuiltinIdentities identity) {
- this.identity = identity;
- }
-
- @Parameters(name = "type={0}")
- public static List<Object[]> parameters() {
- return parameterize(BuiltinIdentities.VALUES);
- }
-
- @Test
- public void testLoadKeyPairs() throws Exception {
- Assume.assumeTrue(identity + " not supported", identity.isSupported());
-
- String resourceKey = getClass().getSimpleName() + "-" + identity.getName().toUpperCase() + "-" + KeyPair.class.getSimpleName();
- URL urlKeyPair = getClass().getResource(resourceKey);
- assertNotNull("Missing key-pair resource: " + resourceKey, urlKeyPair);
-
- Collection<KeyPair> pairs = PARSER.loadKeyPairs(urlKeyPair, FilePasswordProvider.EMPTY);
- assertEquals("Mismatched pairs count", 1, GenericUtils.size(pairs));
-
- URL urlPubKey = getClass().getResource(resourceKey + ".pub");
- assertNotNull("Missing public key resource: " + resourceKey, urlPubKey);
-
- List<AuthorizedKeyEntry> entries = AuthorizedKeyEntry.readAuthorizedKeys(urlPubKey);
- assertEquals("Mismatched public keys count", 1, GenericUtils.size(entries));
-
- AuthorizedKeyEntry entry = entries.get(0);
- PublicKey pubEntry = entry.resolvePublicKey(PublicKeyEntryResolver.FAILING);
- assertNotNull("Cannot retrieve public key", pubEntry);
-
- Class<? extends PublicKey> pubType = identity.getPublicKeyType();
- Class<? extends PrivateKey> prvType = identity.getPrivateKeyType();
- for (KeyPair kp : pairs) {
- PublicKey pubKey = ValidateUtils.checkInstanceOf(kp.getPublic(), pubType, "Mismatched public key type");
- assertKeyEquals("Mismatched identity public key", pubEntry, pubKey);
-
- PrivateKey prvKey = ValidateUtils.checkInstanceOf(kp.getPrivate(), prvType, "Mismatched private key type");
- @SuppressWarnings("rawtypes")
- PrivateKeyEntryDecoder decoder =
- OpenSSHKeyPairResourceParser.getPrivateKeyEntryDecoder(prvKey);
- assertNotNull("No private key decoder", decoder);
-
- if (decoder.isPublicKeyRecoverySupported()) {
- @SuppressWarnings("unchecked")
- PublicKey recKey = decoder.recoverPublicKey(prvKey);
- assertKeyEquals("Mismatched recovered public key", pubKey, recKey);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/pem/PKCS8PEMResourceKeyPairParserTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/pem/PKCS8PEMResourceKeyPairParserTest.java b/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/pem/PKCS8PEMResourceKeyPairParserTest.java
deleted file mode 100644
index 69e6b66..0000000
--- a/sshd-core/src/test/java/org/apache/sshd/common/config/keys/loader/pem/PKCS8PEMResourceKeyPairParserTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.sshd.common.config.keys.loader.pem;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.PrivateKey;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.commons.ssl.PEMItem;
-import org.apache.commons.ssl.PEMUtil;
-import org.apache.sshd.common.config.keys.KeyUtils;
-import org.apache.sshd.common.util.security.SecurityUtils;
-import org.apache.sshd.util.test.BaseTestSupport;
-import org.apache.sshd.util.test.JUnit4ClassRunnerWithParametersFactory;
-import org.apache.sshd.util.test.NoIoTestCase;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.MethodSorters;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.junit.runners.Parameterized.UseParametersRunnerFactory;
-
-/**
- * TODO Add javadoc
- *
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-@RunWith(Parameterized.class) // see https://github.com/junit-team/junit/wiki/Parameterized-tests
-@UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@Category({ NoIoTestCase.class })
-public class PKCS8PEMResourceKeyPairParserTest extends BaseTestSupport {
- private final String algorithm;
- private final int keySize;
-
- public PKCS8PEMResourceKeyPairParserTest(String algorithm, int keySize) {
- this.algorithm = algorithm;
- this.keySize = keySize;
- }
-
- @Parameters(name = "{0} / {1}")
- public static List<Object[]> parameters() {
- List<Object[]> params = new ArrayList<>();
- for (Integer ks : RSA_SIZES) {
- params.add(new Object[]{KeyUtils.RSA_ALGORITHM, ks});
- }
- for (Integer ks : DSS_SIZES) {
- params.add(new Object[]{KeyUtils.DSS_ALGORITHM, ks});
- }
- return params;
- }
-
- @Test // see SSHD-760
- public void testPkcs8() throws IOException, GeneralSecurityException {
- KeyPairGenerator generator = SecurityUtils.getKeyPairGenerator(algorithm);
- if (keySize > 0) {
- generator.initialize(keySize);
- }
- KeyPair kp = generator.generateKeyPair();
-
- try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
- Collection<Object> items = new ArrayList<>();
- PrivateKey prv1 = kp.getPrivate();
- items.add(new PEMItem(prv1.getEncoded(), "PRIVATE KEY"));
- byte[] bytes = PEMUtil.encode(items);
- os.write(bytes);
- os.close();
-
- try (ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
- KeyPair kp2 = SecurityUtils.loadKeyPairIdentity(getCurrentTestName(), bais, null);
-
- assertEquals("Mismatched public key", kp.getPublic(), kp2.getPublic());
- assertEquals("Mismatched private key", prv1, kp2.getPrivate());
- }
- }
- }
-
- @Override
- public String toString() {
- return getClass().getSimpleName() + "[" + algorithm + "/" + keySize + "]";
- }
-}