Java - Error parsing PKCS private key for Box Developer Edition.

Hi !
I’m using java1.8 version and trying to get the Token using Java SDK , but we got the below exception.

Exception in thread “main” com.box.sdk.BoxAPIException: Error parsing PKCS private key for Box Developer Edition.

  • at com.box.sdk.BoxDeveloperEditionAPIConnection.decryptPrivateKey(BoxDeveloperEditionAPIConnection.java:568)*
  • at com.box.sdk.BoxDeveloperEditionAPIConnection.constructJWTAssertion(BoxDeveloperEditionAPIConnection.java:503)*
  • at com.box.sdk.BoxDeveloperEditionAPIConnection.authenticate(BoxDeveloperEditionAPIConnection.java:327)*
  • at com.box.sdk.BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(BoxDeveloperEditionAPIConnection.java:182)*
  • at com.box.sdk.BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(BoxDeveloperEditionAPIConnection.java:216)*
  • at com.arondor.flower.tools.box.util.BoxAPI.setAPI(BoxAPI.java:54)*
  • at com.arondor.flower.tools.box.util.BoxAPI.getAPI(BoxAPI.java:33)*
  • at com.arondor.flower.tools.box.service.ServiceFolder.createBaseFolder(ServiceFolder.java:25)*
  • at com.arondor.flower.tools.box.Launcher.main(Launcher.java:18)*
    Caused by: org.bouncycastle.pkcs.PKCSException: unable to read encrypted data: javax.crypto.BadPaddingException: pad block corrupted
  • at org.bouncycastle.pkcs.PKCS8EncryptedPrivateKeyInfo.decryptPrivateKeyInfo(Unknown Source)*
  • at com.box.sdk.BoxDeveloperEditionAPIConnection.decryptPrivateKey(BoxDeveloperEditionAPIConnection.java:557)*
  • … 8 more*
    Caused by: java.io.IOException: javax.crypto.BadPaddingException: pad block corrupted
  • at javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:128)*
  • at javax.crypto.CipherInputStream.read(CipherInputStream.java:246)*
  • at org.bouncycastle.util.io.Streams.pipeAll(Unknown Source)*
  • at org.bouncycastle.util.io.Streams.readAll(Unknown Source)*
  • … 10 more*
    Caused by: javax.crypto.BadPaddingException: pad block corrupted
  • at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher$BufferedGenericBlockCipher.doFinal(Unknown Source)*
  • at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown Source)*
  • at javax.crypto.Cipher.doFinal(Cipher.java:2047)*
  • at javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:125)*
  • … 13 more*

Here is the code used to manage the connection

public class BoxAPI
{

  • private static final Logger LOGGER = Logger.getLogger(BoxAPI.class);*

  • private BatchConfiguration batchConfiguration = new BatchConfiguration();*

  • private String scope = null;*

  • private BoxDeveloperEditionAPIConnection api = null;*

  • private long counter;*

  • public BoxDeveloperEditionAPIConnection getAPI()*

  • {*

  •    if (api == null)*
    
  •        setAPI();*
    
  •    return api;*
    
  • }*

  • @PostConstruct*

  • private void setAPI()*

  • {*

  •    BoxConfig config = null;*
    
  •    try*
    
  •    {*
    
  •        Reader reader = new FileReader(batchConfiguration.getJsonPath());*
    
  •        config = BoxConfig.readFrom(reader);*
    
  •    }*
    
  •    catch (IOException e)*
    
  •    {*
    
  •        e.printStackTrace();*
    
  •    }*
    
  •    *
    
  •    if (config == null)*
    
  •        throw new NullPointerException("Config file error/n" + "filePath : " + batchConfiguration.getJsonPath());*
    
  •    api = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(config);   *
    
  •    scope = "enterprise_" + config.getEnterpriseId();*
    
  •    if (api == null || config.getEnterpriseId() == null)*
    
  •        throw new NullPointerException("API OR SCOPE DATA NOT FOUND");*
    
  •    api.setRequestInterceptor(request -> {*
    
  •        // Do whatever counting or logging you want with the request*
    
  •        if (Long.MAX_VALUE == counter)*
    
  •            counter = 0L;*
    
  •        //LOGGER.info("BOX API COUNT (AFTER SERVICE STARTUP) : " + ++counter);*
    
  •        return null;*
    
  •    });*
    
  • }*

  • public String getScope()*

  • {*

  •    return scope;*
    
  • }*
    }

For information, I created a first application from the box developer interface, I have this problem even though I used key generation.
Additionally, one of my colleagues had created another application and using his json file for connection it works very well.
However, when I generate a new key for its alros application I again have the same problem as before

Please, help me

Hi,
the steps to handle the issue are described in README.md file.

Best,
Lukasz