Java - RSA Public Key from PEM File - java.lang.NoClassDefFoundError: org/bouncycastle/asn1/x509/SubjectPublicKeyInfo

Viewed 435

I have PEM file which is a RSA PRIVATE KEY and I am reading the Private Key and Public using the code below ::

            StringReader reader = new StringReader(//pem);

            PEMReader pemReader = new PEMReader(reader);
            final KeyPair keyPair = (KeyPair) pemReader.readObject();
            pKey = keyPair.getPublic();
            RSAPublicKey rsaPublicKey = (RSAPublicKey) pKey;
            rsaPublicKey.getEncoded();
            Base64.getEncoder().encodeToString(rsaPublicKey.getEncoded()))
  

This code runs fine when Running as Standalone Java

However when running as Webapplication , I am getting the below Error::

SEVERE: Servlet.service() for servlet MYSERVER threw exception
java.lang.NoClassDefFoundError: org/bouncycastle/asn1/x509/SubjectPublicKeyInfo
        at org.bouncycastle.jce.provider.JCERSAPublicKey.getEncoded(Unknown Source)

Library :: bcprov-jdk16-143

Any clues ??

2 Answers

That error is because you miss some Bouncy Castle jar dependencies in your code.

The problem is that Bouncy Castle needs to be registered as a valid crypto provider in Java. You can do it either in code like this:

Security.addProvider(new BouncyCastleProvider());

or globally in Java like this.

Related