You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2009/06/08 08:59:04 UTC
svn commit: r782543 - in
/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd: SshClient.java
SshServer.java
Author: gnodet
Date: Mon Jun 8 06:59:04 2009
New Revision: 782543
URL: http://svn.apache.org/viewvc?rev=782543&view=rev
Log:
SSHD-24: AES256 and AES192 requires unlimited cryptography extension
Modified:
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshClient.java
mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java
Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshClient.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshClient.java?rev=782543&r1=782542&r2=782543&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshClient.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshClient.java Mon Jun 8 06:59:04 2009
@@ -25,6 +25,9 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.LinkedList;
+import java.util.Iterator;
+import java.security.InvalidKeyException;
import org.apache.mina.core.future.IoFutureListener;
import org.apache.mina.core.service.IoConnector;
@@ -189,12 +192,7 @@
new DHG1.Factory()));
client.setRandomFactory(new SingletonRandomFactory(new JceRandom.Factory()));
}
- client.setCipherFactories(Arrays.<NamedFactory<Cipher>>asList(
- new AES128CBC.Factory(),
- new TripleDESCBC.Factory(),
- new BlowfishCBC.Factory(),
- new AES192CBC.Factory(),
- new AES256CBC.Factory()));
+ setUpDefaultCiphers(client);
// Compression is not enabled by default
// client.setCompressionFactories(Arrays.<NamedFactory<Compression>>asList(
// new CompressionNone.Factory(),
@@ -213,6 +211,30 @@
return client;
}
+ private static void setUpDefaultCiphers(SshClient client) {
+ List<NamedFactory<Cipher>> avail = new LinkedList<NamedFactory<Cipher>>();
+ avail.add(new AES128CBC.Factory());
+ avail.add(new TripleDESCBC.Factory());
+ avail.add(new BlowfishCBC.Factory());
+ avail.add(new AES192CBC.Factory());
+ avail.add(new AES256CBC.Factory());
+
+ for (Iterator<NamedFactory<Cipher>> i = avail.iterator(); i.hasNext();) {
+ final NamedFactory<Cipher> f = i.next();
+ try {
+ final Cipher c = f.create();
+ final byte[] key = new byte[c.getBlockSize()];
+ final byte[] iv = new byte[c.getIVSize()];
+ c.init(Cipher.Mode.Encrypt, key, iv);
+ } catch (InvalidKeyException e) {
+ i.remove();
+ } catch (Exception e) {
+ i.remove();
+ }
+ }
+ client.setCipherFactories(avail);
+ }
+
/*=================================
Main class implementation
*=================================*/
Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java?rev=782543&r1=782542&r2=782543&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/SshServer.java Mon Jun 8 06:59:04 2009
@@ -20,7 +20,10 @@
import java.io.IOException;
import java.net.InetSocketAddress;
+import java.security.InvalidKeyException;
import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import org.apache.mina.core.service.IoAcceptor;
@@ -244,12 +247,7 @@
sshd.setUserAuthFactories(Arrays.<NamedFactory<UserAuth>>asList(
new UserAuthPassword.Factory(),
new UserAuthPublicKey.Factory()));
- sshd.setCipherFactories(Arrays.<NamedFactory<Cipher>>asList(
- new AES128CBC.Factory(),
- new TripleDESCBC.Factory(),
- new BlowfishCBC.Factory(),
- new AES192CBC.Factory(),
- new AES256CBC.Factory()));
+ setUpDefaultCiphers(sshd);
// Compression is not enabled by default
// sshd.setCompressionFactories(Arrays.<NamedFactory<Compression>>asList(
// new CompressionNone.Factory(),
@@ -270,6 +268,30 @@
return sshd;
}
+ private static void setUpDefaultCiphers(SshServer sshd) {
+ List<NamedFactory<Cipher>> avail = new LinkedList<NamedFactory<Cipher>>();
+ avail.add(new AES128CBC.Factory());
+ avail.add(new TripleDESCBC.Factory());
+ avail.add(new BlowfishCBC.Factory());
+ avail.add(new AES192CBC.Factory());
+ avail.add(new AES256CBC.Factory());
+
+ for (Iterator<NamedFactory<Cipher>> i = avail.iterator(); i.hasNext();) {
+ final NamedFactory<Cipher> f = i.next();
+ try {
+ final Cipher c = f.create();
+ final byte[] key = new byte[c.getBlockSize()];
+ final byte[] iv = new byte[c.getIVSize()];
+ c.init(Cipher.Mode.Encrypt, key, iv);
+ } catch (InvalidKeyException e) {
+ i.remove();
+ } catch (Exception e) {
+ i.remove();
+ }
+ }
+ sshd.setCipherFactories(avail);
+ }
+
/*=================================
Main class implementation
*=================================*/