package com.asolutions.scmsshd; import java.util.Arrays; import org.apache.sshd.SshServer; import org.apache.sshd.common.Cipher; import org.apache.sshd.common.Compression; import org.apache.sshd.common.KeyExchange; import org.apache.sshd.common.Mac; import org.apache.sshd.common.NamedFactory; import org.apache.sshd.common.Signature; import org.apache.sshd.common.cipher.AES128CBC; import org.apache.sshd.common.cipher.AES192CBC; import org.apache.sshd.common.cipher.AES256CBC; import org.apache.sshd.common.cipher.BlowfishCBC; import org.apache.sshd.common.cipher.TripleDESCBC; import org.apache.sshd.common.compression.CompressionNone; import org.apache.sshd.common.mac.HMACMD5; import org.apache.sshd.common.mac.HMACMD596; import org.apache.sshd.common.mac.HMACSHA1; import org.apache.sshd.common.mac.HMACSHA196; import org.apache.sshd.common.random.BouncyCastleRandom; import org.apache.sshd.common.random.JceRandom; import org.apache.sshd.common.random.SingletonRandomFactory; import org.apache.sshd.common.signature.SignatureDSA; import org.apache.sshd.common.signature.SignatureRSA; import org.apache.sshd.common.util.SecurityUtils; import org.apache.sshd.server.ServerChannel; import org.apache.sshd.server.UserAuth; import org.apache.sshd.server.auth.UserAuthPassword; import org.apache.sshd.server.auth.UserAuthPublicKey; import org.apache.sshd.server.channel.ChannelSession; import org.apache.sshd.server.kex.DHG1; import org.apache.sshd.server.kex.DHG14; import org.springframework.context.support.FileSystemXmlApplicationContext; public class SCuMD extends SshServer { /** * @param args */ public static void main(String[] args) { if (args.length != 1) { System.err.println("Usage: SCuMD pathToConfigFile"); return; } new FileSystemXmlApplicationContext(args[0]); } public SCuMD() { if (SecurityUtils.isBouncyCastleRegistered()) { setKeyExchangeFactories(Arrays.<NamedFactory<KeyExchange>> asList(new DHG14.Factory(), new DHG1.Factory())); setRandomFactory(new SingletonRandomFactory(new BouncyCastleRandom.Factory())); } else { setKeyExchangeFactories(Arrays.<NamedFactory<KeyExchange>> asList(new DHG1.Factory())); setRandomFactory(new SingletonRandomFactory(new JceRandom.Factory())); } setUserAuthFactories(Arrays.<NamedFactory<UserAuth>>asList( new UserAuthPassword.Factory(), new UserAuthPublicKey.Factory() )); setCipherFactories(Arrays.<NamedFactory<Cipher>> asList(new AES128CBC.Factory(), new TripleDESCBC.Factory(), new BlowfishCBC.Factory(), new AES192CBC.Factory(), new AES256CBC.Factory())); setCompressionFactories(Arrays.<NamedFactory<Compression>> asList(new CompressionNone.Factory())); setMacFactories(Arrays.<NamedFactory<Mac>> asList(new HMACMD5.Factory(), new HMACSHA1.Factory(), new HMACMD596.Factory(), new HMACSHA196.Factory())); setChannelFactories(Arrays.<NamedFactory<ServerChannel>>asList( new ChannelSession.Factory())); setSignatureFactories(Arrays.<NamedFactory<Signature>> asList(new SignatureDSA.Factory(), new SignatureRSA.Factory())); } }