mirror of
https://github.com/hierynomus/sshj.git
synced 2025-12-08 08:10:55 +03:00
Fix warnings
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package net.schmizz.sshj.common;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Encodes and decodes to and from Base64 notation.</p>
|
||||
* <p>Homepage: <a href="http://iharder.net/base64">http://iharder.net/base64</a>.</p>
|
||||
@@ -1359,7 +1360,7 @@ public class Base64
|
||||
@Override
|
||||
public Class<?> resolveClass(java.io.ObjectStreamClass streamClass)
|
||||
throws java.io.IOException, ClassNotFoundException {
|
||||
Class c = Class.forName(streamClass.getName(), false, loader);
|
||||
Class<?> c = Class.forName(streamClass.getName(), false, loader);
|
||||
if( c == null ){
|
||||
return super.resolveClass(streamClass);
|
||||
} else {
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.security.GeneralSecurityException;
|
||||
import java.security.PublicKey;
|
||||
import java.util.Arrays;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class Buffer<T extends Buffer<T>> {
|
||||
|
||||
public static class BufferException
|
||||
@@ -55,7 +56,7 @@ public class Buffer<T extends Buffer<T>> {
|
||||
public static final int DEFAULT_SIZE = 256;
|
||||
|
||||
/** The maximum valid size of buffer (i.e. biggest power of two that can be represented as an int - 2^30) */
|
||||
public static final int MAX_SIZE = (1 << 30);
|
||||
public static final int MAX_SIZE = (1 << 30);
|
||||
|
||||
/** Maximum size of a uint64 */
|
||||
public static final BigInteger MAX_UINT64_VALUE = BigInteger.ONE
|
||||
@@ -66,7 +67,7 @@ public class Buffer<T extends Buffer<T>> {
|
||||
int j = 1;
|
||||
while (j < i) {
|
||||
j <<= 1;
|
||||
if (j <= 0) throw new IllegalArgumentException("Cannot get next power of 2; "+i+" is too large");
|
||||
if (j <= 0) throw new IllegalArgumentException("Cannot get next power of 2; "+i+" is too large");
|
||||
}
|
||||
return j;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import java.io.IOException;
|
||||
* Most exceptions in the {@code net.schmizz.sshj} package are instances of this class. An {@link SSHException} is
|
||||
* itself an {@link IOException} and can be caught like that if this level of granularity is not desired.
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public class SSHException
|
||||
extends IOException {
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package net.schmizz.sshj.common;
|
||||
|
||||
/** Represents unrecoverable exceptions in the {@code net.schmizz.sshj} package. */
|
||||
@SuppressWarnings("serial")
|
||||
public class SSHRuntimeException
|
||||
extends RuntimeException {
|
||||
|
||||
|
||||
@@ -36,6 +36,8 @@ import javax.crypto.NoSuchPaddingException;
|
||||
|
||||
import static java.lang.String.format;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
/**
|
||||
* Static utility method relating to security facilities.
|
||||
*/
|
||||
@@ -53,8 +55,8 @@ public class SecurityUtils {
|
||||
public static final String SPONGY_CASTLE = "SC";
|
||||
|
||||
/*
|
||||
* Security provider identifier. null = default JCE
|
||||
*/
|
||||
* Security provider identifier. null = default JCE
|
||||
*/
|
||||
private static String securityProvider = null;
|
||||
|
||||
// relate to BC registration (or SpongyCastle on Android)
|
||||
@@ -65,13 +67,17 @@ public class SecurityUtils {
|
||||
Provider provider = null;
|
||||
try {
|
||||
Class<?> name = Class.forName(providerClassName);
|
||||
provider = (Provider) name.newInstance();
|
||||
provider = (Provider) name.getDeclaredConstructor().newInstance();
|
||||
} catch (ClassNotFoundException e) {
|
||||
LOG.info("Security Provider class '{}' not found", providerClassName);
|
||||
} catch (InstantiationException e) {
|
||||
LOG.info("Security Provider class '{}' could not be created", providerClassName);
|
||||
} catch (IllegalAccessException e) {
|
||||
LOG.info("Security Provider class '{}' could not be accessed", providerClassName);
|
||||
} catch (InvocationTargetException e) {
|
||||
LOG.info("Security Provider class '{}' could not be created", providerClassName);
|
||||
} catch (NoSuchMethodException e) {
|
||||
LOG.info("Security Provider class '{}' does not have a no-args constructor", providerClassName);
|
||||
}
|
||||
|
||||
if (provider == null) {
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.hierynomus.asn1.types.ASN1Object;
|
||||
import com.hierynomus.asn1.types.constructed.ASN1Sequence;
|
||||
import com.hierynomus.asn1.types.primitive.ASN1Integer;
|
||||
import net.schmizz.sshj.common.Buffer;
|
||||
import net.schmizz.sshj.common.IOUtils;
|
||||
import net.schmizz.sshj.common.KeyType;
|
||||
import net.schmizz.sshj.common.SSHRuntimeException;
|
||||
|
||||
@@ -91,16 +92,18 @@ public class SignatureECDSA extends AbstractSignature {
|
||||
public byte[] encode(byte[] sig) {
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(sig);
|
||||
com.hierynomus.asn1.ASN1InputStream asn1InputStream = new com.hierynomus.asn1.ASN1InputStream(new DERDecoder(), bais);
|
||||
try {
|
||||
ASN1Sequence sequence = asn1InputStream.readObject();
|
||||
ASN1Integer r = (ASN1Integer) sequence.get(0);
|
||||
ASN1Integer s = (ASN1Integer) sequence.get(1);
|
||||
Buffer.PlainBuffer buf = new Buffer.PlainBuffer();
|
||||
buf.putMPInt(r.getValue());
|
||||
buf.putMPInt(s.getValue());
|
||||
|
||||
ASN1Sequence sequence = asn1InputStream.readObject();
|
||||
ASN1Integer r = (ASN1Integer) sequence.get(0);
|
||||
ASN1Integer s = (ASN1Integer) sequence.get(1);
|
||||
|
||||
Buffer.PlainBuffer buf = new Buffer.PlainBuffer();
|
||||
buf.putMPInt(r.getValue());
|
||||
buf.putMPInt(s.getValue());
|
||||
|
||||
return buf.getCompactData();
|
||||
return buf.getCompactData();
|
||||
} finally {
|
||||
IOUtils.closeQuietly(asn1InputStream, bais);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -123,16 +126,19 @@ public class SignatureECDSA extends AbstractSignature {
|
||||
BigInteger r = sigbuf.readMPInt();
|
||||
BigInteger s = sigbuf.readMPInt();
|
||||
|
||||
|
||||
List<ASN1Object> vector = new ArrayList<ASN1Object>();
|
||||
vector.add(new ASN1Integer(r));
|
||||
vector.add(new ASN1Integer(s));
|
||||
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
com.hierynomus.asn1.ASN1OutputStream asn1OutputStream = new com.hierynomus.asn1.ASN1OutputStream(new DEREncoder(), baos);
|
||||
|
||||
asn1OutputStream.writeObject(new ASN1Sequence(vector));
|
||||
asn1OutputStream.flush();
|
||||
|
||||
try {
|
||||
asn1OutputStream.writeObject(new ASN1Sequence(vector));
|
||||
asn1OutputStream.flush();
|
||||
} finally {
|
||||
IOUtils.closeQuietly(asn1OutputStream);
|
||||
}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,8 +29,7 @@ import java.security.GeneralSecurityException;
|
||||
* Base class for DHG key exchange algorithms. Implementations will only have to configure the required data on the
|
||||
* {@link DH} class in the
|
||||
*/
|
||||
public abstract class AbstractDHG extends AbstractDH
|
||||
implements KeyExchange {
|
||||
public abstract class AbstractDHG extends AbstractDH {
|
||||
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
|
||||
@@ -57,11 +57,12 @@ public abstract class AbstractDHGex extends AbstractDH {
|
||||
return parseGexGroup(buffer);
|
||||
case KEX_DH_GEX_REPLY:
|
||||
return parseGexReply(buffer);
|
||||
default:
|
||||
throw new TransportException("Unexpected message " + msg);
|
||||
}
|
||||
} catch (Buffer.BufferException be) {
|
||||
throw new TransportException(be);
|
||||
}
|
||||
throw new TransportException("Unexpected message " + msg);
|
||||
}
|
||||
|
||||
private boolean parseGexReply(SSHPacket buffer) throws Buffer.BufferException, GeneralSecurityException, TransportException {
|
||||
|
||||
Reference in New Issue
Block a user