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:34 UTC
[24/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/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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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 = "zlib@openssh.com";
-
- 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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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:dev@mina.apache.org">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(), ',');
- }
-}