• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

box / box-java-sdk-gen / #330

10 Jul 2025 05:13PM UTC coverage: 35.644%. First build
#330

Pull #359

github

web-flow
Merge e49be1aba into b7374ec91
Pull Request #359: chore: Update .codegen.json with commit hash of codegen and openapi spec

41 of 91 new or added lines in 11 files covered. (45.05%)

16986 of 47655 relevant lines covered (35.64%)

0.36 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

53.13
/src/main/java/com/box/sdkgen/internal/utils/DefaultPrivateKeyDecryptor.java
1
package com.box.sdkgen.internal.utils;
2

3
import com.box.sdkgen.box.errors.BoxSDKError;
4
import java.io.IOException;
5
import java.io.StringReader;
6
import java.security.PrivateKey;
7
import java.security.Security;
8
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
9
import org.bouncycastle.jce.provider.BouncyCastleProvider;
10
import org.bouncycastle.openssl.PEMDecryptorProvider;
11
import org.bouncycastle.openssl.PEMEncryptedKeyPair;
12
import org.bouncycastle.openssl.PEMKeyPair;
13
import org.bouncycastle.openssl.PEMParser;
14
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
15
import org.bouncycastle.openssl.jcajce.JceOpenSSLPKCS8DecryptorProviderBuilder;
16
import org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder;
17
import org.bouncycastle.operator.InputDecryptorProvider;
18
import org.bouncycastle.operator.OperatorCreationException;
19
import org.bouncycastle.pkcs.PKCS8EncryptedPrivateKeyInfo;
20
import org.bouncycastle.pkcs.PKCSException;
21

22
public class DefaultPrivateKeyDecryptor implements PrivateKeyDecryptor {
1✔
23
  public PrivateKey decryptPrivateKey(String encryptedPrivateKey, String passphrase) {
24
    Security.addProvider(new BouncyCastleProvider());
1✔
25
    PrivateKey decryptedPrivateKey;
26
    try {
27
      PEMParser keyReader = new PEMParser(new StringReader(encryptedPrivateKey));
1✔
28
      Object keyPair = keyReader.readObject();
1✔
29
      keyReader.close();
1✔
30

31
      if (keyPair instanceof PrivateKeyInfo) {
1✔
NEW
32
        PrivateKeyInfo keyInfo = (PrivateKeyInfo) keyPair;
×
NEW
33
        decryptedPrivateKey = (new JcaPEMKeyConverter()).getPrivateKey(keyInfo);
×
34
      } else if (keyPair instanceof PEMEncryptedKeyPair) {
1✔
NEW
35
        JcePEMDecryptorProviderBuilder builder = new JcePEMDecryptorProviderBuilder();
×
NEW
36
        PEMDecryptorProvider decryptionProvider = builder.build(passphrase.toCharArray());
×
NEW
37
        keyPair = ((PEMEncryptedKeyPair) keyPair).decryptKeyPair(decryptionProvider);
×
NEW
38
        PrivateKeyInfo keyInfo = ((PEMKeyPair) keyPair).getPrivateKeyInfo();
×
NEW
39
        decryptedPrivateKey = (new JcaPEMKeyConverter()).getPrivateKey(keyInfo);
×
40
      } else if (keyPair instanceof PKCS8EncryptedPrivateKeyInfo) {
1✔
41
        InputDecryptorProvider pkcs8Prov =
1✔
42
            new JceOpenSSLPKCS8DecryptorProviderBuilder()
43
                .setProvider("BC")
1✔
44
                .build(passphrase.toCharArray());
1✔
45
        PrivateKeyInfo keyInfo =
1✔
46
            ((PKCS8EncryptedPrivateKeyInfo) keyPair).decryptPrivateKeyInfo(pkcs8Prov);
1✔
47
        decryptedPrivateKey = (new JcaPEMKeyConverter()).getPrivateKey(keyInfo);
1✔
48
      } else {
1✔
NEW
49
        PrivateKeyInfo keyInfo = ((PEMKeyPair) keyPair).getPrivateKeyInfo();
×
NEW
50
        decryptedPrivateKey = (new JcaPEMKeyConverter()).getPrivateKey(keyInfo);
×
51
      }
NEW
52
    } catch (IOException e) {
×
NEW
53
      throw new BoxSDKError("Error parsing private key for Box Developer Edition.", e);
×
NEW
54
    } catch (OperatorCreationException e) {
×
NEW
55
      throw new BoxSDKError("Error parsing PKCS#8 private key for Box Developer Edition.", e);
×
NEW
56
    } catch (PKCSException e) {
×
NEW
57
      throw new BoxSDKError("Error parsing PKCS private key for Box Developer Edition.", e);
×
58
    }
1✔
59
    return decryptedPrivateKey;
1✔
60
  }
61
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc