http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java b/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java deleted file mode 100644 index ae39dd3..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java +++ /dev/null @@ -1,580 +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.io.ByteArrayOutputStream; -import java.io.EOFException; -import java.io.IOException; -import java.io.OutputStream; -import java.io.StreamCorruptedException; -import java.math.BigInteger; -import java.security.interfaces.ECKey; -import java.security.spec.ECField; -import java.security.spec.ECFieldFp; -import java.security.spec.ECParameterSpec; -import java.security.spec.ECPoint; -import java.security.spec.EllipticCurve; -import java.util.Collections; -import java.util.Comparator; -import java.util.EnumSet; -import java.util.List; -import java.util.NavigableSet; -import java.util.Objects; -import java.util.Set; -import java.util.stream.Collectors; - -import org.apache.sshd.common.NamedResource; -import org.apache.sshd.common.OptionalFeature; -import org.apache.sshd.common.config.keys.KeyEntryResolver; -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.NumberUtils; -import org.apache.sshd.common.util.ValidateUtils; -import org.apache.sshd.common.util.security.SecurityUtils; - -/** - * Utilities for working with elliptic curves. - * - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public enum ECCurves implements NamedResource, OptionalFeature { - nistp256(Constants.NISTP256, new int[]{1, 2, 840, 10045, 3, 1, 7}, - new ECParameterSpec( - new EllipticCurve( - new ECFieldFp(new BigInteger("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF", 16)), - new BigInteger("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC", 16), - new BigInteger("5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b", 16)), - new ECPoint( - new BigInteger("6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296", 16), - new BigInteger("4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5", 16)), - new BigInteger("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551", 16), - 1), - 32, - BuiltinDigests.sha256), - nistp384(Constants.NISTP384, new int[]{1, 3, 132, 0, 34}, - new ECParameterSpec( - new EllipticCurve( - new ECFieldFp(new BigInteger("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF", 16)), - new BigInteger("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC", 16), - new BigInteger("B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF", 16)), - new ECPoint( - new BigInteger("AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7", 16), - new BigInteger("3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F", 16)), - new BigInteger("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973", 16), - 1), - 48, - BuiltinDigests.sha384), - nistp521(Constants.NISTP521, new int[]{1, 3, 132, 0, 35}, - new ECParameterSpec( - new EllipticCurve( - new ECFieldFp(new BigInteger("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16)), - new BigInteger("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC", 16), - new BigInteger("0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951" - + "EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00", 16)), - new ECPoint( - new BigInteger("00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77" - + "EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66", 16), - new BigInteger("011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE7299" - + "5EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650", 16)), - new BigInteger("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B" - + "7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409", 16), - 1), - 66, - BuiltinDigests.sha512); - - /** - * A {@link Set} of all the known curves - */ - public static final Set<ECCurves> VALUES = - Collections.unmodifiableSet(EnumSet.allOf(ECCurves.class)); - - /** - * A {@link Set} of all the known curves names - */ - public static final NavigableSet<String> NAMES = - Collections.unmodifiableNavigableSet(GenericUtils.mapSort( - VALUES, - ECCurves::getName, - String.CASE_INSENSITIVE_ORDER)); - - /** - * A {@link Set} of all the known curves key types - */ - public static final NavigableSet<String> KEY_TYPES = - Collections.unmodifiableNavigableSet(GenericUtils.mapSort( - VALUES, - ECCurves::getKeyType, - String.CASE_INSENSITIVE_ORDER)); - - public static final Comparator<ECCurves> BY_KEY_SIZE = (o1, o2) -> { - int k1 = (o1 == null) ? Integer.MAX_VALUE : o1.getKeySize(); - int k2 = (o2 == null) ? Integer.MAX_VALUE : o2.getKeySize(); - return Integer.compare(k1, k2); - }; - - public static final List<ECCurves> SORTED_KEY_SIZE = - Collections.unmodifiableList(VALUES.stream() - .sorted(BY_KEY_SIZE) - .collect(Collectors.toList())); - - private final String name; - private final String keyType; - private final String oidString; - private final List<Integer> oidValue; - private final ECParameterSpec params; - private final int keySize; - private final int numOctets; - private final DigestFactory digestFactory; - - ECCurves(String name, int[] oid, ECParameterSpec params, int numOctets, DigestFactory digestFactory) { - this.name = ValidateUtils.checkNotNullAndNotEmpty(name, "No curve name"); - this.oidString = NumberUtils.join('.', ValidateUtils.checkNotNullAndNotEmpty(oid, "No OID")); - this.oidValue = Collections.unmodifiableList(NumberUtils.asList(oid)); - this.keyType = Constants.ECDSA_SHA2_PREFIX + name; - this.params = ValidateUtils.checkNotNull(params, "No EC params for %s", name); - this.keySize = getCurveSize(params); - this.numOctets = numOctets; - this.digestFactory = Objects.requireNonNull(digestFactory, "No digestFactory"); - } - - @Override // The curve name - public final String getName() { - return name; - } - - public final String getOID() { - return oidString; - } - - public final List<Integer> getOIDValue() { - return oidValue; - } - - /** - * @return The standard key type used to represent this curve - */ - public final String getKeyType() { - return keyType; - } - - @Override - public final boolean isSupported() { - return SecurityUtils.isECCSupported() && digestFactory.isSupported(); - } - - public final ECParameterSpec getParameters() { - return params; - } - - /** - * @return The size (in bits) of the key - */ - public final int getKeySize() { - return keySize; - } - - /** - * @return The number of octets used to represent the point(s) for the curve - */ - public final int getNumPointOctets() { - return numOctets; - } - - /** - * @return The {@link Digest} to use when hashing the curve's parameters - */ - public final Digest getDigestForParams() { - return digestFactory.create(); - } - - /** - * @param type The key type value - ignored if {@code null}/empty - * @return The matching {@link ECCurves} constant - {@code null} if - * no match found case <U>insensitive</U> - */ - public static ECCurves fromKeyType(String type) { - if (GenericUtils.isEmpty(type)) { - return null; - } - - for (ECCurves c : VALUES) { - if (type.equalsIgnoreCase(c.getKeyType())) { - return c; - } - } - - return null; - } - - /** - * @param name The curve name (case <U>insensitive</U> - ignored if - * {@code null}/empty - * @return The matching {@link ECCurves} instance - {@code null} if no - * match found - */ - public static ECCurves fromCurveName(String name) { - return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); - } - - /** - * @param key The {@link ECKey} - ignored if {@code null} - * @return The matching {@link ECCurves} instance - {@code null} if no - * match found - */ - public static ECCurves fromECKey(ECKey key) { - return fromCurveParameters((key == null) ? null : key.getParams()); - } - - /** - * @param params The curve's {@link ECParameterSpec} - ignored if {@code null} - * @return The matching {@link ECCurves} value - {@code null} if no match found - * @see #getCurveSize(ECParameterSpec) - * @see #fromCurveSize(int) - */ - public static ECCurves fromCurveParameters(ECParameterSpec params) { - if (params == null) { - return null; - } else { - return fromCurveSize(getCurveSize(params)); - } - } - - /** - * @param keySize The key size (in bits) - * @return The matching {@link ECCurves} value - {@code null} if no - * match found - */ - public static ECCurves fromCurveSize(int keySize) { - if (keySize <= 0) { - return null; - } - - for (ECCurves c : VALUES) { - if (keySize == c.getKeySize()) { - return c; - } - } - - return null; - } - - public static ECCurves fromOIDValue(List<? extends Number> oid) { - if (GenericUtils.isEmpty(oid)) { - return null; - } - - for (ECCurves c : VALUES) { - List<? extends Number> v = c.getOIDValue(); - if (oid.size() != v.size()) { - continue; - } - - boolean matches = true; - for (int index = 0; index < v.size(); index++) { - Number exp = v.get(index); - Number act = oid.get(index); - if (exp.intValue() != act.intValue()) { - matches = false; - break; - } - } - - if (matches) { - return c; - } - } - - return null; - } - - public static ECCurves fromOID(String oid) { - if (GenericUtils.isEmpty(oid)) { - return null; - } - - for (ECCurves c : VALUES) { - if (oid.equalsIgnoreCase(c.getOID())) { - return c; - } - } - - return null; - } - - /** - * @param params The curve's {@link ECParameterSpec} - * @return The curve's key size in bits - * @throws IllegalArgumentException if invalid parameters provided - */ - public static int getCurveSize(ECParameterSpec params) { - EllipticCurve curve = Objects.requireNonNull(params, "No EC params").getCurve(); - ECField field = Objects.requireNonNull(curve, "No EC curve").getField(); - return Objects.requireNonNull(field, "No EC field").getFieldSize(); - } - - public static byte[] encodeECPoint(ECPoint group, ECParameterSpec params) { - return encodeECPoint(group, params.getCurve()); - } - - public static byte[] encodeECPoint(ECPoint group, EllipticCurve curve) { - // M has len 2 ceil(log_2(q)/8) + 1 ? - int elementSize = (curve.getField().getFieldSize() + 7) / 8; - byte[] m = new byte[2 * elementSize + 1]; - - // Uncompressed format - m[0] = 0x04; - - byte[] affineX = removeLeadingZeroes(group.getAffineX().toByteArray()); - System.arraycopy(affineX, 0, m, 1 + elementSize - affineX.length, affineX.length); - - byte[] affineY = removeLeadingZeroes(group.getAffineY().toByteArray()); - System.arraycopy(affineY, 0, m, 1 + elementSize + elementSize - affineY.length, affineY.length); - - return m; - } - - private static byte[] removeLeadingZeroes(byte[] input) { - if (input[0] != 0x00) { - return input; - } - - int pos = 1; - while (pos < input.length - 1 && input[pos] == 0x00) { - pos++; - } - - byte[] output = new byte[input.length - pos]; - System.arraycopy(input, pos, output, 0, output.length); - return output; - } - - /** - * Converts the given octet string (defined by ASN.1 specifications) to a {@link BigInteger} - * As octet strings always represent positive integers, a zero-byte is prepended to - * the given array if necessary (if is MSB equal to 1), then this is converted to BigInteger - * The conversion is defined in the Section 2.3.8 - * - * @param octets - octet string bytes to be converted - * @return The {@link BigInteger} representation of the octet string - */ - public static BigInteger octetStringToInteger(byte... octets) { - if (octets == null) { - return null; - } else if (octets.length == 0) { - return BigInteger.ZERO; - } else { - return new BigInteger(1, octets); - } - } - - public static ECPoint octetStringToEcPoint(byte... octets) { - if (NumberUtils.isEmpty(octets)) { - return null; - } - - int startIndex = findFirstNonZeroIndex(octets); - if (startIndex < 0) { - throw new IllegalArgumentException("All zeroes ECPoint N/A"); - } - - byte indicator = octets[startIndex]; - ECCurves.ECPointCompression compression = ECCurves.ECPointCompression.fromIndicatorValue(indicator); - if (compression == null) { - throw new UnsupportedOperationException("Unknown compression indicator value: 0x" + Integer.toHexString(indicator & 0xFF)); - } - - // The coordinates actually start after the compression indicator - return compression.octetStringToEcPoint(octets, startIndex + 1, octets.length - startIndex - 1); - } - - private static int findFirstNonZeroIndex(byte... octets) { - if (NumberUtils.isEmpty(octets)) { - return -1; - } - - for (int index = 0; index < octets.length; index++) { - if (octets[index] != 0) { - return index; - } - } - - return -1; // all zeroes - } - - public static final class Constants { - /** - * Standard prefix of NISTP key types when encoded - */ - public static final String ECDSA_SHA2_PREFIX = "ecdsa-sha2-"; - - public static final String NISTP256 = "nistp256"; - public static final String NISTP384 = "nistp384"; - public static final String NISTP521 = "nistp521"; - - private Constants() { - throw new UnsupportedOperationException("No instance allowed"); - } - } - - /** - * The various {@link ECPoint} representation compression indicators - * - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - * @see <A HREF="https://www.ietf.org/rfc/rfc5480.txt">RFC-5480 - section 2.2</A> - */ - public enum ECPointCompression { - // see http://tools.ietf.org/html/draft-jivsov-ecc-compact-00 - // see http://crypto.stackexchange.com/questions/8914/ecdsa-compressed-public-key-point-back-to-uncompressed-public-key-point - VARIANT2((byte) 0x02) { - @Override - public ECPoint octetStringToEcPoint(byte[] octets, int startIndex, int len) { - byte[] xp = new byte[len]; - System.arraycopy(octets, startIndex, xp, 0, len); - BigInteger x = octetStringToInteger(xp); - - // TODO derive even Y... - throw new UnsupportedOperationException("octetStringToEcPoint(" + name() + ")(X=" + x + ") compression support N/A"); - } - }, - VARIANT3((byte) 0x03) { - @Override - public ECPoint octetStringToEcPoint(byte[] octets, int startIndex, int len) { - byte[] xp = new byte[len]; - System.arraycopy(octets, startIndex, xp, 0, len); - BigInteger x = octetStringToInteger(xp); - - // TODO derive odd Y... - throw new UnsupportedOperationException("octetStringToEcPoint(" + name() + ")(X=" + x + ") compression support N/A"); - } - }, - UNCOMPRESSED((byte) 0x04) { - @Override - public ECPoint octetStringToEcPoint(byte[] octets, int startIndex, int len) { - int numElements = len / 2; /* x, y */ - if (len != (numElements * 2)) { // make sure length is not odd - throw new IllegalArgumentException("octetStringToEcPoint(" + name() + ") " - + " invalid remainder octets representation: " - + " expected=" + (2 * numElements) + ", actual=" + len); - } - - byte[] xp = new byte[numElements]; - byte[] yp = new byte[numElements]; - System.arraycopy(octets, startIndex, xp, 0, numElements); - System.arraycopy(octets, startIndex + numElements, yp, 0, numElements); - - BigInteger x = octetStringToInteger(xp); - BigInteger y = octetStringToInteger(yp); - return new ECPoint(x, y); - } - - @Override - public void writeECPoint(OutputStream s, String curveName, ECPoint p) throws IOException { - ECCurves curve = fromCurveName(curveName); - if (curve == null) { - throw new StreamCorruptedException("writeECPoint(" + name() + ")[" + curveName + "] cannot determine octets count"); - } - - int numElements = curve.getNumPointOctets(); - KeyEntryResolver.encodeInt(s, 1 /* the indicator */ + 2 * numElements); - s.write(getIndicatorValue()); - writeCoordinate(s, "X", p.getAffineX(), numElements); - writeCoordinate(s, "Y", p.getAffineY(), numElements); - } - }; - - public static final Set<ECPointCompression> VALUES = - Collections.unmodifiableSet(EnumSet.allOf(ECPointCompression.class)); - - private final byte indicatorValue; - - ECPointCompression(byte indicator) { - indicatorValue = indicator; - } - - public final byte getIndicatorValue() { - return indicatorValue; - } - - public abstract ECPoint octetStringToEcPoint(byte[] octets, int startIndex, int len); - - public byte[] ecPointToOctetString(String curveName, ECPoint p) { - try (ByteArrayOutputStream baos = new ByteArrayOutputStream((2 * 66) + Long.SIZE)) { - writeECPoint(baos, curveName, p); - return baos.toByteArray(); - } catch (IOException e) { - throw new RuntimeException("ecPointToOctetString(" + curveName + ")" - + " failed (" + e.getClass().getSimpleName() + ")" - + " to write data: " + e.getMessage(), - e); - } - } - - public void writeECPoint(OutputStream s, String curveName, ECPoint p) throws IOException { - if (s == null) { - throw new EOFException("No output stream"); - } - - throw new StreamCorruptedException("writeECPoint(" + name() + ")[" + p + "] N/A"); - } - - protected void writeCoordinate(OutputStream s, String n, BigInteger v, int numElements) throws IOException { - byte[] vp = v.toByteArray(); - int startIndex = 0; - int vLen = vp.length; - if (vLen > numElements) { - if (vp[0] == 0) { // skip artificial positive sign - startIndex++; - vLen--; - } - } - - if (vLen > numElements) { - throw new StreamCorruptedException("writeCoordinate(" + name() + ")[" + n + "]" - + " value length (" + vLen + ") exceeds max. (" + numElements + ")" - + " for " + v); - } - - if (vLen < numElements) { - byte[] tmp = new byte[numElements]; - System.arraycopy(vp, startIndex, tmp, numElements - vLen, vLen); - vp = tmp; - } - - s.write(vp, startIndex, vLen); - } - - public static ECPointCompression fromIndicatorValue(int value) { - if ((value < 0) || (value > 0xFF)) { - return null; // must be a byte value - } - - for (ECPointCompression c : VALUES) { - if (value == c.getIndicatorValue()) { - return c; - } - } - - return null; - } - } -}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/cipher/package.html ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/cipher/package.html b/sshd-core/src/main/java/org/apache/sshd/common/cipher/package.html deleted file mode 100644 index 197a89d..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/cipher/package.html +++ /dev/null @@ -1,26 +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. ---> -<html> -<head> -</head> -<body> - -<a href="{@docRoot}/org/apache/sshd/common/cipher/Cipher.html"><code>Cipher</code></a> -implementations. - -</body> -</html> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/compression/BaseCompression.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/BaseCompression.java b/sshd-core/src/main/java/org/apache/sshd/common/compression/BaseCompression.java deleted file mode 100644 index ff31947..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/BaseCompression.java +++ /dev/null @@ -1,48 +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 org.apache.sshd.common.util.ValidateUtils; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public abstract class BaseCompression implements Compression { - private final String name; - - protected BaseCompression(String name) { - this.name = ValidateUtils.checkNotNullAndNotEmpty(name, "No compression name"); - } - - @Override - public final String getName() { - return name; - } - - @Override - public boolean isCompressionExecuted() { - return true; - } - - @Override - public String toString() { - return getName(); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java b/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java deleted file mode 100644 index 49ad0ab..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/BuiltinCompressions.java +++ /dev/null @@ -1,239 +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.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.EnumSet; -import java.util.List; -import java.util.Map; -import java.util.NavigableSet; -import java.util.Objects; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeMap; - -import org.apache.sshd.common.NamedResource; -import org.apache.sshd.common.config.NamedFactoriesListParseResult; -import org.apache.sshd.common.util.GenericUtils; -import org.apache.sshd.common.util.ValidateUtils; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public enum BuiltinCompressions implements CompressionFactory { - none(Constants.NONE) { - @Override - public Compression create() { - return new CompressionNone(); - } - - @Override - public boolean isCompressionExecuted() { - return false; - } - }, - zlib(Constants.ZLIB) { - @Override - public Compression create() { - return new CompressionZlib(); - } - }, - delayedZlib(Constants.DELAYED_ZLIB) { - @Override - public Compression create() { - return new CompressionDelayedZlib(); - } - - @Override - public boolean isDelayed() { - return true; - } - }; - - public static final Set<BuiltinCompressions> VALUES = - Collections.unmodifiableSet(EnumSet.allOf(BuiltinCompressions.class)); - - private static final Map<String, CompressionFactory> EXTENSIONS = - new TreeMap<>(String.CASE_INSENSITIVE_ORDER); - - private final String name; - - BuiltinCompressions(String n) { - name = n; - } - - @Override - public final String getName() { - return name; - } - - @Override - public boolean isDelayed() { - return false; - } - - @Override - public boolean isCompressionExecuted() { - return true; - } - - @Override - public final String toString() { - return getName(); - } - - @Override - public final boolean isSupported() { - return true; - } - - /** - * Registered a {@link org.apache.sshd.common.NamedFactory} to be available besides the built-in - * ones when parsing configuration - * - * @param extension The factory to register - * @throws IllegalArgumentException if factory instance is {@code null}, - * or overrides a built-in one or overrides another registered factory - * with the same name (case <U>insensitive</U>). - */ - public static void registerExtension(CompressionFactory extension) { - String name = Objects.requireNonNull(extension, "No extension provided").getName(); - ValidateUtils.checkTrue(fromFactoryName(name) == null, "Extension overrides built-in: %s", name); - - synchronized (EXTENSIONS) { - ValidateUtils.checkTrue(!EXTENSIONS.containsKey(name), "Extension overrides existing: %s", name); - EXTENSIONS.put(name, extension); - } - } - - /** - * @return A {@link SortedSet} of the currently registered extensions, sorted - * according to the factory name (case <U>insensitive</U>) - */ - public static NavigableSet<CompressionFactory> getRegisteredExtensions() { - synchronized (EXTENSIONS) { - return GenericUtils.asSortedSet(NamedResource.BY_NAME_COMPARATOR, EXTENSIONS.values()); - } - } - - /** - * Unregisters specified extension - * - * @param name The factory name - ignored if {@code null}/empty - * @return The registered extension - {@code null} if not found - */ - public static CompressionFactory unregisterExtension(String name) { - if (GenericUtils.isEmpty(name)) { - return null; - } - - synchronized (EXTENSIONS) { - return EXTENSIONS.remove(name); - } - } - - public static BuiltinCompressions fromFactoryName(String name) { - return NamedResource.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES); - } - - /** - * @param compressions A comma-separated list of Compressions' names - ignored - * if {@code null}/empty - * @return A {@link ParseResult} containing the successfully parsed - * factories and the unknown ones. <B>Note:</B> it is up to caller to - * ensure that the lists do not contain duplicates - */ - public static ParseResult parseCompressionsList(String compressions) { - return parseCompressionsList(GenericUtils.split(compressions, ',')); - } - - public static ParseResult parseCompressionsList(String... compressions) { - return parseCompressionsList(GenericUtils.isEmpty((Object[]) compressions) ? Collections.emptyList() : Arrays.asList(compressions)); - } - - public static ParseResult parseCompressionsList(Collection<String> compressions) { - if (GenericUtils.isEmpty(compressions)) { - return ParseResult.EMPTY; - } - - List<CompressionFactory> factories = new ArrayList<>(compressions.size()); - List<String> unknown = Collections.emptyList(); - for (String name : compressions) { - CompressionFactory c = resolveFactory(name); - if (c != null) { - factories.add(c); - } else { - // replace the (unmodifiable) empty list with a real one - if (unknown.isEmpty()) { - unknown = new ArrayList<>(); - } - unknown.add(name); - } - } - - return new ParseResult(factories, unknown); - } - - /** - * @param name The factory name - * @return The factory or {@code null} if it is neither a built-in one - * or a registered extension - */ - public static CompressionFactory resolveFactory(String name) { - if (GenericUtils.isEmpty(name)) { - return null; - } - - CompressionFactory c = fromFactoryName(name); - if (c != null) { - return c; - } - - synchronized (EXTENSIONS) { - return EXTENSIONS.get(name); - } - } - - /** - * Holds the result of {@link BuiltinCompressions#parseCompressionsList(String)} - * - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ - public static class ParseResult extends NamedFactoriesListParseResult<Compression, CompressionFactory> { - public static final ParseResult EMPTY = new ParseResult(Collections.emptyList(), Collections.emptyList()); - - public ParseResult(List<CompressionFactory> parsed, List<String> unsupported) { - super(parsed, unsupported); - } - } - - public static final class Constants { - public static final String NONE = "none"; - public static final String ZLIB = "zlib"; - public static final String DELAYED_ZLIB = "[email protected]"; - - private Constants() { - throw new UnsupportedOperationException("No instance allowed"); - } - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/compression/Compression.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/Compression.java b/sshd-core/src/main/java/org/apache/sshd/common/compression/Compression.java deleted file mode 100644 index 91ac27e..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/Compression.java +++ /dev/null @@ -1,71 +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.io.IOException; - -import org.apache.sshd.common.util.buffer.Buffer; - -/** - * Interface used to compress the stream of data between the - * SSH server and clients. - * - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public interface Compression extends CompressionInformation { - - /** - * Enum identifying if this object will be used to compress - * or uncompress data. - */ - enum Type { - Inflater, - Deflater - } - - /** - * Initialize this object to either compress or uncompress data. - * This method must be called prior to any calls to either - * <code>compress</code> or <code>uncompress</code>. - * Once the object has been initialized, only one of - * <code>compress</code> or <code>uncompress</code> methods can be - * called. - * - * @param type compression type - * @param level compression level - */ - void init(Type type, int level); - - /** - * Compress the given buffer in place. - * - * @param buffer the buffer containing the data to compress - * @throws IOException if an error occurs - */ - void compress(Buffer buffer) throws IOException; - - /** - * Uncompress the data in a buffer into another buffer. - * - * @param from the buffer containing the data to uncompress - * @param to the buffer receiving the uncompressed data - * @throws IOException if an error occurs - */ - void uncompress(Buffer from, Buffer to) throws IOException; -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionDelayedZlib.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionDelayedZlib.java b/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionDelayedZlib.java deleted file mode 100644 index c062e38..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionDelayedZlib.java +++ /dev/null @@ -1,40 +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; - - -/** - * ZLib delayed compression. - * - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - * @see Compression#isDelayed() - */ -public class CompressionDelayedZlib extends CompressionZlib { - /** - * Create a new instance of a delayed ZLib compression - */ - public CompressionDelayedZlib() { - super(BuiltinCompressions.Constants.DELAYED_ZLIB); - } - - @Override - public boolean isDelayed() { - return true; - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionFactory.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionFactory.java deleted file mode 100644 index 355594a..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionFactory.java +++ /dev/null @@ -1,31 +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 org.apache.sshd.common.BuiltinFactory; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -// CHECKSTYLE:OFF -public interface CompressionFactory extends BuiltinFactory<Compression>, CompressionInformation { - // nothing extra -} -//CHECKSTYLE:ON http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionInformation.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionInformation.java b/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionInformation.java deleted file mode 100644 index 428689f..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionInformation.java +++ /dev/null @@ -1,42 +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 org.apache.sshd.common.NamedResource; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public interface CompressionInformation extends NamedResource { - /** - * Delayed compression is an Open-SSH specific feature which - * informs both the client and server to not compress data before - * the session has been authenticated. - * - * @return if the compression is delayed after authentication or not - */ - boolean isDelayed(); - - /** - * @return {@code true} if there is any compression executed by - * this "compressor" - special case for 'none' - */ - boolean isCompressionExecuted(); -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionNone.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionNone.java b/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionNone.java deleted file mode 100644 index 815e8ce..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionNone.java +++ /dev/null @@ -1,76 +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.io.IOException; -import java.io.StreamCorruptedException; - -import org.apache.sshd.common.util.buffer.Buffer; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public class CompressionNone extends BaseCompression { - private Type type; - private int level; - - public CompressionNone() { - super(BuiltinCompressions.Constants.NONE); - } - - @Override - public void init(Type type, int level) { - this.type = type; - this.level = level; - } - - @Override - public boolean isCompressionExecuted() { - return false; - } - - @Override - public void compress(Buffer buffer) throws IOException { - if (!Type.Deflater.equals(type)) { - throw new StreamCorruptedException("Not set up for compression: " + type); - } - } - - @Override - public void uncompress(Buffer from, Buffer to) throws IOException { - if (!Type.Inflater.equals(type)) { - throw new StreamCorruptedException("Not set up for de-compression: " + type); - } - - if (from != to) { - throw new StreamCorruptedException("Separate de-compression buffers provided"); - } - } - - @Override - public boolean isDelayed() { - return false; - } - - @Override - public String toString() { - return super.toString() + "[" + type + "/" + level + "]"; - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionZlib.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionZlib.java b/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionZlib.java deleted file mode 100644 index e365b91..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/CompressionZlib.java +++ /dev/null @@ -1,85 +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.io.IOException; -import java.util.zip.DataFormatException; -import java.util.zip.Deflater; -import java.util.zip.Inflater; - -import org.apache.sshd.common.util.buffer.Buffer; - -/** - * ZLib based Compression. - * - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public class CompressionZlib extends BaseCompression { - - private static final int BUF_SIZE = 4096; - - private byte[] tmpbuf = new byte[BUF_SIZE]; - private Deflater compresser; - private Inflater decompresser; - - /** - * Create a new instance of a ZLib base compression - */ - public CompressionZlib() { - this(BuiltinCompressions.Constants.ZLIB); - } - - protected CompressionZlib(String name) { - super(name); - } - - @Override - public boolean isDelayed() { - return false; - } - - @Override - public void init(Type type, int level) { - compresser = new Deflater(level); - decompresser = new Inflater(); - } - - @Override - public void compress(Buffer buffer) throws IOException { - compresser.setInput(buffer.array(), buffer.rpos(), buffer.available()); - buffer.wpos(buffer.rpos()); - for (int len = compresser.deflate(tmpbuf, 0, tmpbuf.length, Deflater.SYNC_FLUSH); - len > 0; - len = compresser.deflate(tmpbuf, 0, tmpbuf.length, Deflater.SYNC_FLUSH)) { - buffer.putRawBytes(tmpbuf, 0, len); - } - } - - @Override - public void uncompress(Buffer from, Buffer to) throws IOException { - decompresser.setInput(from.array(), from.rpos(), from.available()); - try { - for (int len = decompresser.inflate(tmpbuf); len > 0; len = decompresser.inflate(tmpbuf)) { - to.putRawBytes(tmpbuf, 0, len); - } - } catch (DataFormatException e) { - throw new IOException("Error decompressing data", e); - } - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/compression/package.html ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/compression/package.html b/sshd-core/src/main/java/org/apache/sshd/common/compression/package.html deleted file mode 100644 index 9bd4652..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/compression/package.html +++ /dev/null @@ -1,25 +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. ---> -<html> -<head> -</head> -<body> - -<a href="{@docRoot}/org/apache/sshd/common/compression/Compression.html"><code>Compression</code></a> implementations. - -</body> -</html> http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/config/CompressionConfigValue.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/CompressionConfigValue.java b/sshd-core/src/main/java/org/apache/sshd/common/config/CompressionConfigValue.java deleted file mode 100644 index e153adc..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/CompressionConfigValue.java +++ /dev/null @@ -1,94 +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.Collections; -import java.util.EnumSet; -import java.util.Set; - -import org.apache.sshd.common.compression.BuiltinCompressions; -import org.apache.sshd.common.compression.Compression; -import org.apache.sshd.common.compression.CompressionFactory; -import org.apache.sshd.common.util.GenericUtils; - -/** - * Provides a "bridge" between the configuration values and the - * actual {@link org.apache.sshd.common.NamedFactory} for the {@link Compression}. - * - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public enum CompressionConfigValue implements CompressionFactory { - YES(BuiltinCompressions.zlib), - NO(BuiltinCompressions.none), - DELAYED(BuiltinCompressions.delayedZlib); - - public static final Set<CompressionConfigValue> VALUES = - Collections.unmodifiableSet(EnumSet.allOf(CompressionConfigValue.class)); - - private final CompressionFactory factory; - - CompressionConfigValue(CompressionFactory delegate) { - factory = delegate; - } - - @Override - public final String getName() { - return factory.getName(); - } - - @Override - public final Compression create() { - return factory.create(); - } - - @Override - public boolean isSupported() { - return factory.isSupported(); - } - - @Override - public final String toString() { - return getName(); - } - - @Override - public boolean isDelayed() { - return factory.isDelayed(); - } - - @Override - public boolean isCompressionExecuted() { - return factory.isCompressionExecuted(); - } - - public static CompressionConfigValue fromName(String n) { - if (GenericUtils.isEmpty(n)) { - return null; - } - - for (CompressionConfigValue v : VALUES) { - if (n.equalsIgnoreCase(v.name())) { - return v; - } - } - - return null; - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/config/FactoriesListParseResult.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/FactoriesListParseResult.java b/sshd-core/src/main/java/org/apache/sshd/common/config/FactoriesListParseResult.java deleted file mode 100644 index 7a1cee1..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/FactoriesListParseResult.java +++ /dev/null @@ -1,51 +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.List; - -import org.apache.sshd.common.Factory; - -/** - * @param <T> Result type - * @param <F> Factory type - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public abstract class FactoriesListParseResult<T, F extends Factory<T>> extends ListParseResult<F> { - protected FactoriesListParseResult(List<F> parsed, List<String> unsupported) { - super(parsed, unsupported); - } - - /** - * @return The {@link List} of successfully parsed {@link Factory} instances - * in the <U>same order</U> as they were encountered during parsing - */ - public final List<F> getParsedFactories() { - return getParsedValues(); - } - - /** - * @return A {@link List} of unknown/unsupported configuration values for - * the factories - */ - public List<String> getUnsupportedFactories() { - return getUnsupportedValues(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/config/ListParseResult.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/ListParseResult.java b/sshd-core/src/main/java/org/apache/sshd/common/config/ListParseResult.java deleted file mode 100644 index 97590cb..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/ListParseResult.java +++ /dev/null @@ -1,66 +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.List; - -import org.apache.sshd.common.util.GenericUtils; - -/** - * Used to hold the result of parsing a list of value. Such result contains known - * and unknown values - which are accessible via the respective {@link #getParsedValues()} - * and {@link #getUnsupportedValues()} methods. <B>Note:</B> the returned {@link List}s may - * be un-modifiable, so it is recommended to avoid attempting changing the, returned - * list(s) - * - * @param <E> Type of list item - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public abstract class ListParseResult<E> { - private final List<E> parsed; - private final List<String> unsupported; - - protected ListParseResult(List<E> parsed, List<String> unsupported) { - this.parsed = parsed; - this.unsupported = unsupported; - } - - /** - * @return The {@link List} of successfully parsed value instances - * in the <U>same order</U> as they were encountered during parsing - */ - public final List<E> getParsedValues() { - return parsed; - } - - /** - * @return A {@link List} of unknown/unsupported configuration values for - * the factories - */ - public List<String> getUnsupportedValues() { - return unsupported; - } - - @Override - public String toString() { - return "parsed=" + GenericUtils.join(getParsedValues(), ',') - + ";unsupported=" + GenericUtils.join(getUnsupportedValues(), ','); - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/config/LogLevelValue.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/LogLevelValue.java b/sshd-core/src/main/java/org/apache/sshd/common/config/LogLevelValue.java deleted file mode 100644 index 2fbdc80..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/LogLevelValue.java +++ /dev/null @@ -1,56 +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.Collections; -import java.util.EnumSet; -import java.util.Set; - -import org.apache.sshd.common.util.GenericUtils; - -/** - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - * @see <A HREF="http://manpages.ubuntu.com/manpages/precise/en/man5/sshd_config.5.html"><I>LogLevel</I> configuration value</A> - */ -public enum LogLevelValue { - /* - * NOTE(s): - * 1. DEBUG and DEBUG1 are EQUIVALENT - * 2. Order is important (!!!) - */ - QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3; - - public static final Set<LogLevelValue> VALUES = - Collections.unmodifiableSet(EnumSet.allOf(LogLevelValue.class)); - - public static LogLevelValue fromName(String n) { - if (GenericUtils.isEmpty(n)) { - return null; - } - - for (LogLevelValue l : VALUES) { - if (n.equalsIgnoreCase(l.name())) { - return l; - } - } - - return null; - } -} http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java deleted file mode 100644 index 246cae0..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedFactoriesListParseResult.java +++ /dev/null @@ -1,47 +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.List; - -import org.apache.sshd.common.NamedFactory; -import org.apache.sshd.common.NamedResource; -import org.apache.sshd.common.util.GenericUtils; - -/** - * Holds the result of parsing a list of {@link NamedFactory}ies - * - * @param <T> Result type - * @param <F> Factory type - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public abstract class NamedFactoriesListParseResult<T, F extends NamedFactory<T>> - extends FactoriesListParseResult<T, F> { - - protected NamedFactoriesListParseResult(List<F> parsed, List<String> unsupported) { - super(parsed, unsupported); - } - - @Override - public String toString() { - return "parsed=" + NamedResource.getNames(getParsedFactories()) - + ";unknown=" + GenericUtils.join(getUnsupportedFactories(), ','); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/10de190e/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java b/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.java deleted file mode 100644 index feb45f4..0000000 --- a/sshd-core/src/main/java/org/apache/sshd/common/config/NamedResourceListParseResult.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.List; - -import org.apache.sshd.common.NamedResource; -import org.apache.sshd.common.util.GenericUtils; - -/** - * @param <R> Type of result {@link NamedResource} - * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> - */ -public abstract class NamedResourceListParseResult<R extends NamedResource> extends ListParseResult<R> { - protected NamedResourceListParseResult(List<R> parsed, List<String> unsupported) { - super(parsed, unsupported); - } - - /** - * @return The {@link List} of successfully parsed {@link NamedResource} instances - * in the <U>same order</U> as they were encountered during parsing - */ - public final List<R> getParsedResources() { - return getParsedValues(); - } - - /** - * @return A {@link List} of unknown/unsupported configuration values for - * the resources - */ - public List<String> getUnsupportedResources() { - return getUnsupportedValues(); - } - - @Override - public String toString() { - return "parsed=" + NamedResource.getNames(getParsedResources()) - + ";unknown=" + GenericUtils.join(getUnsupportedResources(), ','); - } -}
