Apache SSHD: Where do I find the org/bouncycastle/crypto/prng/VMPCRandomGenerator class?

2k views Asked by At

I’m trying to setup a mock SFTP server using Apache Mina. I have downloaded this Maven dependency …

    <dependency>
        <groupId>org.apache.sshd</groupId>
        <artifactId>sshd-sftp</artifactId>
        <version>0.11.0</version>
        <scope>test</scope>
    </dependency>

Then I have this method for setting up the SFTP server …

private void setupSftpServer(final Integer sftpPort) throws IOException
{
    final SshServer sshd = SshServer.setUpDefaultServer();
    sshd.setPort(sftpPort);
    sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider("hostkey.ser"));

    final List<NamedFactory<UserAuth>> userAuthFactories = new ArrayList<NamedFactory<UserAuth>>();
    userAuthFactories.add(new UserAuthNone.Factory());
    sshd.setUserAuthFactories(userAuthFactories);
    sshd.setPublickeyAuthenticator(new PublickeyAuthenticator(){
        @Override
        public boolean authenticate(String arg0,
                                    PublicKey arg1,
                                    ServerSession arg2)
        {
            return true;
        }
      }
    );

    sshd.setCommandFactory(new ScpCommandFactory());

    final List<NamedFactory<Command>> namedFactoryList = new ArrayList<NamedFactory<Command>>();
    namedFactoryList.add(new SftpSubsystem.Factory());
    sshd.setSubsystemFactories(namedFactoryList);

    sshd.start();
}   // 

However, upon running this, I get the NoClassDefFoundError …

java.lang.NoClassDefFoundError: org/bouncycastle/crypto/prng/VMPCRandomGenerator
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.apache.sshd.common.random.BouncyCastleRandom.<init>(BouncyCastleRandom.java:56)
    at org.apache.sshd.common.random.BouncyCastleRandom$Factory.create(BouncyCastleRandom.java:48)
    at org.apache.sshd.common.random.BouncyCastleRandom$Factory.create(BouncyCastleRandom.java:41)
    at org.apache.sshd.common.random.SingletonRandomFactory.<init>(SingletonRandomFactory.java:37)
    at org.apache.sshd.SshBuilder$BaseBuilder.fillWithDefaultValues(SshBuilder.java:117)
    at org.apache.sshd.SshBuilder$ServerBuilder.fillWithDefaultValues(SshBuilder.java:365)
    at org.apache.sshd.SshBuilder$ServerBuilder.fillWithDefaultValues(SshBuilder.java:361)
    at org.apache.sshd.SshBuilder$BaseBuilder.build(SshBuilder.java:234)
    at org.apache.sshd.SshBuilder$BaseBuilder.build(SshBuilder.java:254)
    at org.apache.sshd.SshServer.setUpDefaultServer(SshServer.java:366)
    at org.mainco.subco.myproject.service.myprojectStudentServiceTest.setupmyprojectSftpServer(myprojectStudentServiceTest.java:1221)
    at org.mainco.subco.myproject.service.myprojectStudentServiceTest.testSftpStudentFile(myprojectStudentServiceTest.java:1201)

What dependency do I need to include to get this class?

1

There are 1 answers

0
Jesper Hedlund On

download from here www.bouncycastle.org/latest_releases.html

eg. bcprov-jdk15on-154.jar

then add this code

Security.addProvider(new BouncyCastleProvider());